OrderBook History Library
- Bibliotheken
- Stanislav Korotky
- Version: 1.7
- Aktualisiert: 9 April 2025
- Aktivierungen: 5
Orderbuch, auch bekannt als Marktbuch, Markttiefe, Level 2, - ist eine dynamisch aktualisierte Tabelle mit den aktuellen Volumina der Kauf- und Verkaufsaufträge für ein bestimmtes Finanzinstrument zu Preisen nahe Bid und Ask.
MetaTrader 5 bietet die Möglichkeit, das Marktbuch von Ihrem Broker zu erhalten, allerdings nur in Echtzeit und ohne Zugriff auf seine Historie. Die Bibliothek OrderBook History Library liest den Marktbuchstatus in der Vergangenheit aus Archivdateien, die vom OrderBook Recorder erstellt wurden. Die Bibliothek kann in Ihre Indikatoren und Expert Advisors eingebettet werden (Quellcodes sind erforderlich), und dann können sie mit den Marktbuchdaten im Tester getestet werden.
Insbesondere wird die Bibliothek im Indikator OrderBook Cumulative Indicator und im Demo-Expert Adviser OrderBook History Playback verwendet.
Hier ist ein Beispiel für die Header-Datei zum Einbinden der Bibliothek in Ihr MQL-Programm:
input string OrderBook_FileFolder = "Books"; input bool OrderBook_UseCommonFiles = false; input int OrderBook_TimeZoneCorrection = 0; typedef void (*pOnBookEvent)(const string &symbol); #import "OrderBook History Library.ex5" void OrderBook_Init(pOnBookEvent ptr, const string folder, const bool common, const int offset); bool OrderBook_MarketBookAdd(string symbol); bool OrderBook_MarketBookRelease(string symbol); bool OrderBook_MarketBookGet(string symbol, MqlBookInfo &bookArray[]); long OrderBook_MarketBookPeek(string symbol, MqlBookInfo &bookArray[]); void OrderBook_OnTick(); void OrderBook_OnTimer(); bool OrderBook_CheckForEvents(datetime current); #import #ifdef ORDERBOOK_SUBSTITUTE #define MarketBookAdd OrderBook_MarketBookAdd #define MarketBookRelease OrderBook_MarketBookRelease #define MarketBookGet OrderBook_MarketBookGet #endif
Die Eingabeparameter sind der Einfachheit halber definiert - sie sollten an die Funktion OrderBook_Init übergeben werden.
- OrderBook_FileFolder - ein Name des Stammordners, in dem Unterordner und Dateien der Marktbücher gespeichert werden; standardmäßig - "Books"; jeder Unterordner wird nach einem bestimmten Arbeitssymbol benannt; zum Beispiel wird der Ticker GAZP die Dateien MQL5/Files/Books/GAZP/*.hob bilden;
- OrderBook_UseCommonFiles - eine Option zum Lesen von Dateien aus dem Datenordner des aktuellen Terminals (false, standardmäßig) oder aus dem gemeinsamen Datenordner für alle Terminals (true);
- OrderBook_TimeZoneCorrection - eine Korrektur von Datum und Uhrzeit, die erforderlich ist, wenn Archive in einem Terminal mit einer Zeitzone gelesen werden, die sich von der Zeitzone des Terminals, in dem die Archive erstellt wurden, unterscheidet; angegeben in Sekunden; wenn das Marktbuch z.B. mit der Serverzeit in GMT+3 gespeichert wurde und dann auf Kurse von einem Server angewendet wird, auf dem die Zeit in GMT+2 ist, sollte die Korrektur 1 Stunde (-3600 Sekunden) betragen, da Zeiten in GMT+2 im Vergleich zu (d.h.d. h. sie sind 1 Stunde kleiner als) GMT+3; 15:00 in GMT+3 ist 14:00 in GMT+2;
Funktionen
- OrderBook_Init - Initialisierung der Bibliothek, sollte von OnInit aufgerufen werden; der erste Parameter sollte der Event-Handler OnBookEvent sein;
- OrderBook_MarketBookAdd, OrderBook_MarketBookRelease, OrderBook_MarketBookGet - analoge Funktionen zu den entsprechenden Standard-MQL-Funktionen; während der Online-Arbeit werden die Standard-Funktionen intern aufgerufen - auf diese Weise wird durch das Einfügen der Bibliothek die Logik des Quellcodes nicht verändert; während der Arbeit im Tester holt die Bibliothek die Daten aus den Dateien; das Abonnement für das Marktbuch ist nur für das Symbol des aktuellen Charts erlaubt;
- OrderBook_MarketBookPeek - ähnlich wie OrderBook_MarketBookGet, liest aber immer Daten aus Dateien - sowohl im Tester als auch online; MarketBookGet wird nie aufgerufen;
- OrderBook_OnTick - optionale Ausführung der Bibliothek für den letzten Tick von OnTick; nur für den Tester, online geschieht nichts;
- OrderBook_OnTimer - optionale Ausführung der Bibliothek für die letzte bekannte Zeit von OnTimer; nur für den Tester, online tut sich nichts;
- OrderBook_CheckForEvents - optionale Ausführung der Bibliothek durch den Tester und online, ad hoc - für ein bestimmtes Datum und eine bestimmte Uhrzeit;
Das Hinzufügen der Zeile #define ORDERBOOK_SUBSTITUTE in den Quellcode vor dem Einfügen der Header-Datei ersetzt implizit alle Aufrufe der Standard-Marktbuchfunktion durch die entsprechenden Bibliotheksfunktionen.
Aufgrund eines bekannten Fehlers von MQL5 Market werden alle Bibliotheken in den Ordner MQL5/Scripts/Market heruntergeladen, nicht in den Ordner MQL5/Libraries, wo sie sein sollten. Bitte kopieren Sie die ex5-Datei der Bibliothek manuell in den Ordner MQL5/Libraries, damit die Importe richtig funktionieren.

Я уже было хотел делать что-то подобное сам, но подсказали что есть библиотека в магазине для тестирования/отладки стаканных экспертов. Все установил, все работает. Спасибо, разработчику, ты сэкономил мне, возможно, месяцы работы.