Sistema Oil H1 – Aiuto per unica operazione giornaliera
Forums › ProRealTime forum Italiano › Supporto ProOrder › Sistema Oil H1 – Aiuto per unica operazione giornaliera
- This topic has 7 replies, 2 voices, and was last updated 7 years ago by Giggetto82.
-
-
10/05/2017 at 9:43 PM #48341
Ciao a tutti,
sto lavorando su un sistema che sfrutta il breakout su Oil H1 alla rottura del max/min della candela delle 14-15. Queste le caratteristiche:
Nessun Take profit.
Chiusura del sistema alle 22.
Stop Loss sul max/min della candela di setup.
Per ora ho scritto buona parte del codice e mi sembra funzionare, ma avrei bisogno di impostare il sistema in modo che non esegua più di un’operazione al giorno. Mi spiego meglio. Nel caso in cui il sistema parta con il breakout della candella delle 14 e l’operazione finisca in stop prima delle 22 non voglio che il sistema faccia partire una seconda operazione al successivo break della candela oraria.
Ho provato a inserire le indicazioni presenti in questo topic:
https://www.prorealcode.com/topic/come-limitare-ad-una-posizione-al-giorno-intraday/
ma non riesco a far funzionare correttamente il sistema.
Potete darmi una mano?
Vi allego il sistema che ho scritto. Grazie!
12345678910111213141516171819202122232425Defparam cumulateorders = falseDEFPARAM FLATBEFORE = 150000DEFPARAM FLATAFTER = 220000//Set livelli di StopMyStopLossLong= (open-low)+2*PipsizeMyStopLossShort= range[1]+2*Pipsize//candela ingresso -entry-BuyPrice = High+2*PipsizeSellPrice = Low-2*Pipsize// Condizioni per entrare su posizioni longIF NOT ONMARKET THENBUY 1 CONTRACTS AT BuyPrice STOPSET STOP LOSS MyStopLossLongENDIF// Condizioni per entrare su posizioni shortIF NOT ONMARKET THENSELLSHORT 1 CONTRACTS AT SellPrice STOPSET STOP LOSS MyStopLossShortENDIF10/05/2017 at 10:54 PM #48345L’ho modificato e dovrebbe funzionare quasi sempre, nel senso che alcune volte esegue anche più di un trade sulla stessa candela e questo non so come poterlo evitare, ma in generale funziona.
1234567891011121314151617181920212223242526272829303132Defparam cumulateorders = falseDEFPARAM FLATBEFORE = 150000DEFPARAM FLATAFTER = 220000ONCE TradeOn = 1 //abilitare il trading per defaultIF OnMarket THENTradeOn = 0 //disabilitare il trading dopo un'operazioneENDIFIF IntraDayBarIndex = 0 THEN //riabilitare il trading all'inizio di ogni giornoTradeOn = 1ENDIF//Set livelli di StopMyStopLossLong= (open-low)+2*PipsizeMyStopLossShort= range[1]+2*Pipsize//candela ingresso -entry-BuyPrice = High+2*PipsizeSellPrice = Low-2*Pipsize// Condizioni per entrare su posizioni longIF NOT ONMARKET AND TradeOn THENBUY 1 CONTRACTS AT BuyPrice STOPSET STOP LOSS MyStopLossLongENDIF// Condizioni per entrare su posizioni shortIF NOT ONMARKET AND TradeOn THENSELLSHORT 1 CONTRACTS AT SellPrice STOPSET STOP LOSS MyStopLossShortENDIFRoberto
10/05/2017 at 10:59 PM #48346Ho capito il problema di più operazioni sulla stessa candela.
Tu piazzi due ordini pendenti contemporaneamente, siccoma la candela dura un’ora, quindi è un TF abbastanza lungo, può capitare che un’operazione vada in stop e l’altro ordine pendente venga pure esso eseguito!
10/05/2017 at 11:11 PM #48349Un’altra cosa, tu non hai inserito una riga dova prendi i valori alle 15, perché le righe 19-20 (12-13 del tuo codice originale) prendono sempre i valori nuovi ogni ora.
Tu forse hai ritenuto che
1DEFPARAM FLATBEFORE = 150000Facesse partire la strategia alle 15:00. Purtroppo Non è così!!! Ogni strategia funziona continuamente, candela dopo candela. FLATBEFORE impedisce solo che, anche a condizioni verificate, un’operazione non venga aperta.
Per cui l’ho ulteriormente modificata:
1234567891011121314151617181920212223242526272829303132Defparam cumulateorders = falseDEFPARAM FLATBEFORE = 150000DEFPARAM FLATAFTER = 220000ONCE TradeOn = 1 //abilitare il trading per defaultIF OnMarket THENTradeOn = 0 //disabilitare il trading dopo un'operazioneENDIF//Set livelli di StopMyStopLossLong= (open-low)+2*PipsizeMyStopLossShort= range[1]+2*Pipsize//candela ingresso -entry-IF time = 150000 then //alle 15:00 prendi i valori da usare per il breakoutBuyPrice = High+2*PipsizeSellPrice = Low-2*PipsizeTradeOn = 1 //riabilitare il tradingendif// Condizioni per entrare su posizioni longIF NOT ONMARKET AND TradeOn THENBUY 1 CONTRACTS AT BuyPrice STOPSET STOP LOSS MyStopLossLongENDIF// Condizioni per entrare su posizioni shortIF NOT ONMARKET AND TradeOn THENSELLSHORT 1 CONTRACTS AT SellPrice STOPSET STOP LOSS MyStopLossShortENDIFRoberto
1 user thanked author for this post.
10/09/2017 at 9:12 PM #48817Ciao Roberto,
scusa per il ritardo con cui ti rispondo… in effetti hai centrato perfettamente il mio obiettivo! Ti ringrazio moltissimo per l’implementazione del codice!
Adesso ho ripreso a litigare con gli stop… mi sembravano corretti quando ti ho scritto ma rifacendo il backtest non mi soddisfano… ma niente di insuperabile!
Nel caso ti disturbo di nuovo…:-)
Grazie ancora!!!!
10/09/2017 at 9:57 PM #48823Roberto, ari-eccomi…
Ho inserito delle modifiche per gli stop e questa è la sequenza completa:
123456789101112131415161718192021222324252627282930Defparam cumulateorders = falseDEFPARAM FLATBEFORE = 150000DEFPARAM FLATAFTER = 220000ONCE TradeOn = 1 //abilitare il trading per defaultIF OnMarket THENTradeOn = 0 //disabilitare il trading dopo un'operazioneENDIF//candela ingresso -entry-IF time = 150000 then //alle 15:00 prendi i valori da usare per il breakoutBuyPrice = High+2*PipsizeSellPrice = Low-2*PipsizeMyStopLossLong= (high-low)+4*pipsizeMyStopLossShort= (low[1]-high[1])+4*pipsizeTradeOn = 1 //riabilitare il tradingendif// Condizioni per entrare su posizioni longIF NOT ONMARKET AND TradeOn THENBUY 1 CONTRACTS AT BuyPrice STOPSET STOP LOSS MyStopLossLongENDIF// Condizioni per entrare su posizioni shortIF NOT ONMARKET AND TradeOn THENSELLSHORT 1 CONTRACTS AT SellPrice STOPSET STOP LOSS MyStopLossShortENDIFIn backtest funziona ma quando vado a metterla in test normale PRT arresta il sistema e mi da questo allarme:
“Questo sistema di trading si è interrotto perchè ha voluto piazzare uno stop o un limite ad un livello di prezzo negativo. La prego di aggiungere le dovute protezioni al suo codice per prevenire l’immissione di ordini con livelli di rpezzo negativi” … è la prima volta che mi succede… puoi dirmi dove sto sbagliando?
Grazie ancora!
10/10/2017 at 8:34 AM #48866Intanto devi modificare SET STOP LOSS in
1SET STOP PLOSSper settare lo stop in Pips, anziché ad un certo prezzo.
E’ negativo il valore dello Stop SHORT perché l’espressione
1low[1]-high[1]non può che essere negativa (ad esempio, 9999 – 10000), credo tu debba invertirla, oppure sostituirla con:
1abs(low[1]-high[1])Inoltre, se vuoi fare il debugging è bene che aggiunga, in backtest soltanto, queste righe che ti consentono di esaminare il valore delle variabili:
1234GRAPH BuyPriceGRAPH SellPriceGRAPH MyStopLossLongGRAPH MyStopLossShortRoberto
1 user thanked author for this post.
10/19/2017 at 9:49 PM #50000Roberto, non so come ringraziarti!
Adesso funziona tutto! Metto il sistema in test e incrocio le dita, grazie ancora per il supporto!!!
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on