Buona giornata a tutti voi.
È necessario testare l'algoritmo di trading su tick reali del broker "Otkritie".
Quindi, l'algoritmo mostra risultati diversi in modalità online e nel tester in modalità tick reali.
Ecco perché il passo successivo è la raccolta di tick in tempo reale (real ticks) e il loro confronto con la storia dei tick (history ticks), ottenuti dalla funzione CopyTicksRange().
Le zecche sono state raccolte sui futures SBRF per il 21.01.2020.
Sono venuti fuori risultati interessanti e sono sorte alcune domande.
1. Il numero di tick reali e storici differisce notevolmente, ma i tick all'inizio e alla fine della giornata di trading sono gli stessi.
Forse, questo è influenzato da una caratteristica del gestore OnTick(), che può saltare l'elaborazione dei tick.
2. più della metà dei tick storici, oltre alle bandiere standard (TICK_FLAG_BID ... ecc.) hanno un'ulteriore bandiera inclusa a 9 bit.
Non lo vediamo nei tick reali - non c'è un solo tick con il flag a 9 bit abilitato.
3. Non abbiamo potuto trovare alcuna differenza sistematica tra i tic reali e storici, così come l'inclusione del bit 9 nei tic storici.
I tick storici possono corrispondere completamente ai tick reali, e il 9° bit nella loro bandiera può essere attivato o disattivato.
I tick reali e storici possono essere incoerenti anche durante i periodi di bassa attività di trading, quando la ricezione di tick nel terminale non è così intensa.
E le domande sono di conseguenza:
Per gli sviluppatori - cosa significa 9 bit in tick flag?
E alla comunità - qualcuno ha incontrato una tale collisione?
Come si testano gli algoritmi su zecche reali? Solo online?
In allegato ci sono i file con il collettore e l'analizzatore di zecche.
E zecche reali su SBRF-3.20 per il 21.01.2020.
Mi hai fatto ridere con il tuo collezionista di zecche :)
Prendete "Tape of all trades" come base.
https://www.mql5.com/ru/code/16210
Completato
E dimenticare il tester per gli strumenti di scambio
- www.mql5.com
Mi fai ridere con il tuo collezionista di zecche :)
Prendete come base il "Feed di tutte le transazioni".
https://www.mql5.com/ru/code/16210
Completato
E dimenticare il tester per gli strumenti di scambio
L'esempio di cui sopra è solo un modo di aggregare il nastro degli scambi, e di nuovo il riferimento è alla storia.
Cosa che non vorrei fare, perché rallenta l'algoritmo. Prima di tutto, siamo interessati a quei tick che vengono elaborati dall'evento OnTick().
Dimenticate il tester per MetaTrader in generale o il tester di MT5?
Questo esempio è solo uno dei metodi di aggregazione degli scambi, e di nuovo è un riferimento alla storia.
1. cosa che non si vorrebbe fare, perché rallenta l'algoritmo. Prima di tutto, siamo interessati a quei tick che vengono elaborati dall'evento OnTick().
2. Dimenticate il tester per gli strumenti Exchange in principio o il tester in MT5?
1. Niente sta rallentando e niente lo farà.
Vi è stata data una soluzione pronta, che ha solo bisogno di essere adattata alle vostre esigenze.
L'evento OnTick() non visualizza tutti i cambiamenti nel pick, cioè non considera tutti i tick!
Ecco un semplice esempio da verificare
//+------------------------------------------------------------------+ //| Ticks_test.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- bool is_book; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_book = MarketBookAdd(Symbol()); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { Print(__FUNCTION__ + " Tick is done!"); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if(Symbol() == symbol) { Print(__FUNCTION__ + " Tick is done!"); } } //+------------------------------------------------------------------+
2020.01.23 16:56:53.226 Ticks_test (GOLD-3.20,M1) OnTick Tick is done! 2020.01.23 16:56:53.226 Ticks_test (GOLD-3.20,M1) OnBookEvent Tick is done! 2020.01.23 16:56:53.712 Ticks_test (GOLD-3.20,M1) OnTick Tick is done! 2020.01.23 16:56:53.712 Ticks_test (GOLD-3.20,M1) OnBookEvent Tick is done! 2020.01.23 16:56:53.930 Ticks_test (GOLD-3.20,M1) OnBookEvent Tick is done! 2020.01.23 16:56:53.996 Ticks_test (GOLD-3.20,M1) OnTick Tick is done! 2020.01.23 16:56:53.996 Ticks_test (GOLD-3.20,M1) OnBookEvent Tick is done! 2020.01.23 16:56:54.016 Ticks_test (GOLD-3.20,M1) OnBookEvent Tick is done! 2020.01.23 16:56:54.280 Ticks_test (GOLD-3.20,M1) OnBookEvent Tick is done! 2020.01.23 16:56:54.392 Ticks_test (GOLD-3.20,M1) OnBookEvent Tick is done!
2. Per gli strumenti di scambio (già scritto per le azioni)
Aggiunto
Se hai deciso di "strisciare" dal FOREX alla Borsa, allora ti consiglio di trovare questo argomento in questo
Sezione "Aiuto per i principianti" e leggila in dettaglio.
Sulla Borsa, Glass, non OnTick(), è la "testa" di tutto.1. Niente sta rallentando e niente lo farà.
Vi è stata data una soluzione già pronta, che ha solo bisogno di essere adattata alle vostre esigenze.
L'evento OnTick() non mostra tutti i cambiamenti nel bicchiere, cioè non tutti i tick sono presi in considerazione!
Ecco un semplice esempio da controllare
2. Per gli strumenti di scambio (già scritto per le azioni)
Aggiunto
Se hai deciso di "strisciare" dal FOREX alla Borsa, allora ti consiglio di trovare questo argomento in questo
sezione "Guida per principianti" e leggila in dettaglio.
Sulla Borsa, Glass, non OnTick(), è la "testa" di tutto.1. Hai ragione. L'evento OnTick() non è esattamente legato all'evento OnBookEvent().
Il primo evento gestisce l'arrivo di nuovi tick - cambio di quotazioni, accordi di scambio.
Il secondo evento gestisce il cambiamento del tick, che non sempre si traduce in uno scambio di azioni.
Dato che l'affare di scambio non passa necessariamente attraverso il ticker.
. Cioè possiamo dire che il primo evento si riferisce al ticker dell'affare, e il secondo evento si riferisce al ticker.
2. Cosa usare per l'analisi e il processo decisionale - la striscia di accordi o il cursore o entrambi, dipende dall'algoritmo di trading.
Sembra che dovrò usare l'evento OnTimer() con un periodo di millisecondi per analizzare la striscia.
Continuerò a sperimentare.
1. Hai ragione. L'evento OnTick() non è esattamente legato all'evento OnBookEvent().
Il primo evento gestisce l'arrivo di nuovi tick - cambio di quotazioni, scambi di azioni.
Il secondo evento gestisce il cambiamento del tick, che non sempre si traduce in uno scambio di azioni.
Né uno scambio di scambio deve necessariamente passare attraverso la coppa.
Cioè possiamo dire che il primo evento si riferisce al nastro degli scambi e il secondo alla tazza.
2. Cosa usare per l'analisi e il processo decisionale - il deal ticker o il mercato o entrambi - dipende dall'algoritmo di trading.
Sembra che dovrò usare l'evento OnTimer() con un periodo di millisecondi per analizzare il frammento di accordo.
Continuerò a sperimentare.
Non è una buona idea usare un timer.
Devi decidere cosa vuoi - lavorare in tempo reale o con il timer...
La tua testa è in uno stato di confusione.
Qualsiasi cambiamento nella pila è un tick, che include il "feed di scambi".
Quando OnBookEvent() si attiva, significa che:
1. Si è verificato uno scambio o
2. Si è verificato un nuovo ASK o
3. È apparsa una nuova offerta, o
4. Qualcuno ha ritirato il suo ordine pendente o
5. 5. ASK volume cambiato o
6 Il volume dell'offerta è cambiato
Tutto questo si riflette in OnBookEvent() ....
Buona fortuna!
Aggiunto
In contrasto con il FOREX, dove si commercia con il computer DC,
Sul FOREX, hai dei veri avversari (individui e imprese)!
Lo scambio "accoppia" solo i tuoi ordini(non gratis, ovviamente :) ) .
- www.mql5.com
A differenza del FOREX, dove si fa trading con un computer DC,
Sul FOREX hai delle controparti reali (individui e imprese reali)!
La Borsa "accoppia" solo i tuoi ordini(non gratis, ovviamente :) ) .
Avete sentito parlare dell'ECN?
- 2019.07.25
- www.mql5.com
Perché sei venuto qui?
Continua a cercare il graal sul FOREX...
Qual è il tuo territorio privato qui?
E non è educato dire agli estranei cosa fare. Mostra un po' un basso livello di sviluppo.
Per gli sviluppatori - cosa significa il bit 9 nella bandiera del tick?
Non conosco il bit 9, la domanda riguardava il bit 7 non documentato:
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Nuova versione di MetaTrader 5 build 1930: finestre floating Chart e librerie .Net in MQL5
Slava, 2018.12.04 11:09
Alain Verleyen:
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 2 tick: 2018.12.03 00: 52: 27.743 1.13335 / 1.13348 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 3 tick: 2018.12.03 00: 52: 27.821 1.13327 / 1.13343 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 4 tick: 2018.12.03 00: 52: 27.888 1.13326 / 1.13343 / 0.00000 0 flags:226
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 5 tick: 2018.12.03 00: 52: 27.965 1.13327 / 1.13345 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 6 tick: 2018.12.03 00: 52: 28.194 1.13328 / 1.13346 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 7 tick: 2018.12.03 00: 52: 28.265 1.13328 / 1.13346 / 0.00000 0 flags: 96
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 8 tick: 2018.12.03 00: 52: 28.327 1.13326 / 1.13344 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 9 tick: 2018.12.03 00: 52: 28.405 1.13326 / 1.13344 / 0.00000 0 flags: 96
2018.12.03 09: 58: 06.899 TicksInfo (EURUSD, M5) EURUSD: 10 tick: 2018.12.03 00: 52: 28.809 1.13326 / 1.13344 / 0.00000 0 flags: 96
2018.12.03 09: 58: 06.899 TicksInfo (EURUSD, M5) EURUSD: 11 tick: 2018.12.03 00: 52: 29.289 1.13326 / 1.13344 / 0.00000 0 flags: 96
Apparentemente la bandiera è bit per bit 7 (valore 128,non documentato), è possibile conoscere il valore?
Questo è un flag di servizio che viene impostato dal datafeed se il tick non ha avuto il flag TICK_FLAG_BID impostato per qualsiasi motivo, mentre il tick dovrebbe essere applicato a una barra.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Buona giornata a tutti voi.
È diventato necessario testare l'algoritmo di trading su tick reali del broker "Otkritie".
Così, l'algoritmo mostra risultati diversi nella modalità online e nel tester nella modalità di tick reali.
Procedendo da questo, il passo successivo è stato la raccolta dei tick in tick reali e il loro confronto con la storia (history ticks), ottenuta dalla funzione CopyTicksRange().
Le zecche sono state raccolte sui futures SBRF per il 21.01.2020.
Sono venuti fuori risultati interessanti e sono sorte alcune domande.
1. Il numero di tick reali e storici differisce notevolmente, ma ci sono gli stessi tick all'inizio e alla fine della giornata di trading.
Forse, questo è influenzato da una caratteristica del gestore OnTick(), che può saltare l'elaborazione dei tick.
Più della metà dei tick storici, oltre ai flag standard (TICK_FLAG_BID ... ecc.) hanno un ulteriore flag abilitato a 9 bit.
Non lo vediamo nei tick reali - non c'è un solo tick con il flag a 9 bit abilitato.
3. Non abbiamo potuto trovare alcuna differenza sistematica tra i tic reali e storici, così come l'inclusione del bit 9 nei tic storici.
I tick storici possono corrispondere completamente ai tick reali, e il 9° bit nella loro bandiera può essere attivato o disattivato.
I tick reali e storici possono essere incoerenti anche durante i periodi di bassa attività di trading, quando la ricezione di tick nel terminale non è così intensa.
E le domande sono di conseguenza:
Agli sviluppatori - cosa significano i 9 bit nella bandiera del tick?
E alla comunità - qualcuno ha incontrato una tale collisione?
Come si testano gli algoritmi su zecche reali? Solo online?
In allegato ci sono i file con il collettore e l'analizzatore di zecche.
E zecche reali su SBRF-3.20 per il 21.01.2020.