Ошибочная генерация тиков при тестировании советника в MetaTrader4...

 

Добрый день участникам Форума. Столкнулся со следующей проблемой. Тестирую советника на дневном периоде (D1), используя наиболее точный метод на основе всех наименьших доступных таймфреймов для генерации каждого тика. Загружена история котировок за ноябрь и декабрь 2009 года начиная от минутной, заканчивая месячной, т.е. загружены данные по всем необходимым таймфреймам за указанный период. Таким образом, для генерации тиков используется минутные данные.

В процессе тестирования выяснилось, что относительно стоп-приказов имеет место их НЕИСПОЛНЕНИЕ. Начал разбираться. Использовал следующий блок кода в функции start() для отслеживания тиков за интересующий меня временной диапазон (5 ноября 2009 года):

if((Time[0] >= D'2009.11.05 00:00') && (Time[0] < D'2009.11.06 00:00'))
 Print(TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "/", Bid, "/", Ask);

в результате к своему удивлению обнаружил, что тики генерируются НАСТОЛЬКО ГРУБО, что такую последовательность вообще нельзя рассматривать в качестве тестовой. За весь день 5 ноября были сгенерированы лишь несколько сот тиков, попадающие в основном в интервал 4 часов утра (с 4:16 по 4:24). За остальные часы данного дня тиков просто ВООБЩЕ НЕ БЫЛО сгенерированно.

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

 

даже при грубой прикидке у вас должно было быть смоделировано 1440 тиков - если брать во внимание. что минутки для этого дня есть.

вот вторых смущает строка TimeCurrent(),TIME_DATE|TIME_SECONDS

А где TIME_MINUTES ?

Можете ли выложить принт журнала сюда?

 
Меня смущает в ваших постах слово "тик". Я произвожу подсчет тиков, с помощью своего индюка. У каждого брокера их количество разниЦА, но в день тиков набегает около нескольких тысяч вниз и вверх(ДЦ до 4 знаков после запятой). Может, вы производите подсчет баров. Тогда, баров в сутках 1440 штук, это в теории. Опять же с помощью индюка я вижу,что некоторых ДЦ умудряются терять до 10% минутных баров от общего числа за сутки и это на реале. Об истории вобще молчу - это фантастика.
 

Только сейчас обратил внимание, что в лог-файл в папке tester\logs попадают действительно все тики (записи описанной функции Print), Но в журнал самого тестера стратегий терминала MT4 попадают не все записи, часть данных пропущена. Это нормальное поведение журнала? Он что, отбрасывает записи если не успевает их отображать?!

Под тиком я понимаю каждое срабатывание функции start() эксперта, т.е. момент прихода новой котировки. В лог-файле действительно попадают все тики, но в журнале только выборочно. Может ли быть такое, что сам факт не попадания записи в журнал говорит о том, что механизм закрытия позиции по stop-loss или take-profit также может работать неправильно, с проскальзыванием?

А где TIME_MINUTES ?

Формат отображения TIME_SECONDS уже включает в себя минуты.

 
alger писал(а) >>

Только сейчас обратил внимание, что в лог-файл в папке tester\logs попадают действительно все тики (записи описанной функции Print), Но в журнал самого тестера стратегий терминала MT4 попадают не все записи, часть данных пропущена. Это нормальное поведение журнала? Он что, отбрасывает записи если не успевает их отображать?!

Под тиком я понимаю каждое срабатывание функции start() эксперта, т.е. момент прихода новой котировки. В лог-файле действительно попадают все тики, но в журнале только выборочно. Может ли быть такое, что сам факт не попадания записи в журнал говорит о том, что механизм закрытия позиции по stop-loss или take-profit также может работать неправильно, с проскальзыванием?

Вы правильно поняли, результат работы эксперта надо смотреть по содержимому файла.

Если в файле имеется запись, то это означает, что эксперт отработал соответствующий тик. Копайте логику эксперта, запустите его в режиме визуализации, накиньте на график используемые индикаторы и смотрите глазами, должен ли был открываться/закрываться ордер.

 

Да и зачем ставить тестеру такие "сложные" задачи? Выберите для тестирования ТФ поменьше, это не помешает Вам использовать данные старших ТФ....

 
alger >>:

Только сейчас обратил внимание, что в лог-файл в папке tester\logs попадают действительно все тики (записи описанной функции Print), Но в журнал самого тестера стратегий терминала MT4 попадают не все записи, часть данных пропущена. Это нормальное поведение журнала? Он что, отбрасывает записи если не успевает их отображать?!


Чтобы не тормозить тестирование массовым выводом посредством Print и подобных функций. Почитайте статью Ошибки начинающего трейдера при работе с клиентским терминалом MetaTrader 4:

Функция Print() печатает сообщение в журнал экспертов. Причём в журнал экспертов помещаются все сообщения функции. Параллельно происходит вывод сообщения во вкладку 'Эксперты' окна 'Терминал'. При массовом выводе сообщений для экономии времени и пространства терминал во вкладку 'Эксперты' выводит не все сообщения. При необходимости можно посмотреть любую выведенную функцией Print() строчку в логах в папке клиентского терминала '\MetaTrader 4\experts\logs\'.

 
Rosh >>:

Чтобы не тормозить тестирование массовым выводом посредством Print и подобных функций. Почитайте статью Ошибки начинающего трейдера при работе с клиентским терминалом MetaTrader 4:


Полезная информация, спасибо.