Tiki in Echtzeit

 

Ich wünsche Ihnen allen einen guten Tag.

Es wurde notwendig, den Handelsalgorithmus an echten Ticks des Brokers "Otkritie" zu testen.
Der Algorithmus zeigt also unterschiedliche Ergebnisse im Online-Modus und im Tester im Modus der echten Ticks.
Der nächste Schritt war die Erfassung der Ticks in realen Ticks und deren Vergleich mit der Historie (History Ticks), die mit der Funktion CopyTicksRange() ermittelt wurde.
Die Zecken wurden in den SBRF-Futures für den 21.01.2020 gesammelt.

Dabei sind interessante Ergebnisse herausgekommen und es haben sich einige Fragen ergeben.

1. Die Anzahl der echten Ticks und der historischen Ticks ist sehr unterschiedlich, aber die Ticks zu Beginn und am Ende des Handelstages sind gleich.
Möglicherweise wird dies durch eine Funktion des Handlers OnTick() beeinflusst, der die Verarbeitung von Ticks überspringen kann.

Bei mehr als der Hälfte der historischen Ticks ist neben den Standardflags (TICK_FLAG_BID ... usw.) ein zusätzliches Flag mit 9 Bits aktiviert.
In echten Ticks sehen wir das nicht - es gibt keinen einzigen Tick mit aktiviertem 9-Bit-Flag.

3. Wir konnten keinen systematischen Unterschied zwischen realen und historischen Ticks feststellen, ebenso wenig wie die Einbeziehung von Bit 9 in historische Ticks.
Historische Ticks können vollständig mit realen Ticks übereinstimmen, und das 9. Bit in ihrem Flag kann ein- oder ausgeschaltet werden.
Reale und historische Ticks können selbst in Zeiten geringer Handelsaktivität, wenn der Empfang von Ticks im Terminal nicht so intensiv ist, inkonsistent sein.

Häkchen setzen

Und die Fragen sind entsprechend:

An die Entwickler: Was bedeuten die 9 Bits im Tick-Flag?

Und an die Community: Ist jemandem ein solcher Zusammenstoß schon einmal passiert?
Wie testen Sie die Algorithmen an echten Zecken? Nur online?

Im Anhang finden Sie Dateien mit Kollektor und Tick-Analysator.
Und echte Ticks auf SBRF-3.20 für den 21.01.2020.

Dateien:
ticks.zip  553 kb
 
Vladimir Mikhailov:

Ich wünsche Ihnen allen einen guten Tag.

Es besteht die Notwendigkeit, den Handelsalgorithmus an echten Ticks des Brokers "Otkritie" zu testen.
Der Algorithmus zeigt also unterschiedliche Ergebnisse im Online-Modus und im Testgerät im Real-Ticks-Modus.
Deshalb ist der nächste Schritt das Sammeln von Ticks in Echtzeit (Real Ticks) und ihr Vergleich mit der Tick-Historie (History Ticks), die mit der Funktion CopyTicksRange() ermittelt wird.
Die Zecken wurden in den SBRF-Futures für den 21.01.2020 gesammelt.

Dabei sind interessante Ergebnisse herausgekommen und es haben sich einige Fragen ergeben.

1. Die Anzahl der echten Ticks und der historischen Ticks ist sehr unterschiedlich, aber zu Beginn und am Ende des Handelstages gibt es die gleichen Ticks.
Möglicherweise wird dies durch eine Funktion des Handlers OnTick() beeinflusst, der die Verarbeitung von Ticks überspringen kann.

2. mehr als die Hälfte der historischen Ticks haben neben den Standardflags (TICK_FLAG_BID ... usw.) ein zusätzliches Flag mit 9 Bits aktiviert.
In echten Ticks sehen wir das nicht - es gibt keinen einzigen Tick mit aktiviertem 9-Bit-Flag.

3. Wir konnten keinen systematischen Unterschied zwischen realen und historischen Ticks feststellen, ebenso wenig wie die Einbeziehung von Bit 9 in historische Ticks.
Historische Ticks können vollständig mit realen Ticks übereinstimmen, und das 9. Bit in ihrem Flag kann ein- oder ausgeschaltet werden.
Reale und historische Ticks können selbst in Zeiten geringer Handelsaktivität, wenn der Empfang von Ticks im Terminal nicht so intensiv ist, inkonsistent sein.

Und die Fragen sind entsprechend:

Für Entwickler - was bedeuten 9 Bits im Tick-Flag?

