Buongiorno, vorrei sapere se questo snippet code (vd sotto) che ho trovato nel forum per bloccare le operazioni di un TS in intraday dopo una determinata perdita complessiva può essere migliorato dato che ho notato, dalle prime prove, un inconveniente:
– non vengono aperte nuove operazioni, ma la posizione attuale che eccede il maxDailyLoss continua chiaramente fino alla chiusura dell’operazione. Si potrebbe aggiungere nel codice qualcosa per cui venga bloccata anche l’attuale posizione al termine della candela in corso o della prossima candela se la perdita è superiore al maxDailyLoss?
Strategyprofit dovrebbe controllare il profitto alla chiusura della barra precedente (come è scritto nel manuale) per cui forse in qualche modo dovrebbe essere possibile, ma non so come aggiungere questa istruzione allo snippet code. Grazie
maxDailyLoss = 200
once tradeAllowed = 1
if intradayBarIndex=0 then
myProfit=strategyProfit
tradeAllowed=1
endif
if strategyProfit <= (myProfit-maxDailyLoss) then
tradeAllowed=0
endif
STRATEGYPROFIT si aggiorna solo alla chiusura della candela.
Puoi usare POSITIONPERF per stabilire il valore (in valuta) del profitto/perdita.
Questo codice te lo restituisce (negativo se in perdita), per cui puoi sommare ImportoProfittoInCorso a STRATEGYPROFIT per fare la verifica in corso (ovviamente varia di barra in barra):
ImportoProfittoInCorso = positionperf*positionprice/pipsize*pipvalue
Grazie Roberto, ho provato (mettendo solo point al posto di pip, ma mi avevi già detto che sono equivalenti).
Funziona e si migliora la performance. Raggiunta la massima perdita giornaliera consentita è inutile aspettare la chiusura del trade rischiando di aumentare significativamente la massima perdita stabilita in caso di un ultimo stop loss giornaliero.
Ecco la formula utilizzata a chi interessa (aggiungere chiaramente nelle condizioni di entrata : tradeAllowed=1)
maxDailyLoss = 200 // Max Loss Intraday
realPosition=positionPerf*positionPrice/pointSize*pointValue
once tradeAllowed = 1
if intradayBarIndex=0 then
myProfit=strategyProfit
tradeAllowed=1
endif
if (strategyProfit+realPosition) <= (myProfit-maxDailyLoss) then
tradeAllowed=0
endif
Ciao Roberto, la formula sotto riportata blocco l’avvio di nuove operazioni, ma non fa uscire il TS , come dovrebbe, al raggiungimento del maxDailyLoss. Si vede dal Graph linea nera dopo le 18 circa, ora in cui il TS dovrebbe uscire invece non esce (vedi le righe blu del long)
Puoi controllare la formula sotto riportata? Grazie
maxDailyLoss = 160 // Max Loss Intraday
realPosition=positionPerf*positionPrice/pointSize*pointValue
once tradeAllowed = 1
if intradayBarIndex=0 then
myProfit=strategyProfit
tradeAllowed=1
endif
if (strategyProfit+realPosition) <= (myProfit-maxDailyLoss) then
tradeAllowed=0
endif
Grazie
Non ci sono istruzioni per chiudere le posizioni in questo codice, quindi ha senso! Per chiudere le posizioni latenti è necessario modificare il codice in questo modo:
maxDailyLoss = 160 // Max Loss Intraday
realPosition=positionPerf*positionPrice/pointSize*pointValue
once tradeAllowed = 1
if intradayBarIndex=0 then
myProfit=strategyProfit
tradeAllowed=1
endif
if (strategyProfit+realPosition) <= (myProfit-maxDailyLoss) then
tradeAllowed=0
if onmarket then
sell at market
exitshort at market
endif
endif
Grazie Nicolas, lo provo.