Тестер MT4 – выявляем проблемы...

 
Вчера, заметив подозрительную работу генератора историии MT4 в режиме «все тики», решил проверить, что же выдает тестер в качестве «истории».

Набросал элементарный код, сохраняющий значения приходящих тиков в файл (в качестве тиковых данных использовл iClose(NULL,0,0).) и прогнал советника на H4 в режиме «все тики» на периоде с 11.01.2006 по 13.01.2006.

Открыл полученный .csv файл, набросил диаграммы и попробовал сравнить полученные графики с 5-ти минутной историей котировок за тот-же период.

Вначале откроем 5-ти минутную историю. 11 января 2006 года начинается от вертикальной пунктирной линии слева и заканчивается такой же линией справа.



Смотрим на данные полученные из тестера.. и невооруженным глазом замечаем, что, хотя картинки в целом похожи, есть существенные отличия.

Сделаем скидку на то, что тестер генерирует котировки неравномерно (плотность потока данных непостоянна) во времени. Из-за этого некоторые участки на втором графике будут шире или уже чем соответствующие участки на 5-ти мтнутной истории.



Теперь смотрим данные за 12.01.2006. Сначала на M5 историю.



Потом на данные от тестера...



И не наблюдаем ничего общего с реальным ценовым рядом. Модель, получается, не соответствует данным, на которых она основывается.

С 13-м января та же история...







Попробую предположить вероятные причины, по которым имеется сегодняшняя картина:

- программисты перестарались в стремлении сделать моделирование максимально недетерминированным и «реально» похожим на случайный процесс, в результате оно не соответствует действительности. В терминах торговли – цена, ушедшая на 2-3 фигуры, никогда не вернется обратно в тот-же день или сессию.

- возможно, после обнаружения проблемы, ее сочли «выгодной» поскольку она «способствует» написанию «Мой-Первый-Грааль» экспертов и, таким образом привлечению/поощрению новых системостроителей. Однако, спустя время, люди начинают понимать суть вешей, и эта «особенность» начинает вызывать ничего кроме раздражнения. Очень хочется верить, что это не настоящая причина.

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


Если утверждается, что генерирование в режиме «все тики» происходит на основе данных всех младших таймфреймов – значит графики должны совпадать. А поскольку они не совпадают, значит нужно решать проблему.

В этой же связи в сети можно встретить немалое количество скриптов разных авторов, самостоятельно генерирующих историю и таким образом пытающихся решить эту проблему тестера.

В промышленном программировании для коммерческих продуктов (пишущихся не на коленке) существуют системы менеджмента качества, включающие процедуры изменения продукта/функциональности в процессе тестирования, в некоторых системах это - Change Requests.

Итак
Change Request
Заголовок: история генерируемая режиме «все тики» отличается от реальной
Описание: в режме тестирования «все тики», данные генерируемые тестером не совпадают с историческими, при условии что имеются данные на всех меньших таймфреймах. Исправьте ситуацию.

И еще один...

Change Request
Заголовок: bug-report: critical error в режиме визуального тестирования
Описание: Если в процессе визуального тестирования попытаться закрыть окно, где идет тестирование, не останавливая процесса – возникает ошибка.




Дополнительно:
- код, собирающий данные.
- файл .xls с данными от тестера и диаграммами
- отчет по торговле, эксплуатирующей данную проблему


Может показаться что статья написана с некоторым эмоциональным оттенком, но это не так.

Парни из Metaquotes, я восхищен вашим продуктом, вашей работой и трудом, который вы вложили и продолжаете вкладывать в MT4. А ваш директор Ренат, который находит время просматривать форумы, оперативно реагировать на конструктивные предложения и критику, превосходно разбирается в технической стороне продукта, продвигает платформу и инициативы такие как чемпионат - такой человек заслуживает самых высоких профессиональных оценок и похвалы.

Это ваши долгосрочные и надежные инвестиции. Так держать!

RCEED
Файлы:
 
rceed писал (а):

И вот еще на последок...

Change Request
Заголовок: bug-report: critical error в режиме визуального тестирования
Описание: Если в процессе визуального тестирования попытаться закрыть окно, где идет тестирование, не останавливая процесса – возникает ошибка.

Попробовал закрыть окно визуального тестирования, не останавливая процесса тестирования - у меня всё закрывается без ошибки.
 
Что-то сомнительно. Скорее, какая-нибудь методологическая ошибка, например, "дыры" в тиковой истории, или вообще не те данные затесались.  
 
А какие данные М1 использовались? Импортировались ли они извне из других источников или они родные? Я сегодня самостоятельно все перепроверю и опубликую отчет со скриншотами и экселевскими таблицами.

