Apertura trade dopo numero barre con condizione
Forums › ProRealTime forum Italiano › Supporto ProOrder › Apertura trade dopo numero barre con condizione
- This topic has 23 replies, 2 voices, and was last updated 5 years ago by robertogozzi.
-
-
10/03/2019 at 8:31 AM #109145
Allora ad occhio credo ci sia ancora qualcosa che non torna, immagine allegata
Si vede bene che il pattern a sinistra è identificato correttamente, il conteggio ed il limite di barre funzionano, c’è quindi l’entry come da regole ma l’uscita è prematura. E secondo me ho anche capito perchè. Esce alla identificazione di un pattern uguale successivo (immagine con numerino 2 sulla candela) invece di rispettare la rule di exit che dovrebbe invece portare il trade fino al tocco del livello della open della candela 1.
Possibile che questo apparente accavallarsi di pattern non ben filtrati poi impedisca al sistema di andare short?
10/03/2019 at 9:00 AM #109147Sembrerebbe inoltre che il “Conto” nelle opportunità short non “funzionerebbe” a dovere
Altra immagine; “MyProfitShort” segnala l’identificazione del pattern (candela 1) ma poi il Conto fallisce (piu di 7 barre non conteggiate e nessuna apertura trade con target che punta alla open della candela verde num 1 – “MyProfitShort”)
10/03/2019 at 10:00 AM #109162No, il pattern 2 non è uguale al pattern 1, ma contrario.
Quando è uguale è chiaro che cambia il prezzo ed il conteggio riparte.
Quando ci sono due pattern diversi che deve fare, tenere due conteggi di barre separati, oppure al secondo pattern trovato deve azzerare il primo?
10/03/2019 at 12:01 PM #109181Tenere 2 conteggi di barre separati sarebbe meglio, cosi per entrambi se le condizioni sono rispettate possono essere aperti i 2 trade (in momenti successivi) a patto però che ci sia comunque un cumulateorder = false.
Tuttavia è necessario che i takeprofit vengano rispettati, sia che ci sia sovrapposizione di pattern identici sia opposti. Una volta entrato in posizione i livelli MyProfit sono gli unici che possono chiudere il trade.
10/04/2019 at 11:21 AM #109261Prova queste modifiche:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119DEFPARAM Cumulateorders=FalseONCE ContoL = 0ONCE ContoS = 0ONCE MaxBarre = 7Bullish = close > openBearish = open > closeBody = (abs(open - close) > 0.5 * pipsize)UpperSHGreen = High > CloseLowerSHRed = Low < Close//------ Trading Periods ParametersIf Not OnMarket AND OnMarket[1] ThenContoL = 0ContoS = 0MyProfitLong = 0MyProfitShort = 0EndifIf (Time >=153000 AND Time <=154000) OR (Time < 091500 OR Time > 210000)OR (Month = 12 AND Day > 15) OR (Month = 8 AND Day >10) THENNoPattern = 1ContoL = 0ContoS = 0MyProfitLong = 0MyProfitShort = 0ELSENoPattern = 0ENDIF//----- Counter Bars per apertura posizione// verificare che, se il Conto è già iniziato, non abbia superato la soglia o che il prezzo non abbia toccato MyTargetIF ContoL > 0 ThenContoL = ContoL + 1IF Not OnMarket ThenIf ContoL > MaxBarre Or high >= MyProfitLong ThenContoL = 0MyProfitLong = 0EndifEndifEndifIF ContoS > 0 ThenContoS = ContoS + 1IF Not OnMarket ThenIf ContoS > MaxBarre Or high >= MyProfitShort ThenContoS = 0MyProfitShort = 0EndifEndifEndif// ----- ombra assente sull'Apertura - identificazione PATTERNIF Bullish[1] and Bearish and (Open=High) and (Body[1]) AND LowerSHRed AND (NoPattern=0) THEN//RedNSH=1MyProfitLong=OpenContoL = 1//ELSE//RedNSH=0ENDIFIF Bearish[1] and Bullish and (Open=Low) and (Body[1]) AND UpperSHGreen AND (NoPattern=0)THEN//GreenNSH=1MyProfitShort=OpenContoS = 1//ELSE//GreenNSH=0ENDIF// una volta a mercato azzerare il conteggio e azzerare MyProfitLong/MyProfitShortIf OnMarket ThenContoL = 0ContoS = 0//MyProfitLong = 0//MyProfitShort = 0Endif// quando si verificano le condizioni settare MyProfitLOng/MyProfitShort ed iniziare il conteggio//If (GreenNSH=1) then//MyProfitShort = Open[0]//ContoL = 1//ELSIF (RedNSH=1) then//MyProfitLong = Open[0]//ContoL = 1//Endif// entrare a mercato se già non lo si è, se il conteggio è pari alla soglia e se MyProfitLong/MYProfitShort non sono stati toccatiIF Not OnMarket THENIf MyProfitLong > 0 AND ContoL = MaxBarre ThenBuy 1 Contracts at marketENDIFIF MyProfitShort > 0 AND ContoS = MaxBarre ThenSellShort 1 Contracts at marketENDIFENDIF//----- Trade Closing ConditionsIF LONGONMARKET THENSELL AT MyProfitLong LimitELSIF SHORTONMARKET THENEXITSHORT AT MyProfitShort LimitENDIFIF ONMARKET AND (BarIndex - TradeIndex >= 40) thenEXITSHORT AT MARKETSELL AT MARKETENDIFgraph NoPatterngraphonprice MyProfitLong coloured(0,0,255,255)graphonprice MyProfitShort coloured(0,255,0,255)graph ContoLgraph ContoSgraph MaxBarregraph OnMarketse ricontri problemi fammi sapere in quale candela (orario e giorno) l’hai riscontrato.
10/04/2019 at 1:15 PM #109270Slve Roberto
Anzitutto un sentito ringraziamento per l’aiuto.
Allora la buona notizia è che ho risolto il problema della mancanza dei trade short. C’era un “high” al posto di un “low” in riga 49 e adesso il sistema apre anche short.
Tuttavia, se ho ben capito la logica di impostazione dello script, il codice (se le condizioni di orario e giorni/mesi sono rispettate) deve iniziare il Conto S o L ogni qualvolta ci sia l’identificazione di un pattern. Eventualmente poi, se il MyProfitShort o Long non vengono toccati entro le successive MaxBars, si apre il trade.
Adesso, mi corregga se sbaglio, ma io vedo che il codice continua a identificare correttamente tutti i pattern ma che a volte (non sempre) fa partire il “Conto” ma poi lo arresta immediatamente alla barra successiva (anche se le condizioni rimangono valide). Un esempio è quello in allegato. In particolare sull’esatta identificazione del secondo pattern in blu, è chiaro come in quel caso il MyProfitLong (che è pari alla Open della candela come da riga 59 del codice) non venga violato successivamente e le altre condizioni di orario/giorni sono già rispettate.
Ho malinterpretato io oppure c’è ancora qualcosa da sistemare?
Comunque sia ho ripensato al discorso del conteggio separato e credo sia inutile perchè poi lo script non può andare a controllare oltre le 7 barre se un pattern è invalidato. Quindi io le chiederei in ultimo di fare cosi:
Analisi pattern–>se identificato iniziare il conteggio per ContoL/S e maxbars ed eventualmente entrare in posizione se MyProfitLong/Short non viene violato entro 7 barre. Ciò che accade in termini di ulteriori pattern durante il conteggio delle 7 barre non ci interessa. Ricominciare invece a conteggiare dopo l’uscita dal trade.
Con questo non la disturberò piu, credo di aver imparato abbastanza 🙂
10/04/2019 at 1:44 PM #109279Ecco una cosa da precisare, una volta che il conteggio è iniziato, se viene trovato un pattern uguale si riparte dal nuovo pattern o si ignora e si aspetta che termini il conteggio?
Come l’ho scritto adesso riparte dal nuovo pattern.
10/04/2019 at 6:06 PM #109289Perfetto allora aspettare il termine del conteggio mi pare piu razionale e in linea con quello che poi devo modificare successivamente (tutto ciò è parte integrante di un sistema un pò piu lungo che sto costruendo)
Pertanto si parte col conteggio in base al parametro maxbars e se ci sono le condizioni (livelli “myprofit” non violati entro il numero specificato in “maxbars”) si apre il trade. Una volta invece che vengono violati i livelli “myprofit” oppure dopo che si chiude il trade, il sistema ricomincia il conteggio.
Chiedo scusa per l’incomprensione
10/05/2019 at 10:25 AM #109328Bene, questo è il codice con la modifica per cui si ignorano i nuovi pattern fino a che il precedente è valido (le istruzioni GRAPH/GRAPHONPRICE alla fine puoi toglierle o commentarle se non ti servono più):
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119DEFPARAM Cumulateorders=FalseONCE ContoL = 0ONCE ContoS = 0ONCE MaxBarre = 7Bullish = close > openBearish = open > closeBody = (abs(open - close) > 0.5 * pipsize)UpperSHGreen = High > CloseLowerSHRed = Low < Close//------ Trading Periods ParametersIf Not OnMarket AND OnMarket[1] ThenContoL = 0ContoS = 0MyProfitLong = 0MyProfitShort = 0EndifIf (Time >=153000 AND Time <=154000) OR (Time < 091500 OR Time > 210000)OR (Month = 12 AND Day > 15) OR (Month = 8 AND Day >10) THENNoPattern = 1ContoL = 0ContoS = 0MyProfitLong = 0MyProfitShort = 0ELSENoPattern = 0ENDIF//----- Counter Bars per apertura posizione// verificare che, se il Conto è già iniziato, non abbia superato la soglia o che il prezzo non abbia toccato MyTargetIF ContoL > 0 ThenContoL = ContoL + 1IF Not OnMarket ThenIf ContoL > MaxBarre Or high >= MyProfitLong ThenContoL = 0MyProfitLong = 0EndifEndifEndifIF ContoS > 0 ThenContoS = ContoS + 1IF Not OnMarket ThenIf ContoS > MaxBarre Or high >= MyProfitShort ThenContoS = 0MyProfitShort = 0EndifEndifEndif// ----- ombra assente sull'Apertura - identificazione PATTERNIF Bullish[1] and Bearish and (Open=High) and (Body[1]) AND LowerSHRed AND (NoPattern=0) AND MyProfitLong = 0 THEN//RedNSH=1MyProfitLong=OpenContoL = 1//ELSE//RedNSH=0ENDIFIF Bearish[1] and Bullish and (Open=Low) and (Body[1]) AND UpperSHGreen AND (NoPattern=0)AND MyProfitShort = 0 THEN//GreenNSH=1MyProfitShort=OpenContoS = 1//ELSE//GreenNSH=0ENDIF// una volta a mercato azzerare il conteggio e azzerare MyProfitLong/MyProfitShortIf OnMarket ThenContoL = 0ContoS = 0//MyProfitLong = 0//MyProfitShort = 0Endif// quando si verificano le condizioni settare MyProfitLOng/MyProfitShort ed iniziare il conteggio//If (GreenNSH=1) then//MyProfitShort = Open[0]//ContoL = 1//ELSIF (RedNSH=1) then//MyProfitLong = Open[0]//ContoL = 1//Endif// entrare a mercato se già non lo si è, se il conteggio è pari alla soglia e se MyProfitLong/MYProfitShort non sono stati toccatiIF Not OnMarket THENIf MyProfitLong > 0 AND ContoL = MaxBarre ThenBuy 1 Contracts at marketENDIFIF MyProfitShort > 0 AND ContoS = MaxBarre ThenSellShort 1 Contracts at marketENDIFENDIF//----- Trade Closing ConditionsIF LONGONMARKET THENSELL AT MyProfitLong LimitELSIF SHORTONMARKET THENEXITSHORT AT MyProfitShort LimitENDIFIF ONMARKET AND (BarIndex - TradeIndex >= 40) thenEXITSHORT AT MARKETSELL AT MARKETENDIFgraph NoPatterngraphonprice MyProfitLong coloured(0,0,255,255)graphonprice MyProfitShort coloured(0,255,0,255)graph ContoLgraph ContoSgraph MaxBarregraph OnMarketHo scritto un indicatore per vedere chiaramente sul grafico quando i pattern si verificano in modo da controllare se la strategia apre correttamente le operazioni (vedi schermata con evidenziato in basso l’indicatore dove ho mi sono impostato le proprietà come istogramma do due colori), ti allego il file per l’importazione.
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on