come funziona il trailing stop
Forums › ProRealTime forum Italiano › Supporto piattaforma ProRealTime › come funziona il trailing stop
- This topic has 9 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
-
-
02/17/2021 at 3:38 PM #161819
stavo guardando https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
e mi chiedo il parametro newsl che viene cosi definito come gisce poi? come, nel caso long, un ordine di vendita stop al valore del parametro?
02/17/2021 at 4:09 PM #16182202/17/2021 at 4:19 PM #161825Si tratta del Trailing Stop, ho cambiato l’oggetto.
NewSL è il valore a cui deve uscire un’operazione (in profitto, dal momento che se ha un valore è perché ha superato un certo profitto, altrimenti sarebbe zero).
Quando non si è a mercato viene azzerato (righe 23-25), dopodiché, quando si è a mercato verifica che siano stati superati i pips di trailingstart (e poi di trailingstep) per assegnargli un pareggio e poi un eventuale profitto, che crescerà finché non ci sarà un ritracciamento che lo andrà a colpire (a meno che l’operazione non esca prima al raggiungimento del TP stabilito dalla strategia).
Le righe di valorizzazione di NewSL sono le 27-37 per i Long e 39-49 per gli Short. Alle righe 51-55 c’è l’uscita, se è stato valorizzato (quindi ha un valore maggiore di 0). Esegue comunque entrambe le istruzioni di uscita, sia Long che Short, anche se una di esse sarà ignorata da ProOrder, in quanto può esserci aperta solo un’operazione in una direzione, non anche in quella contraria.
E’ un codice molto utile, creato da Nicolas anni fa per sostituire SET STOP pTRAILING.
02/17/2021 at 4:21 PM #161826Se è stato messo un passo di 5 pips, non deve adeguare NewSL da 6, quindi va bene >=.
02/17/2021 at 5:29 PM #161832Sto solo cercando di capire in modo dettagliato cosa sto facendo. Mi spiace se le mie osservazioni possono apparire grossolane,.
mi restano alcune perplessità: ho capito che “NewSL è il valore a cui deve uscire un’operazione”. Ma quello che uno si aspetta fissando un trailing stop ad un certo numero di pips, p.es 5 pips, sotto il livello di entrata, è che ad ogni aumento di prezzo a chiusura, lo stop si sposti rimanendo sotto 5 pips dalla chiusura (sempre che nel completamento della candela non si sia andati a colpire lo stop), qui quello che succede è che ad aumenti MINIMI di 5 pips si alza lo stop di 5 pips, per altro se la chiusura di una candela fosse molto superiore a quella precedente, lo stop si alzerebbe ugualmente solo di 5 pips, perché nel suo computo contano solo lo stop precedente ed il numero di pips definiti inizialmente come trailingstep .
Non sto criticando, sto cercando di capire se questo è il movimento del newsl descritto dal codice. Avremmo quindi, nel caso long, una volta innescato il newsl, un innalzamento del newsl di tanti pips quanti determinati dal trailingstep, ogni volta che una candela chiude piu di almeno i pip del trailing step.
se la differenza di chiusura tra due candele successive fosse molto superiore al trilingstep, ugualmente lo stop si innalzerebbe solo del triling step.
E’ cosi?
Inoltre, nel caso la candela successiva apra con un gap al ribasso, sotto lo il valore di trailing stop fissato a quel momento, e non raggiunga il livello di trailing stop, ma continui a scendere, si innesca ugualmente lo stop? Ovvero era un ordine di uscita tipo “sell at newsl stop” ? Nel qualcaso lo stop non verrebbe innescato.
02/17/2021 at 7:02 PM #16184402/17/2021 at 7:44 PM #161848Inizia a fare trailing da TRAILINGSTART pips di guadagno, dopodiché lo aggiorna ogni TRAILINGSTEP pips.
Se l’aumento successivo è di 20 pips ne aumenta solo 5 (se lo step è di 5).
E’ un codice di base che ognuno puà modificarsi a piacimento, ce ne sono anche altri più complessi (cercando TRAILING STOP li trovi, questo è uno che ho fatto io, che può andare bene anche con l’accumulo di più posizioni https://www.prorealcode.com/topic/breakeeven-trailing-profit/page/3/#post-158898).
Il discorso dei GAP non riguarda il codice, ma il broker. Un ordine STOP viene sempre esguito (questa è la regola), al prezzo indicato o al più vicino possibile, per cui se c’è un gap ampio puoi andare in perdita anche se il trailing stop era attivato ed in profitto.
02/17/2021 at 7:46 PM #161849Si, basta che modifichi i valori numerici, sono siolo due, lo start e lo step.
(nel mio è un pò più complicato, magari quando hai acquisito una certa padronanza della codifica).
02/19/2021 at 6:01 PM #162030alla fine ho provato a modificare di un poco il codice, come vi sembra?
123456789101112131415161718192021222324252627282930313233343536373839//************************************************************************//trailing stop functiontrailingstart = 20 //trailing will start @trailinstart points profittrailingstep = 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 movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = HIGHEST[BarIndex - TradeIndex](high)-trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize THENnewSL = lowest[barindex-tradeindex](low)-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF02/19/2021 at 6:44 PM #162032Mi sembra un’ottima soluzione per lo STEP che va bene nella generalità dei casi.
Non funzionerà:
- in caso di chiusure parziali di posizioni, in quanto TRADEPRICE farà riferimento all’ultimo prezzo, che sarà quello di uscita di una parte della posizione, non quello d’entrata. In tal caso andrà trovato un sistema più preciso (o si continua ad usare il codice originale di Nicolas)
- quando si accumulano posizioni, in quanto in quel caso il prezzo di riferimento non è più TRADEPRICE, ma POSITIONPRICE che ne è una media (basta sostuire la seconda istruzione alla prima, anzi, puoi metterla già, in quanto se non fai nessun accumulo le due istruzioni sono identiche).
Un suggerimento, per evitare che l’espressione tra parentesi quadre [BarIndex – TradeIndex] possa essere zero, ti suggerisco di sostituirla con:
1[max(1,BarIndex - TradeIndex])1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on