Работа со стаканом цен.

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Работа со стаканом цен.

Сообщение Рэндом » 23 ноя 2020, 22:29

Сначала пример который показывает как работать со стаканом. Код для МТ5.

Код: выделить все
//+------------------------------------------------------------------+
//|                                                         Book.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
    MarketBookAdd("EURUSD");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
      MarketBookRelease("EURUSD");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
//---
    MqlBookInfo bk[];
    bool res=MarketBookGet(symbol,bk);
    if(res)
    {
      int sz=ArraySize(bk);
      for(int i=0;i<sz;i++)
         Print("Цена ",bk[i].price," Объем ",bk[i].volume," Тип заявки ",bk[i].type);
    }
  }
//+------------------------------------------------------------------+


Первое что необходимо сделать это подписаться на стакан по конкретному символу. Делается это при старте советника функций MarketBookAdd("EURUSD").

Далее при создании советника необходимо добавить событие OnBookEvent. Это событие наступает при изменении в стакане. В него передается символ для которого произошли изменения в стакане.

MqlBookInfo bk[] объявляем массив особых структур. В него будем получать данные стакана. Подробности о структуре в справке.

bool res=MarketBookGet(symbol,bk); получаем данные стакана. Функция возвращает истину в случае успеха.

Далее в цикле выводим данные стакана на вкладку терминала Эксперты Print("Цена ",bk[i].price," Объем ",bk[i].volume," Тип заявки ",bk[i].type);

И в завершении отписываемся от стакана MarketBookRelease("EURUSD");

Как видите все довольно просто. Жду ваших вопросов.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения