Проблема с ТЕСТЕТРОМ после обновления MT5 до билда 1340

 

Коллеги, вот какая возникла проблема. После обновления МТ5 до билда 1340 стало невозможно сравнивать ранее протестированные советники. Связано это с вот этим изменением:

Tester: Изменен алгоритм срабатывания и исполнения отложенных и SL/TP ордеров для более корректного тестирования. Расширены возможности визуального тестирования.
Что изменилось для биржевых инструментов
На реальном рынке для биржевых инструментов построение графиков и срабатывание стоп-ордеров осуществляется по ценам последней сделки (Last). Срабатывание лимитных ордеров осуществляется по ценам Bid/Ask. При этом исполнение всех видов ордеров всегда осуществляется по текущим рыночным ценам Bid/Ask. В тестер стратегий внесены изменения для более точного соответствия реальным условиям:
 Было
Стало
СрабатываниеВсе виды отложенных ордеров и SL/TP по Bid/Ask
Лимитные ордера по Bid/Ask
Стоп, стоп-лимитные и SL/TP ордера по Last
ИсполнениеВсе виды отложенных ордеров и SL/TP по цене, заявленной в ордере
Все виды отложенных ордеров и SL/TP по рыночным ценам Bid/Ask на момент срабатывания

Рассмотрим пример на инструменте Si-6.16. При текущих ценах Bid=72570, Ask=72572, Last=72552 был выставлен ордер Buy Stop с ценой срабатывания 72580. В ценовом потоке мы получили новые текущие цены:

    • Bid=72588
    • Ask=72590
    • Last=72580


На биржевых инструментах триггером для срабатывания стоп-ордеров является цена Last. Поэтому, поступление в потоке цены Last=72580 привело к активации ордера Buy Stop. Ранее именно эта цена 72580 была бы использована для исполнения данного ордера. Такое поведение было некорректным, поскольку цены Ask=72580 для исполнения операции на покупку на рынке нет. 

 Идея разработчиков очень грамотная, но имеет два существенных аспекта:

1. Предполагается, что вы имеете дело с очень хорошей историей по инструменту (качество близкое к 100%).

2. Это важно только для малых тайм фреймов (до 5 минут) и при низко ликвидном рынке. 

Мои советники работают на тайм фреймах от 30 минут и использует только ликвидные инструменты, такие как Фьючерс РТС и т.п. Однако тестирую и оптимизирую его я их на промежутка от 2-х лет. Понятно, что для такого теста приходится использовать склейку. Я прекрасно отдаю себе отчет в том, любой бэк тест имеет погрешность, однако в рамках тестирования на таких промежутках потери по-моим прикидкам должны составлять не более 5% процентов от потенциальных доходностей. Это нестрашно, поскольку все мы в данном случае имеем дело с сигмами (месяц, год) куда как большими чем эта погрешность.

Покажу наглядно.

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

Скрин 1. Торговля по стохастику 

На втором приведена сделка которую совершает этот же робот и выставляет SL

Сделка 14 стохастику со стопом 

Здесь сделка закрывается по 137420

Закрытие по SL 

Исполнен на 50 пунктов выше SL. Кажется, что это нормально, но подождите.

Вот стакан цен

Стакан РТС 

РТС редко имеет больше 20 пунктов спред.

Возможно это еще не самый удачный пример и кажется что погрешность невелика. Но вот Вам пример по тикету  34 выход по SL Тикет 35

Пример другой

Таким образом спред 190 пунктов. Такого не бывает на фьюче по РТС.

Конечно, проблема заключается вот в этом: 

 Качество истории

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

Поэтому уважаемые разработчики, не могли бы Вы сделать следующее: Во-первых: Оставить вашу идею в качестве возможно варианта тестирования и вернуть старый механизм. Я вижу однозначную пользу для тестов на малых тайм фреймах. Но при посредственной истории такой подход вносит ошибку, но никак не помогает в работе. Во-вторых, у меня оттестировано порядка 10 разных роботов на разных фин инструментах (и думаю таких много как я), проблема заключается в том, что теперь нет возможности никаким образом сопоставить то что уже сделано, с новым принципом. А с учетом ошибки описанной мной выше - это опасно.

