Помогите понять парадокс.

 

Демонстрирую работу такого советника:

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
int NumTick=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   NumTick++;
   Print("NumTick=",NumTick);
  }
//+------------------------------------------------------------------+

 Запускаем тест по тикам на короткое время, останавливаем и смотрим журнал:


Всё работает как часы.

А теперь добавляем в эксперт ещё один Print() .

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   NumTick++;
   Print("Номер тика:");
   Print("NumTick=",NumTick);
  }
//+------------------------------------------------------------------+

Снова запускаем  на короткое время тест, останавливаем и смотрим журнал. ОБАНА!!! 



Объясните, пожалуйста, что я не понимаю, где мой пробел в знаниях о работе МТ4 ? Бильд 1220.

 
Не надо смотреть в закладке "Журнал". Откройте лог файл и там всё будет видно.
 
Alexey Viktorov:
Не надо смотреть в закладке "Журнал". Откройте лог файл и там всё будет видно.

Так это же неудобно лазить в лог файл, почему бы не дать нормально информацию в журнале. После 60 тика же нормально печатается в журнале, а раньше что нельзя? Религия не позволяет?)

 

@khorosh

Может так?

Print("NumTick=",IntegerToString(NumTick));
 
khorosh:

Так это же неудобно лазить в лог файл, почему бы не дать нормально информацию в журнале. После 60 тика же нормально печатается в журнале, а раньше что нельзя? Религия не позволяет?)

Прогоните чуть подольше и 60ых не увидите. Мне не мешает.

 
Сергей Таболин:

@khorosh

Может так?

Не поможет.

 
khorosh:

Не поможет.

поможет

принты буферизируются, что в тестере, что в терминале, если "буфер принтов" переполнен, то терминал проглотит часть принтов, но как указал Алексей, смотрите файл лога, там не будет пропусков принтов

UPD: вот обсуждали похожий вопрос, там про терминал, но суть одна -  при переполнении очереди сообщений не будет вывода в окно сообщений  экспертов  https://www.mql5.com/ru/forum/1111/page2463#comment_11718672

 
Igor Makanu:

поможет

принты буферизируются, что в тестере, что в терминале, если "буфер принтов" переполнен, то терминал проглотит часть принтов, но как указал Алексей, смотрите файл лога, там не будет пропусков принтов

UPD: вот обсуждали похожий вопрос, там про терминал, но суть одна -  при переполнении очереди сообщений не будет вывода в окно сообщений  экспертов  https://www.mql5.com/ru/forum/1111/page2463#comment_11718672

 А когда  буфер принтов сбрасывается? И почему он после 1 тика переполняется, а после 60 тика не переполняется?

 
khorosh:

 А когда  буфер принтов сбрасывается?

нет информации

ходила легенда мол не более 250 принтов за один раз.... но это не правда, я думаю от характеристик ПК зависит, насколько быстро происходит доступ к диску и насколько производителен ПК, чтобы обрабатывать работу и текущей MQL-программы и работу самого терминала 

в тестере не знаю как обойти, в терминале работает если ставить Sleep() - этим даем возможность терминалу обработать очередь принтов

 
Igor Makanu:

нет информации

ходила легенда мол не более 250 принтов за один раз.... но это не правда

в тестере не знаю как обойти, в терминале работает если ставить Sleep() - этим даем возможность терминалу обработать очередь принтов

И почему он после 1 тика переполняется, а после 60 тика не переполняется?

 
khorosh:

И почему он после 1 тика переполняется, а после 60 тика не переполняется?

дополнил сообщение


там не в кол-ве, а в производительности ПК зависимость, у Вас может и 10 тиков обработает вывод, а у меня будет только по 1 тику

Причина обращения: