Trailing stop su ts
Forums › ProRealTime forum Italiano › Supporto ProOrder › Trailing stop su ts
- This topic has 10 replies, 2 voices, and was last updated 7 years ago by Foffo84.
-
-
11/10/2017 at 1:13 PM #522381234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Condizioni per entrare su posizioni longindicator1 = ExponentialAverage[200](low)c1 = (close[1] CROSSES OVER indicator1)IF c1 THENBUY 1 CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator2 = ExponentialAverage[200](low)c2 = (close[1] CROSSES UNDER indicator2)IF c2 THENSELL AT MARKETENDIF// trailing stop functiontrailingstart = 20 //5 trailing will start @trailinstart points profittrailingstep = 5 //5 trailing step to move the "stoploss//reset the stoploss valueIF NOT ONMARKET THENnewSL = 0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL = 0 AND CLOSE - TRADEPRICE(1) >= TrailingStart*PipSize THENnewSL = TRADEPRICE(1) + TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] > HIGHEST[CAND](CLOSE) THENnewSL = CLOSE[1] - TrailingStart*PipSizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL = 0 AND TRADEPRICE(1) - CLOSE[1] >= TrailingStart*PipSize THENnewSL = TRADEPRICE(1) - TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] < LOWEST[CAND](CLOSE) THENnewSL = CLOSE[1] + TrailingStart*PipSizeENDIFENDIF//stop order to exit the positionsIF newSL > 0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF
In questo Ts su dax in m30, io inserisco il codice trailing stop con trailing start di 20 pip e step di 5 pip.
Cio vuol dire che se il ts apre una posizione a 13.000 lo stop è impostato a 12.980 iniziale e che se il prezzo fa 13.206 e cioè supera lo step di 5 pip, il trailing stop mi dovrebbe essere salito.
Perche’ se io imposto un trailing stop iniziale di 20 pip, ci sono operazioni long che si chiudono con perdite anche di 40/50 pip?
Ho sbagliato qualcosa nel codice?
11/10/2017 at 3:24 PM #52264Questo codice scritto da Nicolas è un sostituto del trailing stop nativo (che non funziona come dovrebbe). Ha lo svantaggio, essendo parte di una strategia, di essere eseguito SOLO alla chiusura della candela, per cui su timeframe alti, come il 30 minuti (su timeframe di 4 ore o maggiori è, secondo me, inutile purtroppo) può capitare che in tanti minuti il prezzo abbia superato quel limite (ed il DAX in 30 minuti può farne di strada!) ed avrebbe dovuto attivare il trailing, ma alla chiusura il prezzo ha ritracciato ed è tornato entro il limite, per cui a quel punto è come se quel limite non fosse stato mai superato. Se a quel punto il prezzo va ancora indietro ti colpisce lo stop loss.
E’ un codice molto utile, specialmente sui TF bassi, ma è un “escamotage” che non da garanzie di successo.
Roberto
11/10/2017 at 5:01 PM #52277ciao Roberto capito perfettamente, ma testato su time frame m5 su dax cmq mi stoppa oppure su time frame m3 cmq mi da lo stesso porblema e cioe’ settando il traling stop start di 20 pip ci sono operazioni che mi arrivano a lossare anche di 80/90 pip
11/10/2017 at 6:37 PM #52313Secondo me funziona alla grande, prova ad aggiungere queste righe a fine codice per il debugging (vanno tolte o commentate quando lanci la strategia):
12345GRAPH TradePrice(1)GRAPH newSLGRAPH CANDGRAPH close[1]GRAPH TrailingStart * pipsizeIl Problema principale è che quasi sempre c’è subito un riattraversamento contrario della media che fa terminare il trade.
Fai un ulteriore tentativo con questa versione, dove ho aggiunto le righe di cui sopra, ho commentato la riga del SELL ed ho aggiunto all’inizio lo Stop Loss ed il Target Profit, penso andrà meglio e noterai che il trailing stop funziona:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateSET TARGET PPROFIT 20SET STOP PLOSS 10// Condizioni per entrare su posizioni longindicator1 = ExponentialAverage[200](low)c1 = (close[1] CROSSES OVER indicator1)IF c1 THENBUY 1 CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator2 = ExponentialAverage[200](low)c2 = (close[1] CROSSES UNDER indicator2)IF c2 THEN//SELL AT MARKETENDIF// trailing stop functiontrailingstart = 20 //5 trailing will start @trailinstart points profittrailingstep = 5 //5 trailing step to move the "stoploss//reset the stoploss valueIF NOT ONMARKET THENnewSL = 0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL = 0 AND CLOSE - TRADEPRICE(1) >= TrailingStart*PipSize THENnewSL = TRADEPRICE(1) + TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] > HIGHEST[CAND](CLOSE) THENnewSL = CLOSE[1] - TrailingStart*PipSizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL = 0 AND TRADEPRICE(1) - CLOSE[1] >= TrailingStart*PipSize THENnewSL = TRADEPRICE(1) - TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] < LOWEST[CAND](CLOSE) THENnewSL = CLOSE[1] + TrailingStart*PipSizeENDIFENDIF//stop order to exit the positionsIF newSL > 0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIFGRAPH TradePrice(1)GRAPH newSLGRAPH CANDGRAPH close[1]GRAPH TrailingStart * pipsize1 user thanked author for this post.
11/13/2017 at 11:36 AM #52531Ciao Roberto, ho provato il codice, ma purtoppo mi da sempre il solito probelam e cioè se io imposto un trailing iniziale di 20pt, ci sono operazioni in cui il ts mi chiude con perdite anche di 90/100 pt.
io l?ho testato su time frame 5,10 e 15 minuti. Non so cosa non sta funzionando nel codice.
Te lo hai testato personalmente?
11/13/2017 at 4:13 PM #52565Su quale strumento (e per quali periodi) lo hai provato?
11/13/2017 at 4:51 PM #5257011/13/2017 at 7:26 PM #52590L’ho provato anch’io sul DAX a 5 e 15 minuti e mi sembra funzioni correttamente. Non so che dirti.
Indicami un TF preciso ed il periodo preciso del TEST (da… a….) ed allega uno screenshot del grafico.
11/14/2017 at 12:07 PM #52696123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateSET TARGET PPROFIT 100SET STOP PLOSS 500// Condizioni per entrare su posizioni longindicator1 = ExponentialAverage[26](low)c1 = (close[1] CROSSES OVER indicator1)IF c1 THENBUY 1 CONTRACT AT MARKETENDIF// trailing stop functiontrailingstart = 20 //5 trailing will start @trailinstart points profittrailingstep = 5 //5 trailing step to move the "stoploss//reset the stoploss valueIF NOT ONMARKET THENnewSL = 0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL = 0 AND CLOSE - TRADEPRICE(1) >= TrailingStart*PipSize THENnewSL = TRADEPRICE(1) + TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] > HIGHEST[CAND](CLOSE) THENnewSL = CLOSE[1] - TrailingStart*PipSizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL = 0 AND TRADEPRICE(1) - CLOSE[1] >= TrailingStart*PipSize THENnewSL = TRADEPRICE(1) - TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] < LOWEST[CAND](CLOSE) THENnewSL = CLOSE[1] + TrailingStart*PipSizeENDIFENDIF//stop order to exit the positionsIF newSL > 0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIFGRAPH TradePrice(1)GRAPH newSLGRAPH CANDGRAPH close[1]GRAPH TrailingStart * pipsizeCiao Roberto. ad esmpio in questa strategia ho eliminato la condizione di uscita long.
Ho inserito un trailing stop ma purtoppo c’è una posizione che si chiude a -500punti.
ho inserito stop loss in alto di 500pt.
come puoi vedere da screenshot, in data 13/11/2017 la posizione si e chiusa con stop di 500pt (le operazioni sono state eseguite con il codice allegato sopra su time frame 15 minuti)
Come è possibile?
Forse non ho capito bene io la logica del trailing.
Potresti gentilemnte rispiegarmi l’impostazione dei valori “trailingstart” e trailingstep”?
Grazie anticipate
11/14/2017 at 12:48 PM #52707La perdita è su quella del 7, non del 13.
Hai 500 punti di SL perché il Profitto NON supera mai 20 Pips (anzi, è sempre negativo), quindi il Trailing Stop NON può funzionare. Non funzionerebbe neppure in manuale!!! Il Trailing Stop serve per accorciare lo SL (fino a metterlo addirittura in profitto, se possibile) mano a mano che il profitto aumenta. Serve a salvaguardarsi da eccessivi SL dopo avere fatto un certo profitto. Cioè, se tu, in manuale, metti un Target di 200 Pips ed uno Stop di -100, magari puoi scegliere di usare un Trailing Stop di 50 (o altro), per cui dopo i primi 50 Pips guadagnati lo Stop viene portato a -50, dopo ulteriori 50 pips (quindi 100 in totale) viene portato a ZERO, dopo altri 50 (150 in totale) viene portato a +50. Se l’operazione NON supera mai la soglia da te impostata, lo Stop resta in variato come l’hai indicato inizialmente (se non l’hai indicato allora fino quando si verifica una condizione contraria, ad esempio due medie che si invertono in modo opposto, sempre che tu l’abbia previsto, oppure fino al Margin Call).
Quindi il codice funziona perfettamente, l’unico svantaggio di non averlo in piattaforma, ma in codice, è che quest’ultimo verrà eseguito solo alla chiusura della candela, per cui se nei 15 minuti di durata della candela il prezzo supera la soglia da te impostata (ad esempio 20), ma alla chiusura il prezzo è sceso sotto (ad esempio a 19.9) e da li non riparte più…. andrai in stop loss completamente fino alla fine! E’ una scocciatura sicuramente, ma è molto meglio che non avere nessun Trailing Stop!
La logica di quel codice per il Trailing Stop è:
- TRAILINGSTART indica da quanti Pips di profitto vuoi partire a fare il trailing (20 significa che fino a 19.9 pips il trailing non parte)
- TRAILINGSTEP indica di ogni quanti (e di quanti) Pips vuoi incrementare lo Stop ogni volta (5 significa che ad ogni ulteriori 5 pips di profitto dal precedente Stop, lo incrementa della stessa quantità, cioè 5: quindi 20, 25, 30, …); se lo avevi impostato a -47 (sempre a titolo di esempio), dopo i primi 20 pips di profitto verrà portato a -27 (-47 + 20), poi ogni volta a -22, -17, -12, ecc… (di 5 in 5).
11/14/2017 at 6:33 PM #52762 -
AuthorPosts
Find exclusive trading pro-tools on