Работают ли стаканные функции в тестере ?

 

Приветствую собравшихся. Я тут ради эксперимента, решил попробовать в кастомный символ запихать стакан в тестере. Можно ли подобное сделать ?


Написал проверочный код (TU - имя кастомного символа ранее созданного в котором уже есть минутные котировки).

//+------------------------------------------------------------------+
//|                                             TestCustomSymbol.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()
  {
//---
   if(!MarketBookAdd("TU"))
      Print(GetLastError());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   if(!MarketBookRelease("TU"))
      Print(GetLastError());

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   MqlBookInfo data[10];
   for(int i=0;i<10;i++)
     {
      MqlBookInfo item;
      item.price = i+1 + rand();
      item.type = ((i < 5) ? BOOK_TYPE_BUY : BOOK_TYPE_SELL);
      item.volume = 4;
      item.volume_real = 8;
      
      data[i] = item;
     }
   
   if(CustomBookAdd("TU", data) == -1)
      Print(GetLastError());
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnBookEvent(const string& symbol)
  {
   Print(symbol);
   if(symbol == "TU")
   {
      MqlBookInfo data[];
      MarketBookGet(symbol,data);
      
      int total = ArraySize(data);
      string to_disp;
      for(int i=0;i<total;i++)
        {
         to_disp += data[i].price + "\n";
        }
        
      Comment(to_disp);
   }

  }
//+------------------------------------------------------------------+


В итоге, если на график накинуть - работает, если в тестере запустить - нет. Возможно ли вообще заставить работать эту стыковку в тестере ? Имею ввиду CustomSymbolAdd.

 

Наверное, получится сделать по аналогии с Tester

В родном тестере МТ стакан не поддерживается.

Tester
Tester
  • www.mql5.com
Эта библиотека позволяет любой MT4-style советник запустить в визуальном Тестере. После компиляции запускаете советник на нужном Вам чарте и получаете окно визуального Тестера, где крутится Ваша ТС. В отличие от MT5-Тестера, данный визуальный Тестер работает не на Агенте, а в самом Терминале. Возможности Запуск и снятие индикаторов. Любое...
 
Andrey Khatimlianskii:

Наверное, получится сделать по аналогии с Tester

В родном тестере МТ стакан не поддерживается.

Попробую как время будет наверное либо протестить предложенный Вами вариант, либо напишу обертку что то вроде CustomOnBookEvent.


Благодарю.