un solo Stop and reverse

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #233251 quote
    Gabriele Battista
    Participant
    Senior

    Ho utilizzato (male) un codice che Roberto Gozzi mi aveva fornito in risposta ad una domanda di un qualche topic in precedenza. Il risultato non è quello voluto: il sistema mi fa, durante la giornata, non solo uno Stop and Reverse ma più. E’ possibile modificare il codice in modo che ne faccia uno solo? grazie. Allego il codice del BT

    // Chiusura temporale alla chiusura cash
    // ATTENZIONE!!!
    // se si usa un grafico con chiusura oraria
    // diversa occorre modificare il codice ******
    //
    
    DEFPARAM FlatAfter = 214500 //*******
    DEFPARAM FlatBefore = 074500
    // Solo un ordine a mercato
    DEFPARAM CumulateOrders = False
    
    
    // Definizione dello SL e TP
    TIMEFRAME(DAILY)
    SL=AverageTrueRange[5](close)/3
    //TP=AverageTrueRange[5](close)/1.5
    TIMEFRAME(DEFAULT)
    
    
    // Orario Chiusura trade
    ONCE CloseTime= 214500 //dax 8:00-22:00 TF m15 *****
     
    OTD = (Barindex - TradeIndex(1)) > IntradayBarIndex
     
    // Orari limite per trade
    FIRSTIN=080000 //
    LASTIN=173000 //
    
    // Inserimento di un offset per ridurre falsi segnali
    ONCE OFFSET=4 //OTTIMIZZATO 0-15 SU DAX FULL m15
    
    LONGCOND=close>(Dhigh(1)+OFFSET) // AND Close>(Dhigh(2)+OFFSET)AND Close>(Dhigh(3)+OFFSET)//CONDIZIONE SPECIFICA DI MASSIMO DI X GG
    
    
    // Condizioni per entrare su posizioni long
    IF NOT LongOnMarket AND LONGCOND AND Time<LASTIN AND Time >FIRSTIN AND OTD THEN //con filtri orario di trading
    //IF NOT LongOnMarket AND LONGCOND AND OTD THEN //senza filtri orari di trading
    //entro LONG al break del massimo del giorno precedente
    buy 1 CONTRACTS AT MARKET
    ENDIF
     
    
    SHORTCOND=close<(Dlow(1)-OFFSET)// AND Close<(Dlow(2)-OFFSET)AND Close<(Dlow(3)-OFFSET)//CONDIZIONE SPECIFICA DI MINIMO DI X GG
    
    // Condizioni per entrare su posizioni short
    IF NOT ShortOnMarket AND SHORTCOND AND Time<LASTIN AND Time >FIRSTIN AND OTD THEN //con filtri orario di trading
    //IF NOT ShortOnMarket AND SHORTCOND AND OTD THEN //senza filtri orari di trading
    //entro SHORT al break del minimo del giorno precedente
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF
    
    //STOP AND REVERSE
    Reversed=0
    IF (StrategyProfit<StrategyProfit[1])AND(Reversed=0) THEN
    Reversed=1
    If LongOnMarket[1] AND Time<LASTIN THEN
    SELLSHORT 1 Contract at Market
    ELSIF ShortOnMarket[1] AND Time<LASTIN THEN
    BUY 1 Contract at Market
    ENDIF
    SET STOP pLOSS SL
    SET TARGET pPROFIT SL
    ENDIF
    
    // Condizioni per uscire da posizioni long
    If LongOnMarket AND Time = CloseTime THEN
    //chiudo il LONG a fine orario cash
    SELL AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni short
    IF ShortOnMarket AND Time = CloseTime THEN
    //chiudo lo SHORT a fine orario cash
    EXITSHORT AT MARKET
    ENDIF
     
    // Stop e target: Inserisci qui i tuoi stop di protezione e profit target
    SET STOP pLOSS SL
    //SET TARGET pPROFIT TP
    #233281 quote
    robertogozzi
    Moderator
    Master

    Quindi il sistema deve poter fare anche più operazioni, ma nel caso debbano esserci più Stop & Reverse ne deve fare solo uno?

    Il giorno successivo può farne di nuovo?

    #233290 quote
    Gabriele Battista
    Participant
    Senior

    Ogni giorno una operazione in una direzione con relativo SAR. Grazie

    #233299 quote
    robertogozzi
    Moderator
    Master

    Ecco:

    // Chiusura temporale alla chiusura cash
    // ATTENZIONE!!!
    // se si usa un grafico con chiusura oraria
    // diversa occorre modificare il codice ******
    //
    
    DEFPARAM FlatAfter = 214500 //*******
    DEFPARAM FlatBefore = 074500
    // Solo un ordine a mercato
    DEFPARAM CumulateOrders = False
    
    
    
    // Definizione dello SL e TP
    TIMEFRAME(DAILY)
    SL=AverageTrueRange[5](close)/3
    //TP=AverageTrueRange[5](close)/1.5
    TIMEFRAME(DEFAULT)
    ONCE Tradare  = 1
    ONCE Reversed = 0
    IF IntraDayBarIndex = 0 THEN
    Tradare  = 1
    Reversed = 0
    ENDIF
    // Orario Chiusura trade
    ONCE CloseTime= 214500 //dax 8:00-22:00 TF m15 *****
     
     
    // Orari limite per trade
    FIRSTIN=080000 //
    LASTIN=173000 //
    
    // Inserimento di un offset per ridurre falsi segnali
    ONCE OFFSET=4 //OTTIMIZZATO 0-15 SU DAX FULL m15
    
    LONGCOND=close>(Dhigh(1)+OFFSET) // AND Close>(Dhigh(2)+OFFSET)AND Close>(Dhigh(3)+OFFSET)//CONDIZIONE SPECIFICA DI MASSIMO DI X GG
    
    
    // Condizioni per entrare su posizioni long
    IF NOT LongOnMarket AND LONGCOND AND Time<LASTIN AND Time >FIRSTIN AND Tradare THEN //con filtri orario di trading
    //IF NOT LongOnMarket AND LONGCOND AND OTD THEN //senza filtri orari di trading
    //entro LONG al break del massimo del giorno precedente
    buy 1 CONTRACTS AT MARKET
    Tradare = 0
    ENDIF
     
    
    SHORTCOND=close<(Dlow(1)-OFFSET)// AND Close<(Dlow(2)-OFFSET)AND Close<(Dlow(3)-OFFSET)//CONDIZIONE SPECIFICA DI MINIMO DI X GG
    
    // Condizioni per entrare su posizioni short
    IF NOT ShortOnMarket AND SHORTCOND AND Time<LASTIN AND Time >FIRSTIN AND Tradare THEN //con filtri orario di trading
    //IF NOT ShortOnMarket AND SHORTCOND AND OTD THEN //senza filtri orari di trading
    //entro SHORT al break del minimo del giorno precedente
    SELLSHORT 1 CONTRACTS AT MARKET
    Tradare = 0
    ENDIF
    
    //STOP AND REVERSE
    IF (StrategyProfit<StrategyProfit[1])AND(Reversed=0) THEN
    Reversed=1
    If LongOnMarket[1] AND Time<LASTIN THEN
    SELLSHORT 1 Contract at Market
    Reversed = 1
    ELSIF ShortOnMarket[1] AND Time<LASTIN THEN
    BUY 1 Contract at Market
    Reversed = 1
    ENDIF
    SET STOP pLOSS SL
    SET TARGET pPROFIT SL
    ENDIF
    
    // Condizioni per uscire da posizioni long
    If LongOnMarket AND Time = CloseTime THEN
    //chiudo il LONG a fine orario cash
    SELL AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni short
    IF ShortOnMarket AND Time = CloseTime THEN
    //chiudo lo SHORT a fine orario cash
    EXITSHORT AT MARKET
    ENDIF
     
    // Stop e target: Inserisci qui i tuoi stop di protezione e profit target
    SET STOP pLOSS SL
    //SET TARGET pPROFIT TP
    Iván González and Gabriele Battista thanked this post
    #233322 quote
    Gabriele Battista
    Participant
    Senior

    Grazie perfetto

    #233421 quote
    Gabriele Battista
    Participant
    Senior

    Scusa Roberto, ho notato che il reverse non viene chiuso in giornata ma, in alcuni casi all’open del giorno successivo, come devo modificare il codice? grazie

    #233452 quote
    robertogozzi
    Moderator
    Master

    Su quale strumento e timeframe l’hai provato?

    #233660 quote
    Gabriele Battista
    Participant
    Senior

    Dax full m30 (esempio allegato)

    #233764 quote
    robertogozzi
    Moderator
    Master

    Non esce perché hai indicato un orario in cui la candela non chiude/apre alla mezz’ora.

    Se il codice lo provi su 1 minuto, oppure sul 5 o 15 minuti funzionerà (non funzionerà sul 10 minuti perché l’orario termina con 5).

Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.

un solo Stop and reverse


ProOrder: Trading Automatico & Backtesting

New Reply
Summary

This topic contains 8 replies,
has 2 voices, and was last updated by robertogozzi
1 year, 8 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 05/29/2024
Status: Active
Attachments: 1 files
Logo Logo
Loading...