Und an die Community: Ist jemandem ein solcher Zusammenstoß schon einmal passiert?
Wie testen Sie die Algorithmen an echten Zecken? Nur online?

Im Anhang finden Sie Dateien mit Kollektor und Tick-Analysator.
Und echte Ticks auf SBRF-3.20 für den 21.01.2020.

Du hast mich mit deinem Zeckensammler zum Lachen gebracht :)

Nehmen Sie das "Band aller Berufe" als Grundlage.

https://www.mql5.com/ru/code/16210

Abgeschlossen

Und vergessen Sie das Prüfgerät für Exchange-Instrumente

Лента всех сделок
Лента всех сделок
  • www.mql5.com
Хитрый усреднитель Hello Smart Эксперт усредняет убыточные позиции по определенному алгоритму. ColorJSatl_Digit Сглаженный быстрый цифровой фильтр JSatl с цветовой индикацией направления движения, с отображением последнего значения в виде ценовой метки и с возможностью округлять уровни...
 
prostotrader:

Du bringst mich zum Lachen mit deinem Zeckensammler :)

Nehmen Sie "All Transactions Feed" als Grundlage.

https://www.mql5.com/ru/code/16210

Abgeschlossen

Und vergessen Sie den Tester für Tauschgeräte

Das obige Beispiel ist nur eine Möglichkeit, das Band mit den Geschäften zu aggregieren, und auch hier wird auf die Historie verwiesen.
Das würde ich nicht tun wollen, da es den Algorithmus verlangsamt. Zunächst sind wir an den Ticks interessiert, die durch das Ereignis OnTick() verarbeitet werden.

Vergessen Sie den Tester für MetaTrader im Allgemeinen oder den Tester im MT5?

 
Vladimir Mikhailov:

Dieses Beispiel ist nur eine der Methoden zur Zusammenfassung von Geschäften, und auch hier handelt es sich um einen Verweis auf die Geschichte.
1. was man nicht tun sollte, weil es den Algorithmus verlangsamt. Zunächst sind wir an den Ticks interessiert, die durch das Ereignis OnTick() verarbeitet werden.

2. Vergessen Sie den Tester für Börseninstrumente im Prinzip oder den Tester im MT5?

1. Nichts verlangsamt sich und nichts wird sich verlangsamen.

Sie haben eine fertige Lösung erhalten, die nur noch an Ihre Bedürfnisse angepasst werden muss.

Das OnTick()-Ereignis zeigt nicht alle Änderungen im Pick an, d.h. es werden nicht alle Ticks berücksichtigt!

Hier ist ein einfaches Beispiel, das Sie überprüfen können

//+------------------------------------------------------------------+
//|                                                   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. Für Börseninstrumente (das wurde bereits für die Aktien geschrieben)

Hinzugefügt

Wenn Sie sich entschieden haben, von FOREX zur Börse zu "kriechen", dann empfehle ich Ihnen, dieses Thema in diesem

Hilfe für Einsteiger" und lesen Sie sie im Detail.

An der Börse ist Glass, nicht OnTick(), der "Kopf" von allem.
 
prostotrader:

1. Nichts verlangsamt sich und nichts wird sich verlangsamen.

Sie haben eine fertige Lösung erhalten, die nur noch an Ihre Bedürfnisse angepasst werden muss.

Das OnTick()-Ereignis zeigt nicht alle Änderungen im Glas an, d.h. es werden nicht alle Ticks berücksichtigt!

Hier ist ein einfaches Beispiel, das Sie überprüfen können

2. Für Börseninstrumente (das wurde bereits für die Aktien geschrieben)

Hinzugefügt

Wenn Sie sich entschieden haben, von FOREX zur Börse zu "kriechen", dann empfehle ich Ihnen, dieses Thema in diesem

Abschnitt "Leitfaden für Einsteiger" und lesen Sie ihn im Detail.

An der Börse ist Glass, nicht OnTick(), der "Kopf" von allem.

1. Sie haben Recht. Das Ereignis OnTick() ist nicht genau mit dem Ereignis OnBookEvent() verbunden.
Das erste Ereignis behandelt das Eintreffen neuer Ticks - Änderung von Kursen, Börsengeschäfte.
Das zweite Ereignis behandelt den Wechsel des Ticks, der nicht immer zu einem Aktienhandel führt.
Da das Börsengeschäft nicht unbedingt über den Ticker läuft.
. D.h. wir können sagen, dass sich das erste Ereignis auf den Ticker des Geschäfts bezieht und das zweite Ereignis auf den Ticker.

