Buongiorno, non riesco a bloccare il sistema in uso dopo una perdita superiore a X Euro ( Per es. 200 Euro).
Ho questa soluzione per il giornaliero e vorrei trasformarlo in settimanale o mensile in base alle esigenze del trading in uso.
Grazie
Mauro
// ---parameters
MaxDailyProfit=1000 //Max daily profit allowed (in money)
MaxDailyLoss=1000 //Max daily loss allowed (in money)
// first time we launch the code, the trading is allowed
once TradeAllowed=1
// reset the current state of the strateygprofit each new day
If intradaybarindex=0 then
MyProfit=STRATEGYPROFIT
TradeAllowed=1
endif
// test if the strategyprofit of the day is currently above the daily profit allowed of below the daily loss allowed
If StrategyProfit>=MyProfit+MaxDailyProfit or Strategyprofit<=MyProfit-MaxDailyLoss then
TradeAllowed=0
endif
// initiate a new BUY order
if TradeAllowed=1 and buyconditions then
buy 1 lot at market
endif
Le righe 9-12 non hanno senso per TF che non siano intraday, come dice la parola stessa INTRADAYBARINDEX. Nel caso del giornaliero o settimanale penso quella costante di sistema restituisca sempre zero, quindi le righe verranno SEMPRE eseguite.
STRATEGYPROFIT viene aggiornato alla chiusura di ogni operazione (non mentre è aperta), per cui, al posto delle righe 9-17 dovresti mettere queste (non ho fatto nessun test, fammi sapere tu se funziona):
ONCE MaxLoss = 200 //importo max. della perdita
//
// dopo una barra di sosta, a causa perdita eccessiva, abilitare nuovamente il trading
If TradeAllowed=0 then
TradeAllowed=1
endif
//
// Verificare se dopo la chiusura di un’operazione c’è stata una perdita superiore al massimo consentito
// nel qual caso impedire il trading
If Not OnMarket AND OnMarket[1] THEN
If MyProfit >= (STRATEGYPROFIT + MaxLoss) THEN
TradeAllowed=0
endif
endif
//
// Quando non si è a mercato aggiornare MyProfit al valore corrente dopo l’ultima operazione
If Not OnMarket then
MyProfit=STRATEGYPROFIT
endif
Questa modifica consente di inibire il trading per una barra dopo una perdita consistente e funziona su qualunque TF, che sia 1 minuto o mensile!
Se vuoi inibire PER SEMPRE l’operatività, interrompendo la strategia, basta che sostituisci
If MyProfit >= (STRATEGYPROFIT + MaxLoss) THEN
TradeAllowed=0
endif
con
If MyProfit >= (STRATEGYPROFIT + MaxLoss) THEN
quit
endif
Grazie Roberto per la tua puntuale risposta, ma io uso grafici a 1 o 4 ore e vorrei interrompere il sistema non alla successiva barra , ma alla settimana successiva.
Vorrei mettere una massima perdita settimanale (o mensile ) e riprendere dopo questa interruzione.
Dovrebbe essere utili nei trading System solo unidirezionali ( Es. Solo Long) .
Ti Ringrazio ancora
Mauro
Inserisci questo codice nella tua strategia:
ONCE MaxLoss = 200
ONCE TradeAllowed = 1
ONCE MyProfit = 0
IF DayOfWeek < DayOfWeek[1] THEN
TradeAllowed = 1
MyProfit = STRATEGYPROFIT
ENDIF
IF Not OnMarket AND OnMarket[1] THEN
If MyProfit > (STRATEGYPROFIT + MaxLoss) THEN
TradeAllowed = 0
ENDIF
ENDIF
Per un mese sostituisci la riga 4 con:
IF Month <> Month[1] THEN
Grazie come al solito , sembra funzionare ora provo se le strategie migliorano…..
Sarebbe ottimale interrompere nel momento che arriva alla perdita prestabilita senza aspettare la chiusura della barra …..ma mi sa che con Prorealtime non è possibile.
Grazie ancora
Mauro
Puoi usare un TF basso solo per quella parte di codice, ma purtroppo hai uno storico più breve, perché il TF più basso è quello principale.
Si ci avevo pensato ma per ora solo il demo ha Multiframe ……. e il demo ha 100.000 unità , serve a poco….
Grazie
Ho provato e ho visto migliorare decisamente il Drawdown che era quello che volevo, poi ho cercato di dividere la perdita tra long e schort ( sempre settimanale o mensile) ma purtroppo non ci sono riuscito….sai se è possibile …..
ti ringrazio come al solito
Mauro
Non esiste un comando specifico che te lo indica, va scritto il codice per farlo.
Quando si esce da un’operazione bisogna stabilire se era SHORT o LONG ed aggiornare il risultato complessivo per ciascun tipo.
Per sapere quando siamo appena usciti da un’operazione LONG basta verificare di NON essere long attualmente, ma di esserlo stato nella barra precedente (vale anche per gli SHORT, a parte la differenza nei nomi):
ONCE MyStrategyProfit = 0 //risultato strategia TOTALE
ONCE LongStrategyProfit = 0 //risultato strategia solo per i LONG
ONCE ShortStrategyProfit = 0 //risultato strategia solo per gli SHORT
//
IF NOT LongOnMarket AND LongOnMarket[1] THEN
LongStrategyProfit = LongStrategyProfit + (STRATEGYPROFIT - MyStrategyProfit)
MyStrategyProfit = STRATEGYPROFIT
ENDIF
//
IF NOT ShortOnMarket AND ShortOnMarket[1] THEN
ShortStrategyProfit = ShortStrategyProfit + (STRATEGYPROFIT - MyStrategyProfit)
MyStrategyProfit = STRATEGYPROFIT
ENDIF
Grazie Roberto domani controllo se migliora.