Стакан цен

Помимо актуальных рыночных данных о ценах нескольких типов (Ask/Bid/Last) и объемах последних сделок, поступающих в терминал в виде тиков, MetaTrader 5 поддерживает трансляцию стакана цен — массива записей об объемах выставленных заявок на покупку и продажу в окрестности текущей рыночной цены. Объемы агрегируются на нескольких уровнях выше и ниже текущей цены, с минимальным шагом цены согласно спецификации символа. Максимальный размер стакана (количество ценовых уровней) установлен, как мы видели, в свойстве символа SYMBOL_TICKS_BOOKDEPTH.

Активные пользователи терминала, несомненно, знакомы с тем, как стакан выглядит в интерфейсе и по каким принципам работает, но все желающие могут узнать подробности в документации.

Стакан содержит расширенную рыночную информацию, которую принято называть "глубиной рынка". Её знание позволяет создавать более изощренные торговые системы.

Действительно, информация о тике является лишь малым срезом стакана. В некотором упрощенном смысле, тик — это стакан глубиной 2 уровня: одна ближайшая цена на покупку Ask (доступное предложение), и одна ближайшая цена на продажу Bid (доступный спрос). Причем в тике мы не видим объемы заявок по этим ценам.

Изменения стакана могут происходить гораздо чаще, чем тики, поскольку затрагивают не только реакцию на заключенные сделки, но и изменения объемов отложенных лимитных ордеров в глубине рынка.

Обычно поставщиками данных для стакана и котировок (тиков, сделок) являются разные инстанции, и события тиков (OnTick в экспертах, OnCalculate в индикаторах) не совпадают с событиями стакана. Оба потока поступают асинхронно и параллельно, но в конечном счете попадают в очередь событий MQL-программы.

Важно отметить, что стакан доступен, как правило, для биржевых инструментов, но бывают исключения как в одну, так и в другую сторону:

  • стакан может отсутствовать по тем или иным причинам у биржевого инструмента;
  • стакан может предоставляться брокером для внебиржевого инструмента на основе собранной им информации о приказах своих клиентов;

В MQL5 информация о стакане доступна для экспертов и индикаторов. С помощью специальных функций (MarketBookAdd, MarketBookRelease) программы могут включать или отключать в платформе свою подписку на получение уведомлений об изменении стакана. Для получения самих уведомлений программа должна определить в своем коде функцию-обработчик события OnBookEvent. После получения уведомления прочитать данные стакана позволяет функция MarketBookGet.

Терминал поддерживает историю котировок и тиков, но не стакана цен. В частности, пользователь или MQL-программа могут скачать историю на требуемую ретроспективу (при наличии у брокера) и тестировать на ней эксперты и индикаторы.
 
В отличие от этого, стакан цен транслируется только онлайн и не доступен в тестере. Брокер не имеет архива стаканов на сервере. Для эмуляции поведения стакана в тестере необходимо самостоятельно собирать историю стакана онлайн и затем каким-либо образом считывать из MQL-программы, запущенной в тестере. Вы можете найти готовые продукты в MQL5 Маркете.