Salve a tutti volevo sapere come poter programmare una strategia che venda sotto (e compri sopra) la media a 63 periodi impostando lo stop a 10 e impostando un trailing stop che parta da 30 e si sposti di 10.
Grazie
Prova questa (io l’ho testata solo sommariamente):
DEFPARAM CumulateOrders = FALSE
Media = average[63,0](close)
Sopra = close > Media
Sotto = close < Media
IF Sopra AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF Sotto AND Not OnMarket THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
//************************************************************************
// trailing stop function
TrailingStart = 30 * pipsize //20 trailing will start @trailinstart points profit
TrailingStep = 10 * pipsize //10 trailing step to move the "stoploss"
MainSL = 10 * pipsize //10 initial SL
//
//reset the stoploss value
IF NOT ONMARKET THEN
newSL = 0
InitialSL = 0
ENDIF
//
IF LongOnMarket THEN
IF NewSL = 0 THEN
MyProfit = close - TradePrice
IF MyProfit >= TrailingStart THEN
SLunits = max(1,round(((MyProfit - TrailingStart) / TrailingStep) - 0.5) + 1)
NewSL = TradePrice + (SLunits * TrailingStep) - MainSL
ENDIF
ELSE
MyProfit = close - NewSL
IF MyProfit >= TrailingStart THEN
SLunits = round(((MyProfit - TrailingStart) / TrailingStep) - 0.5)
NewSL = NewSL + (SLunits * TrailingStep)
ENDIF
ENDIF
ELSIF ShortOnMarket THEN
IF NewSL = 0 THEN
MyProfit = TradePrice - close
IF MyProfit >= TrailingStart THEN
SLunits = max(1,round(((MyProfit - TrailingStart) / TrailingStep) - 0.5) + 1)
NewSL = (SLunits * TrailingStep) + MainSL - TradePrice
ENDIF
ELSE
MyProfit = NewSL - close
IF MyProfit >= TrailingStart THEN
SLunits = round(((MyProfit - TrailingStart) / TrailingStep) - 0.5)
NewSL = NewSL - (SLunits * TrailingStep)
ENDIF
ENDIF
ENDIF
//
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
Grazie Roberto quando hai tempo riesci a postarmi anche quell altra di qualche giorno fa? grazie
e comunque questa non funziona mi dice che non è stata utilizzata la variabile initalSL
ed eliminandola non fa comunque quello che chiedevo
Devi eliminarla, si.
Su quale strumento, TF e candela l’hai provata e non funziona?
Se il profitto raggiunge 30+ viene spostato lo stop di 10 pips, quindi la prima volta va in pareggio. Se il profitto raggiunge 40+ (sempre la prima volta), vuoi che lo strop si sposti di soli 10 o di 20 (in modo da tenere sempre una distanza di 30 pips di differenza)?
Ricordi qual’era? Forse quella di Nicolas https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/?