По поводу падения на кнопке закрытия графика визуализации - эту ошибку мы уже исправили 19 сентября. Скачайте, пожалуйста, обновленный дистрибутив по ссылке: http://www.metatrader4.com/files/mt4setup.exe
 
Я самостоятельно проверил и вот что получилось.
  • 11 января 2006 года, тест EURUSD H4 с потиковым моделированием, истории М1 нет, 3 картинки:

    1. Оригинал H4 с подсвеченным фоном и наложенным красным SMA(1) чтобы показать общее движение



    2. Тоже оригинал H1 за тот же период, тоже подсвеченый:



    3. Тиковые данные цены Close из тестера, постоены в экселе:



    Что характерно - тиковый поток очень ровный, без разрывов, которые есть на тиковых графиках rceed. Откуда у него разрывы и резкие скачки?
    В приведенном мною тиковом графике (из тестера) практически идеальное совпадение смоделированных тиков и движения цен 11 числа.

  • 12 января 2006 года, тест EURUSD H4 с потиковым моделированием, истории М1 нет, снова 3 картинки:

    1. Оригинал H4 с подсвеченным фоном и наложенным красным SMA(1) чтобы показать общее движение



    2. Тоже оригинал H1 за тот же период, тоже подсвеченый:



    3. Тиковые данные цены Close из тестера, постоены в экселе:



    Снова сравниваем с тем, что опубликовал rceed и задаем вопрос - почему в моем случае все чисто, ровно и полностью соответствует реальному движению, а у rceed идут сплошные разрывы и график слабо похож на оригинальный график?
 
Ответ очень прост:

Нельзя забывать про качество и абсолютную точность импортируемых данных. В данном случае скорее всего rceed импортировал откуда-то мелкие таймфреймы, не проверил их и не привел в соответствие чарты более крупных таймфреймов. В результате тестер использовал наименьше таймфреймы с ошибочными данными и поэтому выдал такие графики.

Ни один источник графиков не имеет никаких гарантий качества без вдумчивой зачистки, нормализации и перестройки всех таймфреймов.

Именно поэтому мы скоро выпускаем официальный и бесплатный сервис MetaTrader History Center, который будет предоставлять глубокую, проверенную и нормализованную историю М1 чартов за много лет. Если этого мы не сделаем, то и дальше будут такие вот случаи со смешением котировок и последующим "выявлением проблем".
 
Renat писал (а):
Ответ очень прост:

Нельзя забывать про качество и абсолютную точность импортируемых данных. В данном случае скорее всего rceed импортировал откуда-то мелкие таймфреймы, не проверил их и не привел в соответствие чарты более крупных таймфреймов. В результате тестер использовал наименьше таймфреймы с ошибочными данными и поэтому выдал такие графики.

Ни один источник графиков не имеет никаких гарантий качества без вдумчивой зачистки, нормализации и перестройки всех таймфреймов.

Именно поэтому мы скоро выпускаем официальный и бесплатный сервис MetaTrader History Center, который будет предоставлять глубокую, проверенную и нормализованную историю М1 чартов за много лет. Если этого мы не сделаем, то и дальше будут такие вот случаи со смешением котировок и последующим "выявлением проблем".
Спасибо за оперативность и за то, что все проверили! Согласен с анализом, действительно, нашел у себя "дырку" в минутных данных, которой нет ни на 5-ти минутах, ни на старших таймфреймах. В свою защиту могу лишь сказать, что 5-ти минутные данные корректные и тестер мог бы использовать их. Но такой динамический выбор (переключение) подходящего таймфрейма в случае отсутствия данных, насколько я понимаю, потребует определенных изменений в алгоритме генератора.

вероятно, тему нужно закрыть или переименовать как-то..

Еще раз спасибо!

С уважением,
RCEED


 
Если есть период меньше М5, то именно он и будет использоваться. Поэтому генератор и игнорировал достаточно хорошую историю М5, а использовал некорректный М1.
 
А нельзя ли как-нибудь убавить отимистичности тестеру? Поясню. .. Притестирование в режиме все тики тестер, в лучшем случае генерит последовательность на основе минуток. Если движение было сильное, и бары на минутках весьма значимы, получается следущее:



А как результат вот такая тестерная радость:



Глядя на график можно ожидать таких результатов? Мне кажется врядли. Может стоит изменить алгоритм генерации тиков в случае сильных движений? Ну не скачет так цена в действительности даже в случае сильного новостного движения, которое здесь явно было. Тестеру это пойдет только пользу. Спасибо.
 
Да, на текущий момент мы как раз решаем вопрос с быстрым и "рваным" проходом гепов в тестере торговых стратегий.
Причина обращения: