Ciao a tutti. Sono un nuovo entusiasta beginner di questa piattaforma. Vorrei subito condividere con voi la mia idea sul Mib (Italy40). La sto testando manualmente empiricamente… sarebbe bello fare un backtest usando ProOrder. per questo vi chiedo aiuto per scriver il codice. L’idea base è la seguente.
Sul Mib timeframe 1 minuto. Attendere la chiusura della candela delle ore 9:00.
Se è verde allora alla chiusura della candela delle 9:02 aprire una posizione long con SL a 40 punti e Tp a 40.
Viceversa se la candela delle 9:00 è rossa allora alle 9:03 aprire una posizione short SL 40 e Tp a 40.
Sarebbe fattibile?
Il passo successivo è: se si va in profitto oltre i 35 punti allora valutare un trailing stop con un range di 30 punti.
Qualcuno mi da una mano a scrivere il codice per ProRealTime? Grazie.
Si può fare, te lo farò entro domani mattina.
Ciao.
Provalo e fammi sapere:
DEFPARAM CumulateOrders = FALSE
Orario = OpenTime
IF Not OnMarket THEN
StopLoss = 0
IF Orario = 090200 THEN
IF close[2] > open[2] THEN //Candela delle 090000 rialzista
BUY 1 CONTRACT AT MARKET
SET TARGET pPROFIT 40
SET STOP pLOSS 40
ENDIF
ELSIF Orario = 090300 THEN
IF close[3] < open[3] THEN //Candela delle 090000 ribassista
SELLSHORT 1 CONTRACT AT MARKET
SET TARGET pPROFIT 40
SET STOP pLOSS 40
ENDIF
ENDIF
ENDIF
IF LongOnMarket THEN
IF (close - TRADEPRICE) >= (35 * pipsize) THEN
StopLoss = TRADEPRICE - (5 * pipsize)
ENDIF
ELSIF ShortOnMarket THEN
IF (TRADEPRICE - close) >= (35 * pipsize) THEN
StopLoss = TRADEPRICE + (5 * pipsize)
ENDIF
ENDIF
IF StopLoss THEN
IF LongOnMarket THEN
SELL AT StopLoss STOP
ELSIF ShortOnMarket THEN
EXITSHORT AT StopLoss STOP
ENDIF
ENDIF
Grazie, molto gentile e molto veloce. L’ho provato in demo questa mattina ed è andato subito in stop loss. 🙁
ma questo significa che il codice funziona.
Lo sto provando in demo. Vediamo i prossimi giorni come si comporta con il profitto.
Purtroppo, da quanto poco so di ProOrder il back test arriva fino a 10.000 candele che nel timeframe a 1 minuto significa al massimo una settimana indietro. Non posso testare quindi la strategia oltre. Ti farò sapere come va.
Il backtest su demo arriva a 100000 unità, circa 3 mesi per il TF a 1 minuto.
Hai variato le unità dove io ho cerchiato (nel mio caso sono 200000 perché è il conto reale di IG) ?
Ancora grazie della dritta. Ora riesco ad andare più indietro nel tempo.
Non mi convince il fatto che la massima vincita sia sempre di 40. Come se non funzionasse il trailng stop. Forse non mi sono spiegato bene.
Vorrei che se apro una posizione long e vado in profitto di 35 punti allora lo stop loss venga spostato da -40 a +5. Poi se il guadagno continua e si alza di altri x punti, anche lo stop loss si sposta in alto restando sempre a 30 punti dal prezzo.
x dovrebbe essere una variabile in modo da poter trovare la configurazione giusta. Es potrebbe valere come prima ipotesi 20 punti.
Esempio: ore 9:00 la candela è verde. Ore 9:02 apro posizione in long con 1 lotto (es. al prezzo di 100 euro) e SL a -40 punti (60 euro). Quando vado in profitto di 35 punti (135 euro) lo SL si sposta a -30 punti dal prezzo (105 euro). Se prendo lo SL guadagno 5 euro.
Se invece il prezzo sale ancora di (x=20 punti) arriva a 55 punti (155 euro) allora lo SL deve seguire sempre a -30 dal prezzo (quindi a 25 punti = 125 euro) e così via fino a quando non prendo uno SL.
Stesso discorso per l’inverso in caso di short.
Fattibile?
Ok, te lo faccio (dammi un pò di tempo).
Ecco la strategia modificata come vuoi tu, dopo i primi 35 pips di profitto SEMPRE 30 pips sotto il massimo raggiunto (ho aumentato il TP a 100 pips per fare le prove, altrimenti si chiude senza fare trailing):
DEFPARAM CumulateOrders = FALSE
ONCE Distanza = 30 * pipsize //mantenersi 30 pips sotto il prezzo
Orario = OpenTime
IF Not OnMarket THEN
Soglia = 35 * pipsize //iniziare da 35 pips di profitto a fare trailing
StopLoss = 0
IF orario = 090200 THEN
IF close[2] > open[2] THEN //Candela delle 090000 rialzista
BUY 1 CONTRACT AT MARKET
SET TARGET pPROFIT 100
SET STOP pLOSS 40
ENDIF
ELSIF Orario = 090300 THEN
IF close[3] < open[3] THEN //Candela delle 090000 ribassista
SELLSHORT 1 CONTRACT AT MARKET
SET TARGET pPROFIT 100
SET STOP pLOSS 40
ENDIF
ENDIF
ENDIF
IF LongOnMarket THEN
x = (close - TRADEPRICE)
IF x >= Soglia THEN
Soglia = x
StopLoss = close - Distanza
ENDIF
ELSIF ShortOnMarket THEN
x = (TRADEPRICE - close)
IF x >= Soglia THEN
Soglia = x
StopLoss = close + Distanza
ENDIF
ENDIF
IF StopLoss THEN
IF LongOnMarket THEN
SELL AT StopLoss STOP
ELSIF ShortOnMarket THEN
EXITSHORT AT StopLoss STOP
ENDIF
ENDIF
Ok. Grazie mille. Con i tuoi esempi sto iniziando ad imparare la programmazione di ProOrder. A prima vista non sembra difficilissimo. Sembra basic. Devo impratichirmi con i comadi e le sintassi.
Ritornando all’idea Mib i backtest non sono molto positivi purtroppo. Soprattutto se si considerano i 15 punti di spread di IG. Con quelli la equity scende drasticamente. Ti aggiungo in allegato un excel con i test “manuali” che sto facendo. Lo stop loss fisso a 40 punti sembra essere un buon parametro. Bisogna lavorare per trovare una regola per far scattare il TP al momento giusto. Come si vede nel file molte volte sarebbe bene uscire a 35 punti (evidenziati in giallo) ma alle volte sarebbe opportuno tenere la posizione fino oltre i 100 con un picco anche a 400.
A qualcuno viene in mente un codice per sfruttare al meglio le giornate nelle quali si va in guadagno?
Grazie.
Ciao, prova a girare la posizione dopo l’uscita. Se chiudi il long ti metti short, almeno sei a mercato per più tempo