Oppure conviene usare direttamente il trailing di Nicholas…..il risultato dovrebbe essere lo stesso con la differenza che lo stop si muove gradualmente invece che a scaglioni
trailingstart = 174 //trailing will start @trailinstart points profit
trailingstep = 12 //trailing step to move the "stoploss"
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 (trailing stop)
IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
newSL = newSL+trailingstep*pipsize
ENDIF
ENDIF
manca un ENDIF alla fine del tuo codice.
In alternativa puoi usare il codice di Nicolas. Può funzionare come vuoi te, il primo parametro lo imposti a 174 ed il secondo, lo step, a 126, solo che non puoi dirgli +12 o +50. Quando arriva a 174 ti porta l’operazione in pareggio (però puoi modificare il codice per aggiungerci te un certo numero di pips), la volta successiva lo porta a +126.
Con il codice di Nicholas, se ho capito bene, in caso di guadagno di 174 punti mi porta lo stop a BE+12, poi ogni chiusura di candela verifica l’eventuale gain.
Quindi se a chiusura di una candela ho un gain di 180 punti mi porta lo stop a BE+18. E’ corretto?
No, fa come to ho scritto sopra, a 174 lo porta in pari e poi lo aggiorna di 126 in 126, quindi farà:
- 0 (pareggio)
- +126
- +252
- .
- .
però puoi modificarlo come vuoi, la prima volta puoi aggiungerci 12, se vuoi.
Certo che se lo modifichi completamente è inutile che lo usi, puoi usare l’altro.
Scusa ma…..se
newSL = tradeprice(1)+trailingstep*pipsize
newSL = tradeprice+12 e non tradeprice….
non capisco il 126 da dove salta fuori…..
Non volevi 300 come step successivo?
174 di partenza, per arrivare a 300 ci manca uno step di 126.
In effetti non sono stato molto chiaro nell’esposizione…..
La mia idea principale è quella di proteggere il gain ed inizialmente ho pensato ad uno spostamento dello STOP al raggiungimento di un determinato guadagno, quindi nel mio caso al raggiungimento di 174 punti di guadagno lo STOP va a Tradeprice+12 (e fin qua nessun problema).
Successivamente, in caso di aumento del gain, vorrei un contestuale aumento dello STOP e qui si aprono i 2 scenari:
- a scaglioni come avevo pensato io, quindi al raggiungimento di 174 va a BE+12, poi al raggiungimento di 300 va a BE+50 e così via
- con verifica alla chiusura di ogni barra, cioè al raggiungimento di +174 va a BE+12 e poi, se la chiusura della barra successiva è maggiore ad esempio +190 lo STOP si sposta a BE+28 (12+16) e così via per ogni barra….
Ok, ho capito. Ssono due alternative tra cui puoi scegliere.
In realtà ogni codice è modificabile, per cui ognuno può crearsi un diverso sistema di trailing stop (come di qualunque altra cosa). Se cerchi le parole trailing stop usciranno molti risultati, alcuni con piccole differenze tra l’uno e l’altro, altri con molte differenze, altri completamente diversi.
In molti casi la base di partenza è stato il codice di Nicolas che ha spinto molti a variarlo, adattarlo alle proprie esigenze e magari migliorarlo.
Il codice “dovrebbe essere questo”…..può funzionare?
Deve:
- al raggiungimento dei 174 punti spostare a BE+12
- verifica ogni chiusura e se la candela [0] chiude > della candela [1] lo stop viene spostato a BE+12+(differenza fra Close e Close[1])
trailingstart = 174 //trailing will start @trailinstart points profit
trailingstep = 12 //trailing step to move the "stoploss"
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 (trailing stop)
IF newSL>0 AND close>close[1] THEN
newSL = max(newSL,newSL+(Close-Close[1]))
ENDIF
If NewSL > 0 Then
SELL at NewSL Stop
Endif
ENDIF