2. Was für die Analyse und Entscheidungsfindung zu verwenden ist - der Streifen der Geschäfte oder der Schieberegler oder beides - hängt vom Handelsalgorithmus ab.

Es scheint, dass ich das OnTimer()-Ereignis mit einer Millisekunden-Periode für die Analyse des Streifens verwenden muss.
Ich werde weiter experimentieren.

 
Vladimir Mikhailov:

1. Sie haben Recht. Das Ereignis OnTick() ist nicht genau mit dem Ereignis OnBookEvent() verbunden.
Das erste Ereignis behandelt das Eintreffen neuer Ticks - Änderung von Kursen, Aktienhandel.
Das zweite Ereignis behandelt den Wechsel des Ticks, der nicht immer zu einem Aktienhandel führt.
Auch ein Tauschgeschäft muss nicht unbedingt über den Pokal laufen.
D.h. wir können sagen, dass sich das erste Ereignis auf das Band mit den Geschäften und das zweite auf den Becher bezieht.

2. Was für die Analyse und Entscheidungsfindung verwendet wird - der Ticker oder der Markt oder beides - hängt vom Handelsalgorithmus ab.

Es scheint, dass ich das OnTimer()-Ereignis mit einer Millisekunden-Periode verwenden muss, um den Splitter der Geschäfte zu analysieren.
Ich werde weiter experimentieren.

Es ist keine gute Idee, einen Timer zu verwenden.

Sie müssen sich entscheiden, ob Sie in Echtzeit oder per Zeitschaltuhr arbeiten wollen...

In Ihrem Kopf herrscht ein Durcheinander.

Jede Änderung des Stapels ist ein Tick, der auch den "Trades Feed" umfasst.

Wenn OnBookEvent() ausgelöst wird, bedeutet dies, dass:

1. Ein Handel hat stattgefunden oder

2. Ein neuer ASK ist aufgetreten oder

3. Ein neues Angebot ist erschienen, oder

4. Jemand hat seine ausstehende Bestellung zurückgezogen oder

5. 5. das ASK-Volumen geändert oder

6 Die Gebotsmenge hat sich geändert

All dies wird in OnBookEvent() .... widergespiegelt.

Viel Glück!

Hinzugefügt

Im Gegensatz zu FOREX, wo Sie mit Computer-DC handeln ,

Auf dem FOREX haben Sie echte Gegner (Privatpersonen und Unternehmen)!

Die Börse "paart" nur Ihre Aufträge(natürlich nicht kostenlos :) ) .

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

Im Gegensatz zu FOREX, wo man mit einem DC-Computer handelt ,

Auf FOREX haben Sie echte Gegenspieler (echte Privatpersonen und Unternehmen)!

Die Börse "paart" nur Ihre Aufträge(natürlich nicht kostenlos :) ) .

Haben Sie schon vom ECN gehört?

 
Aleksey Mavrin:

Haben Sie schon einmal von ECN gehört?

)))))))))

Lesen Sie über ECN


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

Noch nie etwas von ECN gehört?

Warum sind Sie hierher gekommen?

Suchen Sie weiter nach dem Gral auf dem FOREX...

 
prostotrader:

Warum sind Sie hierher gekommen?

Suchen Sie weiter nach dem Gral auf FOREX...

Was ist Ihr privates Territorium hier?

Und es ist nicht höflich, anderen zu sagen, dass man nicht weiß, was man tun soll. Das zeigt, dass Sie in Ihrer Entwicklung noch nicht so weit sind.

 
Vladimir Mikhailov:

An die Entwickler: Was bedeutet das Bit 9 im Tick-Flag?

Ich weiß nichts über Bit 9, die Frage bezog sich auf das undokumentierte Bit 7:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Neue Version von MetaTrader 5 build 1930: Schwebende Chart-Fenster und .Net-Bibliotheken in MQL5

Slawa, 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 Flaggen: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

Offenbar ist das Flag Bit für Bit 7 (Wert 128,undokumentiert), ist es möglich, den Wert zu kennen?

Dies ist ein Service-Flag, das vom Datafeed gesetzt wird, wenn der Tick aus irgendeinem Grund nicht das TICK_FLAG_BID-Flag gesetzt hat, während der Tick auf einen Bar angewendet werden sollte.


Grund der Beschwerde: