Aprire una sola posizione al Massimo o al minimo candela oraria
Forums › ProRealTime forum Italiano › Supporto ProOrder › Aprire una sola posizione al Massimo o al minimo candela oraria
- This topic has 6 replies, 2 voices, and was last updated 3 years ago by Stanko.
-
-
05/04/2021 at 6:58 PM #168792
Buonasera Roberto.
Avevo già chiesto, precedentemente, aiuto perchè c’erano dei problemi nell’aprire una sola posizione (al massimo o al minimo) in una candela oraria.
In questi giorni sto provando in demo il programma che non soddisfaceva il mio scopo, però separandolo in pratica in 2 sistemi: uno solo long e l’altro solo short (allegati di seguito).
Stranamente questi due programmi sembrano operare in simbiosi perchè si apre solo una operazione al giorno (o long o short) ed anche i backtest confermano i risultati.
Per cortesia potresti verificare se c’ è qualche comando errato?
Grazie
Candela ore 8 LONG12345678910111213141516171819202122232425262728293031323334353637383940414243DEFPARAM CumulateOrders = False//DEFPARAM FLATAFTER = 220000//Condizioni per entrare LONG//Timeframe (1 Hour, Updateonclose)//IF NOTONMARKET THEN//i = 0IF Time = 090000 AND not OnMarket THENCOMPRA = High[0] + (5*pipsize)BUY 1 CONTRACT AT COMPRA STOPENDIFTimeframe (5 minute, Updateonclose)ATRSU = AverageTrueRange[5] < AverageTrueRange[1]ATRGIU = AverageTrueRange[5] > AverageTrueRange[1]IF ATRSU THENSET TARGET pPROFIT (70*1.2)*pipsizeSET STOP pLOSS (70*1.2)*pipsizeELSEIF ATRGIU THENSET TARGET pPROFIT 70*pipsizeSET STOP pLOSS 70*pipsizeENDIFENDIFSCA = 50*pipsizeIF LONGONMARKET AND (close - tradeprice(1)) >= (SCA* pipsize) THENbreakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel//place the new stop orders on market at breakevenLevelIF breakevenLevel > 0 THENSELL AT breakevenLevel STOPENDIFENDIF// --- SHORT sideIF SHORTONMARKET AND (tradeprice(1) - close) >= (SCA* pipsize) THENbreakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel//place the new stop orders on market at breakevenLevelIF breakevenLevel > 0 THENEXITSHORT AT breakevenLevel STOPENDIFENDIFCandela ore 8 SHORT1234567891011121314151617181920212223242526272829303132333435363738394041DEFPARAM CumulateOrders = False//DEFPARAM FLATAFTER = 220000//Condizioni per entrare LONG//Timeframe (1 Hour, Updateonclose)IF Time = 090000 AND not OnMarket THENVENDI = Low[0] - (5*pipsize)SELLSHORT 1 CONTRACT AT VENDI STOPENDIFTimeframe (5 minute, Updateonclose)ATRSU = AverageTrueRange[5] < AverageTrueRange[1]ATRGIU = AverageTrueRange[5] > AverageTrueRange[1]IF ATRSU THENSET TARGET pPROFIT (70*1.2)*pipsizeSET STOP pLOSS (70*1.2)*pipsizeELSEIF ATRGIU THENSET TARGET pPROFIT 70*pipsizeSET STOP pLOSS 70*pipsizeENDIFENDIFSCA = 50*pipsizeIF LONGONMARKET AND (close - tradeprice(1)) >= (SCA* pipsize) THENbreakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel//place the new stop orders on market at breakevenLevelIF breakevenLevel > 0 THENSELL AT breakevenLevel STOPENDIFENDIF// --- SHORT sideIF SHORTONMARKET AND (tradeprice(1) - close) >= (SCA* pipsize) THENbreakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel//place the new stop orders on market at breakevenLevelIF breakevenLevel > 0 THENEXITSHORT AT breakevenLevel STOPENDIFENDIF05/05/2021 at 10:01 AM #168809Nel primo codice (ma va bene anche per il secondo, cambieranno probabilmente le righe), subito dopo la riga 4 aggiungi questa:
1BarCount = BarIndexe subito dopo la riga 13 queste:
1234567891011ONCE TradeON = 1IF IntraDayBarIndex = 0 THENTradeON = 1ENDIFTradeBar = BarCountIF Not OnMarket AND TradeBar <> TradeBar[1] THENTradeON = 1ENDIFIF OnMarket OR (StrategyProfit <> StrategyProfit[1]) THENTradeON = 0ENDIFinfine modifica la riga 7 aggiungendoci la condizione TradeON:
1IF Time = 090000 AND not OnMarket AND TradeON THEN05/05/2021 at 10:42 AM #168814Grazie Roberto per la disponibilità.
Purtroppo il sistema mi restituisce gli stessi risultati.
In pratica il sistema entra in posizione LONG solo se il primo movimento successivo alla candela in esame rompe al rialzo.
Il sistema sembra che riesca a valutare un eventuale ingresso SHORT anche se non ci sono comandi che lo richiedano.
Grazie ancora e buona giornata.
05/05/2021 at 11:07 AM #168824Scusami, avevo capito una cosa completamente diversa.
Ti fa un’operazione soltanto perché hai messo l’entrata alle 9 esatte, siccome gli ordini pendenti vengono automaticamente cancellati ad ogni barra del TF principale, quello che è sul grafico (nel tuo caso ogni 5 minuti) se non entra allora non entra più.
In pratica vuoi che ti faccia più operazioni durante il giorno?
05/05/2021 at 11:16 AM #168826Un caso emblematico è stato ieri sul DAX: in apertura ha tentato di allungare trovando un nuovo massimo dopo le ore 9 per poi invertire subito e scendere con decisione: il sistema solo SHORT che avevo in DEMO non si è azionato quindi l’operazione LONG ha chiuso in LOSS mentre una possibile operazione SHORT non si è aperta.
Comunque, come mi hai fatto notare, con un Timeframe a 5 minuti sarebbe più opportuno trovare il massimo delle ore 9 con una funzione tipo HIGHEST[12] fino a quando non viene (eventualmente) aperta l’operazione.
05/05/2021 at 11:52 PM #168887L’ho modificato un pò, in particolare ho messo l’entrata nel TF a 5 minuti (mentre il calcolo del prezzo l’ho lasciato su H1), poi ho spostato qualche linea del BreakEven, perché come l’avevi messo tu se dopo averlo messo a BreakEven tornava sotto i 50 pips non piazzava l’ordine pendente STOP e non usciva:
1234567891011121314151617181920212223242526272829303132333435363738394041424344DEFPARAM CumulateOrders = False//DEFPARAM FLATAFTER = 220000//Condizioni per entrare LONG//Timeframe (1 Hour, Updateonclose)Distanza = 7 * pipsizeIF Time = 090000 THENCOMPRA = High[0] + (5*pipsize)ENDIFTimeframe (5 minute, Updateonclose)IF Time >= 090000 AND Not OnMarket THENIF (close + Distanza) < COMPRA THENBUY 1 CONTRACT AT COMPRA STOPElSIF (close - Distanza) > COMPRA THENBUY 1 CONTRACT AT COMPRA LIMITELSEBUY 1 CONTRACT AT MARKETENDIFENDIFATRSU = AverageTrueRange[5] < AverageTrueRange[1]ATRGIU = AverageTrueRange[5] > AverageTrueRange[1]IF Not OnMarket THENbreakevenlevel = 0IF ATRSU THENSET TARGET pPROFIT (70*1.2)*pipsizeSET STOP pLOSS (70*1.2)*pipsizeELSIF ATRGIU THENSET TARGET pPROFIT 70*pipsizeSET STOP pLOSS 70*pipsizeENDIFENDIFSCA = 50*pipsize// --- LONG sideIF LONGONMARKET AND (close - tradeprice(1)) >= (SCA* pipsize) THENbreakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevelENDIF// --- SHORT sideIF SHORTONMARKET AND (tradeprice(1) - close) >= (SCA* pipsize) THENbreakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevelENDIF//place the new stop orders on market at breakevenLevelIF breakevenLevel > 0 THENSELL AT breakevenLevel STOPEXITSHORT AT breakevenLevel STOPENDIF05/06/2021 at 8:42 AM #168910 -
AuthorPosts
Find exclusive trading pro-tools on