Tiki in tempo reale

 

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.

Spunta

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.

File:
ticks.zip  553 kb
 
Vladimir Mikhailov:

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
Хитрый усреднитель Hello Smart Эксперт усредняет убыточные позиции по определенному алгоритму. ColorJSatl_Digit Сглаженный быстрый цифровой фильтр JSatl с цветовой индикацией направления движения, с отображением последнего значения в виде ценовой метки и с возможностью округлять уровни...
 
prostotrader:

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?

 
Vladimir Mikhailov:

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.
 
prostotrader:

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.

 
Vladimir Mikhailov:

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 :) ) .

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
<br / translate="no">

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?

 
Aleksey Mavrin:

Mai sentito parlare di ECN?

)))))))))

Leggi su ECN


Обсуждение статьи "Выцарапываем профит до последнего пипса"
Обсуждение статьи "Выцарапываем профит до последнего пипса"
  • 2019.07.25
  • www.mql5.com
Опубликована статья Выцарапываем профит до последнего пипса: Автор: fxsaber...
 
Aleksey Mavrin:

Mai sentito parlare di ECN?

Perché sei venuto qui?

Continua a cercare il graal sul FOREX...

 
prostotrader:

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.

 
Vladimir Mikhailov:

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: 1 tick: 2018.12.03 00: 52: 27.671 1.13338 / 1.13354 / 0.00000 0 flags:230
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.


Motivazione: