Не работает визуальный режим в тестере стратегий MT5 на Windows 11

 

Здравствуйте многоуважаемые коллеги!!! Не уверен, что правильно выбрал ветку для этой темы, прошу простить...

Проблема такая: Не работает визуальный режим в тестере стратегий если эксперт открывает отложенный ордер или позицию. Если ордеров нет, тогда визуальный режим работает, двигается график, отрисовываются графические элементы

Дело не в эксперте, пробовал в тестовом эксперте просто открыть позицию, больше ничего в нем нет. И вот если запустить этот эксперт в тестере, показывает что открылась позиция, эквити считается, НО график стоит на месте.

Прошу ваших советов.

У меня windows 11 pro, MT5 build 4864

 

Очень похоже на зацикливание эксперта. Так что проблема в коде. 

То, что работает онлайн ни о чем не говорит, ведь приход тиков и работа эксперта - разные потоки. Поток эксперта завис, а тики то все равно могут приходить. В тестере не так - там, пока эксперт не вернет исполнение тестеру, новые тики не придут.

 

Вот весь код:

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                  Copyright 2025, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh>

int numberOrder;

CTrade Trade;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   numberOrder = 0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(numberOrder == 0)
     {
      Trade.Buy(SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN), Symbol(), SymbolInfoDouble(Symbol(), SYMBOL_ASK), 0, 0, 0);
      numberOrder ++;
     }

  }
//+------------------------------------------------------------------+
 
Ihor Herasko #:

Очень похоже на зацикливание эксперта. Так что проблема в коде. 

То, что работает онлайн ни о чем не говорит, ведь приход тиков и работа эксперта - разные потоки. Поток эксперта завис, а тики то все равно могут приходить. В тестере не так - там, пока эксперт не вернет исполнение тестеру, новые тики не придут.

Вот сделал видео, для понимания происходящего:

 
Aleksandr Voronko #:

Вот сделал видео, для понимания происходящего:

1) добавь ChartRedraw() в OnTick()

2) первое открытие не стоит делать на первом-же тике :-) только спустя некоторое хоть небольшое время от старта советника.

просто ты открываешь сделки на каждом тике и сверх-оптимизированный тестер их не отрисовывает. А для ускорения ещё и котировки рисует с опозданием :-)

 
Maxim Kuznetsov #:

1) добавь ChartRedraw() в OnTick()

2) первое открытие не стоит делать на первом-же тике :-) только спустя некоторое хоть небольшое время от старта советника.

просто ты открываешь сделки на каждом тике и сверх-оптимизированный тестер их не отрисовывает. А для ускорения ещё и котировки рисует с опозданием :-)

Вот поменял код:

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                  Copyright 2025, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh>

int numberOrder;

CTrade Trade;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   numberOrder = 0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
   if(numberOrder == 1000)
     {
      Trade.Buy(SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN), Symbol(), SymbolInfoDouble(Symbol(), SYMBOL_ASK), 0, 0, 0);
     }
     if(numberOrder < 1001)
     {
     numberOrder++;
     }
ChartRedraw(0);
  }
//+------------------------------------------------------------------+

Какие, еще идеи будут?

 

Элементы управления тоже перестают работать.

 
Спасибо всем за участие, проблема разрешилась, поменял торговый инструмент. Терминал от bybit, тестирование не работает на крипто парах, на остальных инструментах работает.