Тестер стратегий(визуальный) и одиночный прогон с одними и те ми же параметрами считают по разному.

 

Добрый день. Столкнулся с проблемой что получаю разные данные при одиночном прогоне и визуальном. 

Потиковую обработку применял.  #property tester_everytick_calculate

Прилагаю скрины на тесте Сбербанка.

Файлы:
 
Aleksandr Dziuba:

Добрый день. Столкнулся с проблемой что получаю разные данные при одиночном прогоне и визуальном. 

Потиковую обработку применял.  #property tester_everytick_calculate

Прилагаю скрины на тесте Сбербанка.

Так. Проблема была в том что для оптимизации вычислений тестер выкидывает обращение к индикатору до его чтения.

И если Вы хотите сэкономить время вычисления скрипта или эксперта и пишете процедуру 

   if(BarsCalculated(BAFhandle) == PrevBarCalc)
      return(false);
   PrevBarCalc = BarsCalculated(BAFhandle);

то при тестировании ВЫ всегда получите предыдущий результат.

Поэтому пришлось вставить костыль. Записываю одно значение буффера.

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Эта затычка нужна для того что бы тестер всегда обращался к индикатору.
   if(MQLInfoInteger(MQL_TESTER) == 1 || MQLInfoInteger(MQL_OPTIMIZATION) == 1)
     {
      copied=CopyBuffer(BAFhandle,1,1,2,BAF1);
      if(copied<=0)
        {
         Print("Ошибка копирования буфера BAF1");
         return(false);
        }
     }

Удачи в написании экспертов. Я потратил на разбор этой ситуации сутки (((

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