OrderBook History Library
- Библиотеки
- Stanislav Korotky
- Версия: 1.6
- Обновлено: 27 сентября 2024
- Активации: 5
Order Book, известный также как Market Book, глубина рынка, стакан цен, Level 2, - это предоставляемая брокером динамически обновляемая таблица с данными по текущим объемам торговых заявок на покупку и продажу для различных уровней цен вблизи Bid и Ask конкретного финансового инструмента.
MetaTrader 5 предоставляет возможность трансляции стакана цен, но только в реальном времени. Данная библиотека OrderBook History Library позволяет считывать состояния стакана в прошлом из архивов, создаваемых экспертом OrderBook Recorder. Библиотеку можно использовать в индикаторах и экспертах, в том числе и в тестере.
Эта библиотека, в частности, используется для чтения стакана индикатором OrderBook Cumulative Indicator и демонстрационным экспертом OrderBook History Playback.
Ниже приведен пример заголовочного файла для подключения библиотеки:
input string OrderBook_FileFolder = "Books"; input bool OrderBook_UseCommonFiles = false; input int OrderBook_TimeZoneCorrection = 0; typedef void (*pOnBookEvent)(const string &symbol); #import "OrderBook.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
Входные параметры определены для удобства - чтобы их значения можно было передать в функцию OrderBook_Init.
- OrderBook_FileFolder - имя корневой папки, где находятся подпапки с файлами стакана; по умолчанию в OrderBook Recorder используется "Books"; каждая подпапка называется по имени символа; например, для тикера GAZP получим файлы MQL5/Files/Books/GAZP/*.hob;
- OrderBook_UseCommonFiles - опция чтения файлов из папки текущего терминала (значение false, по умолчанию) или из общей папки всех терминалов (true);
- OrderBook_TimeZoneCorrection - корректировка даты и времени для случаев, когда архивы стакана считываются в терминале, где временная зона сервера отличается от той, что использовалась при записи архивов; задается в секундах; например, если стакан был сохранен с серверным временем GMT+3 и затем воспроизводится на котировках сервера с GMT+2, то коррекция должна быть равна 1 часу (-3600 секунд), поскольку при GMT+2 времена на 1 час отстают (т.е. меньше) от GMT+3;
Функции
- OrderBook_Init - функция инициализации библиотеки, должна вызываться из OnInit; в качестве первого параметра следует передавать указатель на обработчик события OnBookEvent;
- OrderBook_MarketBookAdd, OrderBook_MarketBookRelease, OrderBook_MarketBookGet - функции, полностью аналогичные соответствующим функциям MQL; при работе онлайн идет прямой вызов стандартных функций - это позволяет встроить библиотеку, практически не меняя код; при работе в тестере библиотека обращается к архиву; допускается подписка только для текущего символа графика;
- OrderBook_MarketBookPeek - аналог OrderBook_MarketBookGet, который всегда обращается к архиву - и в тестере, и онлайн; вызов MarketBookGet отсутствует;
- OrderBook_OnTick - опциональный вариант запуска библиотеки в тестере из OnTick;
- OrderBook_OnTimer - опциональный вариант запуска библиотеки в тестере из OnTimer;
- OrderBook_CheckForEvents - опциональный вариант запуска библиотеки в тестере и онлайн по требованию, для заданной даты и времени;
Объявление #define ORDERBOOK_SUBSTITUTE перед включением заголовочного файла неявно подменяет в вашем коде все вызовы стандартных функций на библиотечные.
Я уже было хотел делать что-то подобное сам, но подсказали что есть библиотека в магазине для тестирования/отладки стаканных экспертов. Все установил, все работает. Спасибо, разработчику, ты сэкономил мне, возможно, месяцы работы.