Aggiornamento, 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
//***************************************************************