Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике - страница 9

 

b2760. Отладчик показывает разные значения одного и того же.


 
обновился на 
2021.01.22 14:03:18.512 Terminal        MetaTrader 5 x64 build 2760 started for MetaQuotes Software Corp.
2021.01.22 14:03:18.512 Terminal        Windows 10 build 19042, AMD Ryzen 7 3700X 8-Core, 22 / 31 Gb memory, 34 / 367 Gb disk, IE 11, Admin, GMT+9

и сразу ошибка
Профилирование на исторических данных
Internal compiler error NL_Multi.mq5

обычная компиляция проходит

 

b2760, критический баг. Только по одному символу чарты (старые и новые) не обновляются, OnTick не вызывается. В Обзоре рынка все отлично.

На других Терминалах с этим же сервером чарты в порядке.

Проблема исчезла только после релогина. В логах никаких намеков на неладное.


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

 
2021.01.22 10:13:15.316 Terminal        MetaTrader 5 x64 build 2761 started for MetaQuotes Software Corp.
2021.01.22 10:13:15.316 Terminal        Windows 10 build 19042, Intel Core i7-9750H  @ 2.60GHz, 24 / 31 Gb memory, 877 / 947 Gb disk, IE 11, UAC, GMT+2
2021.01.22 10:13:15.316 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

Код:

//+------------------------------------------------------------------+
//|                                                     Expert 1.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int a=1,b=2,c=3;
   if(a==1)
      if(b==2)
         if(c==3)
           {
            int d=0;
           }
  }
//+------------------------------------------------------------------+


Ставлю точку останова на строке 'if(a==1)' и на следующем шаге курсор выходит из OnTick даже не пытаясь попасть на 'if(b==2)'


Видео:

Видео

Файлы:
Expert_1.mq5  2 kb
 
Компиляция всех открытых файлов Ctrl + F7 работает со второго нажатия. Ожидалось что с первого.
 

В 2761 проблема с отладчиком (неправильное отображение значений после присвоения значения) остаётся.

Так же не работает профилирование.

Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике
Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике
  • 2021.01.16
  • www.mql5.com
В пятницу 15 января 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Vladimir Karputov:

Код:


Ставлю точку останова на строке 'if(a==1)' и на следующем шаге курсор выходит из OnTick даже не пытаясь попасть на 'if(b==2)'


Видео:


Скорее всего весь код вырезается оптимизатором.

Код то бесполезный.

 
Renat Fatkhullin:

Скорее всего весь код вырезается оптимизатором.

Код то бесполезный.

Вряд-ли вырезается. просто не останавливается на проверках и простейшем вычислении. Я чуток изменил код

  int a=1, b=2, c=3, d = 0;
  if(a==1)
    if(b==2)
      if(c==3)
       {
        d=a+b+c;
       }

и отладка так-же перескочила всё, но результат получен.


 
Alexey Viktorov:

Вряд-ли вырезается. просто не останавливается на проверках и простейшем вычислении. Я чуток изменил код

и отладка так-же перескочила всё, но результат получен.


Вырезается, это же предвычислимое на уровне компиляции константное выражение.
 
Renat Fatkhullin:

Скорее всего весь код вырезается оптимизатором.

Код то бесполезный.

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

   if(rates[m_bar_current+2].low<ma[m_bar_current+2] && rates[m_bar_current+2].high>ma[m_bar_current+2])
      if(rates[m_bar_current+1].low>ma[m_bar_current+1])
         if(rates[m_bar_current].low>ma[m_bar_current])
           {
            int d=0;
           }


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

По моему сильно переоптимизировали оптимизатор - иногда и в более сложные конструкции (где есть некоторые вычисления) не заходит курсор. Причем плавающее. Мучался полдня сегодня.

Документация по MQL5: Общие функции / DebugBreak
Документация по MQL5: Общие функции / DebugBreak
  • www.mql5.com
DebugBreak - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: