Trailing stop progressivo

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #189620 quote
    xPepx71@
    Participant
    New

    Salve. Mi piacerebbe aggiungere al mio sistemino un trailing stop in progressione. Ovvero che parte da un valore 18 e man mano che va in positivo si sposti  fino a 29. Fattibile ?

    #189622 quote
    robertogozzi
    Moderator
    Master

    Puoi scrivere un esempio, per capire cosa intendi per partire da 18 ed arrivare a 29?

    #189634 quote
    xPepx71@
    Participant
    New

    Innanzitutto grazie per la rapidità. Troppo onore.  Posto sotto il mio sistema che di base ha un trailing di 28.5 . Mi piacerebbe invece che quando parte il trailing sia di 18 . Il trade si muove in positivo fino al pareggio: nel momento che sto guadagnando 1 pip lo stop  resta dov’è (come se il trailing fosse 19) . Così via fino a 29 , (cioè lo stop iniziale di 18 più il positivo di 11) e da quel momento in poi lo stop inizia a muoversi per guadagnare.  La mia idea è di limitare a 18 la perdita (soprattutto se va subito contro) , ma se si muove in positivo di allargare la forbice in modo da  tollerare dei rintracciamenti non troppo grandi. Spero si capisca . E grazie ancora

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate

    // Condizioni per entrare su posizioni long
    indicator1 = RSI[4](close)
    c1 = (indicator1 > 60)
    indicator2 = ExponentialAverage[2](close)
    indicator3 = SuperTrend[3.1,10]
    c2 = (indicator2 > indicator3)
    indicator4 = CALL “Il Mio Indicatore(14)”
    c3 = (indicator4 = 1)
    indicator5 = Volume
    c4 = (indicator5 >= 260)

    IF c1 AND c2 AND c3 AND c4 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF

    // Condizioni per uscire da posizioni long
    indicator6 = ExponentialAverage[2](close)
    indicator7 = TEMA[62](close)
    c5 = (indicator6 < indicator7)

    IF c5 THEN
    SELL AT MARKET
    ENDIF

    // Condizioni per entrare su posizioni short
    indicator8 = RSI[4](close)
    c6 = (indicator8 < 40)
    indicator9 = ExponentialAverage[2](close)
    indicator10 = SuperTrend[3.1,10]
    c7 = (indicator9 < indicator10)
    indicator11 = CALL “Il Mio Indicatore(14)”
    c8 = (indicator11 = -1)
    indicator12 = Volume
    c9 = (indicator12 > 260)

    IF c6 AND c7 AND c8 AND c9 THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF

    // Condizioni per uscire da posizioni short
    indicator13 = ExponentialAverage[2](close)
    indicator14 = TEMA[62](close)
    c10 = (indicator13 > indicator14)

    IF c10 THEN
    EXITSHORT AT MARKET
    ENDIF

    // Stop e target
    SET STOP pTRAILING 28.5

    #189815 quote
    xPepx71@
    Participant
    New

    Aggiornamento, mi sono reso conto che quello di cui parlavo era semplicemente uno stop-loss +  trailing . Il fatto è che non ho mai programmato prima… Ora ho sostituito la riga automatica del trailing con quello scritto da Nicolas, valore 15 e step 1 , e già così il back è performante. Il mio problema è che live non va…un paio di volte lo stop non è proprio scattato, un’altra è partito ma non saliva col trailing . Qualcuno ha voglia di darci un occhiata ?       Ripeto per me è un campo abbastanza oscuro…

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate

    // Condizioni per entrare su posizioni long
    indicator1 = RSI[4](close)
    c1 = (indicator1 > 55)
    indicator2, ignored = CALL “Il Mio Indicatore(23)”
    c2 = (indicator2 = 0)
    ignored, indicator3 = CALL “Il Mio Indicatore(23)”
    c3 = (indicator3 = 0)
    indicator4 = CALL “Il Mio Indicatore(14)”
    c4 = (indicator4 = 1)
    indicator5 = ExponentialAverage[2](close)
    indicator6 = SuperTrend[3.1,10]
    c5 = (indicator5 >= indicator6)

    IF c1 AND c2 AND c3 AND c4 AND c5 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF

    // Condizioni per entrare su posizioni short
    indicator7 = RSI[4](close)
    c6 = (indicator7 < 45)
    indicator8, ignored = CALL “Il Mio Indicatore(23)”
    c7 = (indicator8 = 0)
    ignored, indicator9 = CALL “Il Mio Indicatore(23)”
    c8 = (indicator9 = 0)
    indicator10 = CALL “Il Mio Indicatore(14)”
    c9 = (indicator10 = -1)
    indicator11 = ExponentialAverage[2](close)
    indicator12 = SuperTrend[3.1,10]
    c10 = (indicator11 <= indicator12)

    IF c6 AND c7 AND c8 AND c9 AND c10 THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF

    //************************************************************************
    //trailing stop function
    trailingstart = 15 //trailing will start @trailinstart points profit
    trailingstep = 1 //trailing step to move the “stoploss”

    //reset the stoploss value
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF

    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
    newSL = tradeprice(1)+trailingstep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
    newSL = newSL+trailingstep*pipsize
    ENDIF
    ENDIF

    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
    newSL = tradeprice(1)-trailingstep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF

    //stop order to exit the positions
    IF newSL>0 THEN
    SELL AT newSL STOP
    EXITSHORT AT newSL STOP
    ENDIF
    //***************************************************************

    #189853 quote
    robertogozzi
    Moderator
    Master

    Quel trailing stop funziona, solo che si attiva, come ogni strategia, alla chiusura della candela, per cui se usi un TF un pò alto, tipo 1 ora, può darsi che il prezzo raggiunga il limite per attivare il trailing, ma può darsi che alla chiusura sia tornato indietro, quindi non si attiva. Se vuoi puoi sostituire CLOSE con HIGH/LOW, così non verifichi il prezzo di chiusura, bensì il minimo/massimo (però sempre alla chiusura di ogni candela).

    Un altro problema potrebbe essere la distanza minima tra il prezzo dell’ordine pendente di uscita ed il prezzo corrente. Una distanza richiesrta dal broker, IG per il Dax richiede almeno 6 punti ma puyò variare durante i periodi di alta volatilità.

    Questa è la versione del trailing stop di Nicolas, aggiornata per tenere conto di:

    • distanza minima richiesta dal broker
    • punti di profitto da assicurare quando mette in pareggio (breakeven):
    //*********************************************************************************
    // https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
    // (righe 17- 56)
    //
    //trailing stop function
    IF NOT ONMARKET THEN
       TrailingStart = 20  //20 trailing will start @trailinstart points profit
       TrailingStep  = 5   //5  trailing step to move the "stoploss"
       Distance      = 7   //7  pips Distance from caurrent price (if required by the broker)
       PointsToKeep  = 1   //1  pips to be gained when breakeven is set
       //reset the stoploss value
        newSL=0
    ENDIF
    IF (BarIndex - TradeIndex) >= 0 THEN                                 //0
       //manage long positions
       IF LONGONMARKET THEN
          //first move (breakeven)
          IF newSL=0 AND close-TradePrice(1)>=(TrailingStart*PipSize+PointsToKeep*PipSize) THEN
             newSL = TradePrice(1)+TrailingStep*PipSize+PointsToKeep*PipSize
          ENDIF
          //next moves
          IF newSL>0 AND close-newSL>=TrailingStep*PipSize THEN
             newSL = newSL+TrailingStep*PipSize
          ENDIF
       ENDIF
    
       //manage short positions
       IF SHORTONMARKET THEN
          //first move (breakeven)
          IF newSL=0 AND TradePrice(1)-close>=(TrailingStart*PipSize+PointsToKeep*PipSize) THEN
             newSL = TradePrice(1)-TrailingStep*PipSize+PointsToKeep*PipSize
          ENDIF
          //next moves
          IF newSL>0 AND newSL-close>=TrailingStep*PipSize THEN
             newSL = newSL-TrailingStep*PipSize
          ENDIF
       ENDIF
    
       //stop order to exit the positions
       IF newSL>0 THEN
          IF LongOnMarket THEN
             IF (close + Distance) > newSL THEN
                SELL AT newSL STOP
             ELSIF (close - Distance) < newSL THEN
                SELL AT newSL LIMIT
             ELSE
                SELL AT Market
             ENDIF
          ELSIF ShortOnmarket THEN
             IF (close + Distance) < newSL THEN
                EXITSHORT AT newSL STOP
             ELSIF (close - Distance) > newSL THEN
                EXITSHORT AT newSL LIMIT
             ELSE
                EXITSHORT AT Market
             ENDIF
          ENDIF
       ENDIF
    ENDIF
    //*********************************************************************************
    #189900 quote
    xPepx71@
    Participant
    New

    Attendere la chiusura … ora capisco . Volevo ringraziarti per la disponibilità anche perchè in pochi giorni di forum mi sono reso conto che rispondi a tutti ed in tutte le lingue. Pian piano proverò a tirar fuori qualcosa, anche perchè mi sembra un mondo dalle potenzialità importanti. Grazie ancora

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

Trailing stop progressivo


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
xPepx71@ @peppe71 Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by xPepx71@
3 years, 11 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 03/08/2022
Status: Active
Attachments: No files
Logo Logo
Loading...