L’unico modo sarebbe creare un indicatore che simuli le entrate, le uscite, con stop loss, take profit ed eventuali trailing stop e gestione lotti.
In pratica devi inserire la strategia all’interno dell’indicatore, dove al posto di BUY, SELLSHORT, SELL ed EXITSHORT metti delle variabili che ti indicano che sei a mercato, Long o Short, oppure no. Ovviamente devi farti tutti i calcolo di quando lo stop loss o il tale profit vengono colpiti, profitti e perdite per simulare POSITIONPERF ed eventualmente STRATEGYPROFIT.
Non è che sia enormemente complicato, un pò lo è, ma è particolarmente lungo a farsi.
Ti ho codificato questo, con un pò di tempo, dove manca il Trailing Stop, la Gestione dei Lotti (position sizing) e PositionPerf è calcolato in pips (sotto al calcolo ti ho messo una riga commentata per avere in alternativa il dato in denaro). Se la desideri in % come l’originale basta che modifichi il calcolo.
Ovviamente non tiene conto dello Spread, non ha una gestione degli ordini pendenti e non considera lo slippage che può esserci in reale o demo
L’indicatore puoi metterlo sia SUL grafico che SOTTO di esso (o anche entrambi), come puoi vedere dalla foto.
L’entrata è una freccia gialla messa sotto la barra di entrata, ma puoi mettere 1 alla variabile BarraFreccia per ottenere lo stesso effetto del backtest.
// Simulatore
//
// https://www.prorealcode.com/topic/ancora-sul-passaggio-di-variabili/
//
ONCE LongAtMarket = 0 //invece di LongOnMarket
ONCE AtMarket = 0 //invece di OnMarket
ONCE PosPerf = 0 //invece di PositionPerf
ONCE StratProfit = 0 //invece di StrategyProfit
ONCE Entrata = 0
ONCE UscitaTP = 0
ONCE UscitaSL = 0
ONCE WinningTrades= 0
ONCE LosingTrades = 0
ONCE BarraFreccia = 0 //mettere 1 per spostarla sulla barra successiva (cone fa il BackTest)
ONCE SL = 100 //100 pip per lo Stop Loss
ONCE TP = SL * 2 //2x pip per il Take Profit
// Uscita in Stop Loss
IF LongAtMarket AND low <= UscitaSL THEN
LongAtMarket = 0 //segnalare di non essere più a mercato
LosingTrades = LosingTrades + 1 //conteggiare i trade perdenti
StratProfit = StratProfit - ((SL * PipSize) * PipValue)
PosPerf = 0
Entrata = 0
UscitaTP = 0
UscitaSL = 0
DrawText("▉",BarIndex,high + range*2,Dialog,Bold,5) coloured("Red")
ENDIF
// Uscita in Take Profit
IF LongAtMarket AND high >= UscitaTP THEN
LongAtMarket = 0 //segnalare di non essere più a mercato
WinningTrades= WinningTrades + 1 //conteggiare i trade vincenti
StratProfit = StratProfit + ((TP * PipSize) * PipValue)
PosPerf = 0
Entrata = 0
UscitaTP = 0
UscitaSL = 0
DrawText("▉",BarIndex,high + range*2,Dialog,Bold,5) coloured("Blue")
ENDIF
// aggiornare POSTIONPERF
IF LongAtMarket THEN
PosPerf = (close - Entrata) / PipSize //PositionPerf in pips
ENDIF
//
myEMA = average[20,1](close)
IF Close CROSSES OVER myEMA AND not LongAtMarket THEN
LongAtMarket = 1 //segnalare che siamo ENTRATI long
Entrata = close //è il TradePrice
UscitaSL = Entrata - (SL * PipSize) //prezzo di Stop Loss
UscitaTP = Entrata + (TP * PipSize) //prezzo di Take Profit
DrawarrowUP(BarIndex + BarraFreccia,low - range*2) coloured("Gold")
ENDIF
RETURN PosPerf AS "PositionPerf",StratProfit AS "StrategyProfit",WinningTrades AS "Winning Trades",LosingTrades AS "Losing Trades",Entrata AS "Entrata",UscitaTP AS "TP",UscitaSL AS "SL"