MultiTF ticks/volumes restituisce risultati non coerenti live/storico
Forums › ProRealTime forum Italiano › Supporto ProOrder › MultiTF ticks/volumes restituisce risultati non coerenti live/storico
- This topic has 9 replies, 2 voices, and was last updated 4 years ago by robertogozzi.
-
-
04/27/2020 at 7:35 PM #128493
Buonasera,
sto utilizzando ProOrder all’interno di PRT v10.3 (IG) per sfruttare la possibiltà di valutare alcuni indicatori su più timeframe. Quindi durante la giornata lo lascio girare giusto per avere una indicazione sulla tendenza di fondo (osservo solo l'”istogramma” generato dalla strategia).
Utilizzo barre in 100 ticks come base per il mio trading, che è prevalentemente discrezionale/manuale.
Tuttavia, oggi mi sono accorto che nonostante io utilizzassi la keyword “updateonclose” la mia strategia in live durante la giornata mi ha dato dei punti di ingresso (quindi un istogramma) diverso da quello che ho avuto ricaricando lo storico… Come far si che esegua in live esattamente come farebbe nello storico?
Siccome è da poco che sono passato su PRT magari c’è qualche impostazione che avrei dovuto settare che non conosco.
Il codice da me usato è il seguente:
Strategy1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162BeamSize = 4ClosedBar = 0timeframe(100 ticks, updateonclose)BgZone1 = CALL "MyIndicator"[ClosedBar, 1, 20, 50, 200]timeframe(200 ticks, updateonclose)BgZone2 = CALL "MyIndicator"[ClosedBar, 1, 20, 50, 200]timeframe(500 ticks, updateonclose)BgZone3 = CALL "MyIndicator"[ClosedBar, 1, 20, 50, 200]timeframe(1000 ticks, updateonclose)BgZone4 = CALL "MyIndicator"[ClosedBar, 1, 20, 50, 200]timeframe(default, updateonclose)BigBgZone1 = BgZone1 + BgZone2 + BgZone3BigBgZone2 = BgZone2 + BgZone3 + BgZone4level = 4// When the zone start it changes color until another changement of colorif BigBgZone1 >= +level thenZone1 = +1endifif BigBgZone1 <= -level thenZone1 = -1endif// When the zone start it changes color until another changement of colorif BigBgZone2 >= +level thenZone2 = +1endifif BigBgZone2 <= -level thenZone2 = -1endifCondUp = Zone1 = +1 and Zone2 = +1CondDn = Zone1 = -1 and Zone2 = -1// Condizioni per entrare su posizioni longIF not LongOnMarket and CondUp THENBUY 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni longIf LongOnMarket and not CondUp THENSELL 1 CONTRACTS AT MARKETENDIF// Condizioni per entrare su posizioni shortIF not ShortOnMarket and CondDn THENSELLSHORT 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni shortIF ShortOnMarket and not CondDn THENEXITSHORT 1 CONTRACTS AT MARKETENDIFGrazie in anticipo per la disponibilità
04/27/2020 at 8:13 PM #128499Di seguito aggiungo in allegato un video in cui mostro come l’istogramma degli ingressi cambi completamente tra il live e lo storico.
04/27/2020 at 8:38 PM #128503Alla riga 16 UpdateOnClose non funziona, il TF di default è necessariamente UpdateOnClose in quanto la strategia viene eseguita solo alla chiusura di quella candela.
Eppoi la strategia non può usare i ticks, ma solo unità di tempo.
1 user thanked author for this post.
04/27/2020 at 8:59 PM #128506Grazie mille per la risposta Roberto.
Scusami ma da come hai scritto non mi è ancora chiaro se quindi il timeframe di default può essere o no updateonclose.
Per caso intendi che sul timeframe di default l’updateonclose è già preimpostato ho capito bene?
Devo sostituire la riga 16 con “timeframe(100 ticks, updateonclose)”?
La questione che la strategia non possa usare i ticks non mi torna… io comunque il codice fin’ora l’ho usato normalmente. Il problema è che non può eseguire in automatico no? Ma questo non è il mio scopo… Il mio scopo è sfruttare il multitf in un ambiente (PRT v10.3) che ancora non lo rende disponibile negli indicatori (quindi uso la strategia come indicatore multi-tf). Solo questo, non ho interesse ad automatizzare questo codice in ticks. Però in live non mi può far vedere una istogramma e poi facendo refresh cambia tutto (@see video allegato)… Vorrei risolvere questo.
Comunque dalla riga 17 alla 41 lavoro solo con variabili che già sono state aggiornate a barra chiusa nei blocchi superiori… quindi non dovrebbe darmi problemi lo stesso no?
04/28/2020 at 1:07 AM #128515Ok, scusami, non avevo fatto caso al tuo scopo.
Il codice di una strategia viene sempre eseguito alla chiusura di una candela.
Usando MTF il timeframe che detta il passo di esecuzione è il più piccolo, quello di default, quindi che ci sia scritto UpdateOnClose oppure no è indifferente. Sui timeframe maggiori invece ha importanza, perché la strategia viene eseguita più volte durante la formazione della loro candela e se non usi UpdateOnClose le variabili vengono aggiornata pur non essendo chiusa la candela e questo può portare a falsi segnali.
Quanto ai ticks, ho sempre saputo che non sono utilizzabili da ProOrder, quindi non ho mai provato in backtest.
La riga 16 puoi lasciarla così, solo che UpdateOnClose puoi toglierlo, non cambia niente.
Proverò a guardare il filmato, ma credo il problema siano proprio i ticks. La piattaforma funziona solo su una base temporale ed i ticks non ce l’hanno.
04/28/2020 at 2:07 AM #128516Ad ogni modo, cercando la parola TICKS sul forum (tramite la casella che si apre quando col mouse passi sopra il tuo avatar), ho trovato questo link ad un post di Nicolas https://www.prorealcode.com/topic/backtests-et-ticks/#post-96473.
Dice che le unità di tempo a ticks sono riscostruite volta per volta e possono cambiare del tutto secondo lo storico che hai usato, quindi su un timeframe a 100 toicks, con 1000 unità visibili avrai un risultato, se passi a 10000 unità cambierà il risultato anche dei tick correnti. Come per i mattoncini Renko.
Quindi quando fai il refresh, li ricalcola e li viene fuori la differenza.
Questo è il motivo per cui nel trading automatico non possono essere utilizzati, anche con la v11 credo non ci siano stati cambiamenti.
Indipendentemente lo scopo per cui tu li usi in backtest, il risultato non è, pertanto, affidabile.
04/28/2020 at 8:35 AM #128544Ok, ora ho capito. Per completezza reincollo quello che ha scritto Nicolas nel post che mi hai suggerito:
Les graphiques en ticks sont générés à la volée et cet historique n’est stocké nulle part. Par ailleurs, il faut bien comprendre qu’il n’a aucune valeur car il peut être différent d’un utilisateur à l’autre, par rapport à la quantité d’unités affichées ou si ils commencent à des dates différentes. Rien qu’un seul tick de décalage sur une stratégie automatique peut avoir des conséquences.
I grafici in ticks vengono generati al volo e questo storico non viene memorizzato da nessuna parte. Inoltre, si dovrebbe comprendere che non ha alcun valore perché può essere diverso da un utente all’altro, in relazione alla quantità di unità visualizzate o se iniziano in date diverse. Anche un singolo tick di ritardo su una strategia automatica può avere delle conseguenze.
Quindi immagino che l’unica soluzione per me debba essere ripiegare su timeframe temporali (del genere passare da ticks a secondi o minuti etc) dico bene? In tal caso il codice che ho scritto non dovrebbe darmi questi miraggi (@see video allegato 2020-04-2721-04-45_Live_Hist.mp4).
04/28/2020 at 8:46 AM #128549Esatto, sui TF temporali non avrai quei problemi.
04/28/2020 at 8:52 AM #128552Immagino che anche sui volumi valga la stessa cosa, mi sembrerebbe ragionevole.
Alla luce delle mie nuove conoscenze sui ticks vorrei rinominare il titolo del topic in:
“MultiTF ticks/volumes restituisce risultati non coerenti live/storico”
Mi sembra più appropriato. Potresti gentilmente farlo tu Roberto? Io credo di non poterlo più fare.Grazie ancora per il supporto
04/28/2020 at 9:36 AM #128561Fatto.
I volumi, sui time frame temporali funzionano, almeno per gli strumenti per i quali sono disponibili.
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on