Из опыта, скажу, что на моей практике торговли Исполнения SL конечно немного отличаются от расчетных на фьюче РТС но это всегда не более 20 пунктов. 

 

Что Вы скажете по этому поводу?

https://www.mql5.com/ru/forum/82744

Как обойти баг тестера МТ5
Как обойти баг тестера МТ5
  • отзывов: 3
  • www.mql5.com
Как сделать так, чтобы сделки в тестере совершались в между хай и лоу?, а не по не существовавшей цене...
 
Slawa:

Что Вы скажете по этому поводу?

https://www.mql5.com/ru/forum/82744

Да, я прочёл эту тему. Но там речь идёт косвенно о той проблеме, что я написал. Вопрос только в том, что необходимо разроботчикам оставить оба метода. Они полезны для разных случаев.
 
AlBacherov:
Да, я прочёл эту тему. Но там речь идёт косвенно о той проблеме, что я написал. Вопрос только в том, что необходимо разроботчикам оставить оба метода. Они полезны для разных случаев.
Как Вы предлагаете использовать тот или иной метод?
 
В этой ситуации непонятно, откуда взяты Bid и Ask.  Если они рассчитаны, исходя из среднего значения спреда за указанный бар, записанного в склейке, тогда вопрос не к MQL, а к создателю этой склейки (почему там такой большой спред)
 

Если Вы тестируете на реальных тиках, то бид и аск берутся из базы тиков. При этом на графике визуального тестирования рисуются линии low_bid и high_ask, чтобы можно было видеть границы спреда.

Если Вы тестируете на "every tick" то биды генерируются на основе минутного бара, а аск - это бид плюс спред, спред в течение минуты не изменяется. Значение спреда для определённого бара можно посмотртеь в окне данных

 
Slawa:
Если Вы тестируете на "every tick" то биды генерируются на основе минутного бара, а аск - это бид плюс спред, спред в течение минуты не изменяется. Значение спреда для определённого бара можно посмотртеь в окне данных

Кстати, а не могли бы уточнить, в этой ситуации биды у вас фактически равны ластам?

 
Alexey Navoykov:

Кстати, а не могли бы уточнить, в этой ситуации биды у вас фактически равны ластам?

Да. В этой ситуации биды равны ластам
 
Alexey Navoykov:
В этой ситуации непонятно, откуда взяты Bid и Ask.  Если они рассчитаны, исходя из среднего значения спреда за указанный бар, записанного в склейке, тогда вопрос не к MQL, а к создателю этой склейки (почему там такой большой спред)
1. Проблема в том, что я не знаю как в МТ5 подгрузить свою историю. То что мне удалось найти на просторах инета, говорило о том что этого сделать нельзя. История по склейки у меня подгружается из БКС. Я бы с радостью сделал бы свою склейку если бы знал как.
2. Я написал, что дело явно в качестве истории. Тогда моё предложение в двойне актуально. Если поставщик истории халтурит, то у меня как пользователя должен быть выбор метода срабатывания SL. Или же возможность создать свою историю на базе например других контрактов. Почему бы не сделать тогда какой-нибудь импорт/экспорт данных в какой-нибудь стандартный формат. Чтобы их можно редактировать. Тогда не было бы зависимости от поставщика данных и не было бы критично при нововведениях. Ошибку всегда можно добавить в модель сравнив реальный результат робота с Бэк-тестом на том же интервале.
3. Будут ли злоупотребления? Вероятно будут, шарлатанов везде хватает. Но бороться с этим такой жёсткой конструкцией дело плохое. Это как закон принимать о коллекторах, вместо того чтобы заставить нашу доблестную полицию работать и привлекать людей по уголовным статьям. Показать пару сюжетов о том что людей на 10 лет посадили за угрозу жизни и здоровью по УК РФ и сразу коллекторы приумолкнут. Но это не имеет отношение к нашей ситуации.
 
AlBacherov:
Проблема в том, что я не знаю как в МТ5 подгрузить свою историю. То что мне удалось найти на просторах инета, говорило о том что этого сделать нельзя. История по склейки у меня подгружается из БКС. Я бы с радостью сделал бы свою склейку если бы знал как.
Склейка фьючерсов в MetaTrader 5
Причина обращения: