Trailing stop progressivo
Forums › ProRealTime forum Italiano › Supporto ProOrder › Trailing stop progressivo
- This topic has 5 replies, 2 voices, and was last updated 2 years ago by Peppe71.
-
-
03/08/2022 at 4:12 PM #18962003/08/2022 at 4:31 PM #189622
Puoi scrivere un esempio, per capire cosa intendi per partire da 18 ed arrivare a 29?
03/08/2022 at 5:32 PM #189634Innanzitutto 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.503/11/2022 at 6:35 PM #189815Aggiornamento, 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
//***************************************************************03/12/2022 at 10:54 AM #189853Quel 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):
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960//*********************************************************************************// https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/// (righe 17- 56)////trailing stop functionIF NOT ONMARKET THENTrailingStart = 20 //20 trailing will start @trailinstart points profitTrailingStep = 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 valuenewSL=0ENDIFIF (BarIndex - TradeIndex) >= 0 THEN //0//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-TradePrice(1)>=(TrailingStart*PipSize+PointsToKeep*PipSize) THENnewSL = TradePrice(1)+TrailingStep*PipSize+PointsToKeep*PipSizeENDIF//next movesIF newSL>0 AND close-newSL>=TrailingStep*PipSize THENnewSL = newSL+TrailingStep*PipSizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND TradePrice(1)-close>=(TrailingStart*PipSize+PointsToKeep*PipSize) THENnewSL = TradePrice(1)-TrailingStep*PipSize+PointsToKeep*PipSizeENDIF//next movesIF newSL>0 AND newSL-close>=TrailingStep*PipSize THENnewSL = newSL-TrailingStep*PipSizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENIF LongOnMarket THENIF (close + Distance) > newSL THENSELL AT newSL STOPELSIF (close - Distance) < newSL THENSELL AT newSL LIMITELSESELL AT MarketENDIFELSIF ShortOnmarket THENIF (close + Distance) < newSL THENEXITSHORT AT newSL STOPELSIF (close - Distance) > newSL THENEXITSHORT AT newSL LIMITELSEEXITSHORT AT MarketENDIFENDIFENDIFENDIF//*********************************************************************************03/13/2022 at 1:21 AM #189900Attendere 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
-
AuthorPosts
Find exclusive trading pro-tools on