Тестер стратегий для мультивалютного советника

 

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

Из-за этого результаты советник выдает разные, в зависимости от символа запуска :) При этом в логах идет подгрузка истории...

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

Для получения котировок использую CSymbolInfo с предварительным вызовом RefreshRates()

 

Вот пример запуска EURJPY на родном и чужом символе. Как видите, цены открытия ордеров в один и тот же момент разные.



 

Проблема в вашей проверке нового бара. Она же происходит по инструменту, на котором работает советник, правда?

Нужно либо ждать появления бара на всех используемых инструментах (далеко не всегда первый тик нового бара приходит одновременно), либо определять новый бар по TimeCurrent, а в анализе делать поправку на то, появился 0-й бар на инструменте или нет (если появился, индекс последнего сфомированного бара будет равен 1, а если нет, то 0).

 
Andrey Khatimlianskii:

Проблема в вашей проверке нового бара. Она же происходит по инструменту, на котором работает советник, правда?

Нужно либо ждать появления бара на всех используемых инструментах (далеко не всегда первый тик нового бара приходит одновременно), либо определять новый бар по TimeCurrent, а в анализе делать поправку на то, появился 0-й бар на инструменте или нет (если появился, индекс последнего сфомированного бара будет равен 1, а если нет, то 0).

То есть, проблема в том, что новая цена в 8:00:00 для EURJPY еще не пришла, если работать на OnTick другой валюты?

Я не смотрю на цену баров, я беру текущую цену для символа. И как видите, в один и тот де момент времени она существенно отличается.
 
Andrey Pogoreltsev:
То есть, проблема в том, что новая цена в 8:00:00 для EURJPY еще не пришла, если работать на OnTick другой валюты?

Я не смотрю на цену баров, я беру текущую цену для символа. И как видите, в один и тот де момент времени она существенно отличается.

Не исключаю, что в Тестере есть ошибки. Однако, уверен, что Вы не понимаете, как все работает.

Чтобы было совпадение, Вы должны создать мультивалютной OnTick. И реагировать только на тот OnTick, что по торгуемой паре.


Либо же всю логику перенести в OnTimer и отказаться от OnTick. Пока не видно никаких ошибок в Ваших сообщениях.

 
fxsaber:

Не исключаю, что в Тестере есть ошибки. Однако, уверен, что Вы не понимаете, как все работает.

Чтобы было совпадение, Вы должны создать мультивалютной OnTick. И реагировать только на тот OnTick, что по торгуемой паре.


Либо же всю логику перенести в OnTimer и отказаться от OnTick. Пока не видно никаких ошибок в Ваших сообщениях.

О, расскажите как создать мультивалютный OnTick?  Я действительно не нашел такой возможности:)

OnTimer пробовал. Не помогло. Для наглядности создам сегодня голый советник и выведу цены по инструменту в тот либо иной момент времени на разных запущенных парах
 

Andrey Pogoreltsev:
О, расскажите как создать мультивалютный OnTick?  Я действительно не нашел такой возможности:)

Поищите, выкладывали.

OnTimer пробовал. Не помогло. Для наглядности создам сегодня голый советник и выведу цены по инструменту в тот либо иной момент времени на разных запущенных парах

Лучше в файл пишите тики из OnTimer. Сразу станет понятно, где различия.


ЗЫ https://www.mql5.com/ru/forum/170952/page68#comment_6406566

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.01.28
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
fxsaber:

Поищите, выкладывали.

Лучше в файл пишите тики из OnTimer. Сразу станет понятно, где различия.


ЗЫ https://www.mql5.com/ru/forum/170952/page68#comment_6406566

Спасибо!
 
Andrey Pogoreltsev:
То есть, проблема в том, что новая цена в 8:00:00 для EURJPY еще не пришла, если работать на OnTick другой валюты?

Я не смотрю на цену баров, я беру текущую цену для символа. И как видите, в один и тот де момент времени она существенно отличается.
По какому событию у вас включается анализ и происходит торговля? И какие данные при этом анализируются? 
Если по времени, то таймер, взведенный из ОнИнит, помог бы. Значит, есть что-то еще. 
Нужно больше деталей, гадать смысла нет. 
 
Спасибо за ссылку на статью, довольно информативно раскрывает суть проблемы.
На сколько я понял из статьи, корень всей проблемы в МТ5, является изначальная не корректная логика синхронизации тиков по времени, 
из за удаления не пришедших тиков из истории временной шкалы. То есть все не пришедшие тики урезаются по шкале времени.
Что и приводит к такому излишеству, со стороны программиста искать пути обхода данной проблемы.
А в большей степени, возможное проявление прогамных багов самого терминала.
Скорее всего разработчикам необходимо сохранять и отображать "не пришедший тик", меткой времени. 
То есть если время изменилось, а изменения цены ещё не было, то всё равно сохраняется предыдущее значение цены с новой меткой времени.
Таким образом, всегда все тики будут точно синхронизированы по времени.
Думаю много проблем отпадут сами собой при такой реализации сохранения тиков.
И наконец у разработчиков появиться возможность из коробки реализовать тиковые графики!
 
Roman:
Спасибо за ссылку на статью, довольно информативно раскрывает суть проблемы.
На сколько я понял из статьи, корень всей проблемы в МТ5, является изначальная не корректная логика синхронизации тиков по времени, 
из за удаления не пришедших тиков из истории временной шкалы. То есть все не пришедшие тики урезаются по шкале времени.
Что и приводит к такому излишеству, со стороны программиста искать пути обхода данной проблемы.
А в большей степени, возможное проявление прогамных багов самого терминала.
Скорее всего разработчикам необходимо сохранять и отображать "не пришедший тик", меткой времени. 
То есть если время изменилось, а изменения цены ещё не было, то всё равно сохраняется предыдущее значение цены с новой меткой времени.
Таким образом, всегда все тики будут точно синхронизированы по времени.
Думаю много проблем отпадут сами собой при такой реализации сохранения тиков.
И наконец у разработчиков появиться возможность из коробки реализовать тиковые графики!

Не всем нужно, чтобы ОнТик запускался на тиках всех тестируемых инструментов.

Ну а реализовать можно все что угодно уже сейчас.

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