Как проводить мультивалютное тестирование в режиме "все тики"?

 

Есть функция OnTick(). Она запускается с приходом нового тика текущего инструмента. Но что делать если нужно потиково вызывать эксперта на других валютах? Допустим эксперт работает на EURUSD и GBPUSD. Закреплен эксперт на EURUSD. Потиковый запуск происходит только при обновлении EURUSD.  Но нам нужно запускать эксперта с приходом нового тика на GBPUSD, а как это сделать, если эксперт получает тики от EURUSD, а не от GBPUSD?

Использовать SymbolInfoTick, запрятанную в OnTimer, вызываемую ежесекундно? Думаю это плохой вариант.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Только через таймер.

 
Renat:
Только через таймер.

Ну не любят у наст таймер, не любят...
 
Это решение более менее работает на валютах, рынки которых открыты пять дней в неделю, 24 часа в сутки. А что делать если надо торговать скажем фьчерсом на SP500, индексом FTSE-100 и EURUSD? Большую часть суток биржи будут не работать. А я должен вызывать таймер каждую секунду, зная что рынки все равно не работают. Как-то некрасиво и глупо получается.
 
C-4:
Это решение более менее работает на валютах, рынки которых открыты пять дней в неделю, 24 часа в сутки. А что делать если надо торговать скажем фьчерсом на SP500, индексом FTSE-100 и EURUSD? Большую часть суток биржи будут не работать. А я должен вызывать таймер каждую секунду, зная что рынки все равно не работают. Как-то некрасиво и глупо получается.

Дык во время "отыдыха" период таймера можно и изменить...

Да и дать таймеру полезную нагрузку во время отсутствия торгов тоже не повредит...

 
C-4:
Это решение более менее работает на валютах, рынки которых открыты пять дней в неделю, 24 часа в сутки. А что делать если надо торговать скажем фьчерсом на SP500, индексом FTSE-100 и EURUSD? Большую часть суток биржи будут не работать. А я должен вызывать таймер каждую секунду, зная что рынки все равно не работают. Как-то некрасиво и глупо получается.
А в чем глупость? Подключайте инструменты динамически по ходу открытия рынков. Единственная "особенность" тестирования мультивалютного советника построенного на таймере-это время тестирования. т.к. событие таймера моделируется тестером, то время тестирования обратно пропорционально интервалу таймера.
 
Kos:
  Единственная "особенность" тестирования мультивалютного советника построенного на таймере-это время тестирования. т.к. событие таймера моделируется тестером, то время тестирования обратно пропорционально интервалу таймера.

А Вы  это проверяли ? В отсутствии торгов.

Если время в структуре MqlTick для символа не изменилось, то последующий код можно не выполнять.

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен - Документация по MQL5
 
Valmars:

А Вы  это проверяли ? В отсутствии торгов.

Если время в структуре MqlTick для символа не изменилось, то последующий код можно не выполнять.


Проверял что? Зависимость скорости тестирования от интервала таймера?
 
Kos:
Проверял что? Зависимость скорости тестирования от интервала таймера?
Ну, да. Я подобный подход через таймер ещё не применял. Хотелось бы знать насколько критичен период таймера, в том числе для тестирования.
 
Valmars:
Ну, да. Я подобный подход через таймер ещё не применял. Хотелось бы знать насколько критичен период таймера, в том числе для тестирования.

 

Чем меньше значение таймера, тем чаще запускается OnTimer эксперта 

 
Хорошо. Тогда должна быть функция проверки закрыт ли рынок в данный момент или нет. Где эта функция? Я почему-то найти ее не могу. 
Причина обращения: