- Получение списков доступных символов и Обзора рынка
- Редактирование списка Обзора рынка
- Проверка символа на существование
- Проверка актуальности данных по символу
- Получение последнего тика по символу
- Расписания торговых и котировочных сессий
- Маржинальные коэффициенты по символу
- Обзор функций получения свойств символа
- Проверка состояния символа
- Тип цены для построения графиков по символу
- Базовая, котировочная и маржинальная валюты инструмента
- Точность представления и шаг изменения цен
- Разрешенные объемы торговых операций
- Разрешения на торговлю
- Торговые условия и режимы исполнения приказов по символу
- Маржинальные требования
- Правила истечения сроков отложенных ордеров
- Спреды и отступы приказов от текущей цены
- Получение величины свопов
- Текущая рыночная информация (тик)
- Описательные свойства символов
- Глубина стакана цен
- Свойства пользовательских символов
- Специфические свойства (биржа, срочный рынок, облигации)
Глубина стакана цен
MetaTrader 5 позволяет получать о биржевых инструментах не только информацию о ценах и объемах сделок, упакованную в тики, но и "стакан цен" (или "глубину рынка"), то есть распределение объемов в выставленных заявках на покупку и продажу на нескольких ближайших уровнях вокруг текущей цены. Одно из целочисленных свойств символа SYMBOL_TICKS_BOOKDEPTH содержит максимальное количество уровней, показываемых в стакане. Это количество разрешено для каждой из сторон, то есть общий размер стакана может быть в два раза больше (причем здесь не учитываются ценовые уровни с нулевыми объемами, которые не транслируются).
В зависимости от обстановки на рынке, актуальный размер транслируемого стакана может стать и меньше, чем указано в данном свойстве. Для небиржевых инструментов данное свойство, как правило, равно 0, хотя некоторые брокеры могут транслировать стакан и для Forex-символов, ограниченный лишь заявками своих клиентов.
Сам стакан и уведомления о его обновлении должны быть запрошены заинтересованной MQL-программой с помощью специального API, которое мы рассмотрим в следующей главе.
Следует отметить, что в силу архитектурных особенностей платформы данное свойство не связано напрямую с трансляцией стакана, то есть это всего лишь поле спецификации, заполняемой брокером. Иными словами, ненулевое значение свойства не означает, что стакан обязательно будет поступать в терминал при открытом рынке. Это зависит от прочих настроек сервера и наличия на нем активного подключения к поставщику данных.
Попробуем получить статистику по глубине стаканов по всем или избранным символам с помощью скрипта SymbolFilterBookDepth.mq5.
input bool UseMarketWatch = false;
|
Параметр ShowSymbolsWithDepth, равный по умолчанию -1, предписывает собрать статистику по разным настройкам стакана среди всех символов. Если установить параметр в иное значение, программа попытается найти все символы с указанной глубиной стакана.
void OnStart()
|
Если задана конкретная глубина, просто выводим массив символов (они все удовлетворяют условию фильтра), и завершаем работу.
if(ShowSymbolsWithDepth > -1)
|
В противном случае ведем подсчет статистики и выводим её.
for(int i = 0; i < n; ++i)
|
При настройках по умолчанию можем получить следующую картину.
===== Book depths for all available symbols =====
|
Если установить ShowSymbolsWithDepth в одно из обнаруженных значений, например, 32, получим перечень символов с такой глубиной стакана.
===== Book depths for all available symbols (filtered by depth=32) =====
|