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); } }
Удачи в написании экспертов. Я потратил на разбор этой ситуации сутки (((
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день. Столкнулся с проблемой что получаю разные данные при одиночном прогоне и визуальном.
Потиковую обработку применял. #property tester_everytick_calculate
Прилагаю скрины на тесте Сбербанка.