MetaTester 5 forced to stop

 

Неделю писал сложный индикатор, который отрисовывает Zig-Zag по определённому алгоритму. Дописал. Обрадовался. В истории отрисовывается чётко. Запускаю в тестере.. и вижу, что год отрисовал тоже как нужно. В реале тоже самое. Но попадаются места, где работа индикатора прекращается и в журнале в конце вижу такие строки:

2018.10.06 13:22:38.297 USDJPY,Daily: 17097 ticks, 3 bars generated. Environment synchronized in 0:00:00.266. Test passed in 0:04:29.453 (including ticks preprocessing 0:00:00.016).
2018.10.06 13:22:38.297 USDJPY,Daily: total time from login to stop testing 0:04:29.719 (including 0:00:00.266 for history data synchronization)
2018.10.06 13:22:38.297 337 Mb memory used including 0.47 Mb of history data, 64 Mb of tick data
2018.10.06 13:22:38.297 log file "F:\Soft portable\Terminals\MT_X\Alpari MT5\Tester\Agent-127.0.0.1-3000\logs\20181006.log" written
2018.10.06 13:22:38.411 MetaTester 5 forced to stop

С чем это может быть связано. Визуально ситуация в момент возникновения ошибки типичная и подобные случае уже были ранее на графике. Все ситуации прописаны в коде. Ошибок платформа не выдаёт. Просто пишет то, что я выше показал и ничего более. Тут нужно либо быть телепатом, либо ещё как-то выкручиваться.

Я распринтовал всю цепочку, после того дня когда происходит ошибка. Вообще выбрал в тестере 1 этот день и по нему прогнал. По всей цепочке прошёлся в отладчике нажимая F11, и, везде где отрабатывается код ошибок нет. Как тогда тестировал код и отлавливать такие ошибки, о причине которых ни платформа, ни сам тестер не уведомляет пользователя? Ведь если есть какие-то catch'еры ошибок, как в любом объектно-ориентированном языке программирования, в момент возникновения ошибки должна вернутся ошибка, иначе.. на чьей стороне косяк вопрос.

Ещё я заметил пока нажимал F11, что ошибка возникает в функции OnCalculate() перед выделенной жёлтеньким цветом строкой:

//==================================================================================================================================================================================
// Custom indicator iteration function. ============================================================================================================================================
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[]) {
//---
  myPrint(__FUNCTION__, "err = " + (string)_LastError, 1);
  int limit = recalcIndex(rates_total, prev_calculated);    // Определим первый расчетный бар
//  limit = (limit > 100) ? 100 : limit;
  myPrint(__FUNCTION__, "err = " + (string)_LastError, 1);
  ZigZag(limit);                                            // Расчет значений индикатора
  myPrint(__FUNCTION__, "err = " + (string)_LastError, 1);
//--- return value of prev_calculated for next call
  return rates_total;
}
 
2018.10.06 13:22:38.297 log file "F:\Soft portable\Terminals\MT_X\Alpari MT5\Tester\Agent-127.0.0.1-3000\logs\20181006.log" written

Прикрепите пожалуйста этот файл к теме.