Salve, avrei la necessità di controllare il risultato gain o loss dell’ultimo ordine eseguito.
In caso di loss vorrei settare un filtro (IF ultimo ordine loss….) che impedisce di aprire posizioni per un certo periodo di tempo ad esempio 5 giorni oppure non prima di x candele dal trade loss.
Qualche consiglio?
Occorre usare un flag (variabile di topo logico, solitamente 0 o 1) per abilitare/disabilitare il trading.
A parte quanto sopra, occorre salvare il profitto corrente con una variabile, quando non sei a mercato, dopodiché, appena uscito dal trade basta confrontare la variabile con il totale della strategia e, se inferiore, significa che c’è stata una perdita, nel qual caso si inizia a contare in modo che dopo X barre tu possa ricominciare a tradare.
ONCE MaxBarre = 5 //attendere 5 barre dopo una perdita, per ripartire
ONCE Tradare = 1 //1=trading attivato 0=trading disattivato
ONCE Conteggio = 0 //serve per il conteggio delle barre dopo una perdita
IF Not OnmMrket AND OnMarket[1] THEN //prima barra dopo un trade chiuso
IF Profitto > STRATEGYPROFIT THEN
Tradare = 0 //in caso di perdita disabilitare il trading
Conteggio = 0
ENDIF
ENDIF
IF Not OnMarket THEN
Profitto = STRATEGYPROFIT //aggiornare il profitto quando NON a mercato
Conteggio = Conteggio + 1
IF Conteggio > MaxBarre THEN
Tradare = 1 //riabilitare il trading
ENDIF
ENDIF
.
.
IF MieCondizioni AND Not OnMarket AND Tradare THEN
Buy/Sellshort.....
ENDIF
.
.
Funziona bene multicandela rispettando le regole ma sembra che quando si verifica un trade che apre e chiude nella stessa candela in loss la successiva apre subito altro trade… può essere? Oppure devo verificare meglio nel progetto?
Occorre il codice completo per dire qualcosa con certezza, però è vero che una sola barra può creare problemi.
Per fortuna ho risolto altrimenti dovevo sintetizzare oppure andavo offtopic incollando 400 righe di codice.
Visto che il TF è giornaliero ho risolto utilizzando un tuo vecchio consiglio inerente altro topic e cioè intraDayBarIndex:
IF Not OnMarket AND (OnMarket[1] OR IntraDayBarIndex = 0) THEN //prima barra dopo un trade chiuso
in questo modo prende anche trade aperti e chiusi nella stessa barra nello stesso giorno.
Grazie
Saluti!
Prova a sostituire la riga 4 del mio esempio con queste due, alternativamente, ma dovrebbero funzionare entrambe meglio delle soluzioni precedenti:
IF Not OnMarket AND Profitto <> STRATEGYPROFIT THEN
IF Profitto <> STRATEGYPROFIT THEN
once MaxBarre = 5 //attendere 5 barre dopo una perdita, per ripartire
once Tradare = 1 //1=trading attivato 0=trading disattivato
once Conteggio = 0 //serve per il conteggio delle barre dopo una perdita
IF Not OnMarket AND Profitto <> STRATEGYPROFIT THEN
IF Profitto <> STRATEGYPROFIT THEN
IF Profitto > STRATEGYPROFIT THEN
Tradare = 0 //in caso di perdita disabilitare il trading
Conteggio = 0
ENDIF
ENDIF
endif
IF Not OnMarket THEN
Profitto = STRATEGYPROFIT //aggiornare il profitto quando NON a mercato
Conteggio = Conteggio + 1
IF Conteggio > MaxBarre THEN
Tradare = 1 //riabilitare il trading
ENDIF
ENDIF
Funziona alla grande anche su TF differenti dal giornaliero.
Grazie