Тестирование в режиме OnTimer()

 

У меня в мультивалютном советнике только три модуля: OnInit(),  OnDeInit(), OnTimer(). Когда проводил тестирование, то работал в режиме "Все тики", справедливо полагая, что тиков-то в советнике всё-равно нет (ведь нет же модуля OnTick()). Полагал, что время тестирования советника зависит только от параметра EventSetTimer(Step). У меня оно равно 15 мин. Случайно запустил оптимизацию в режиме "По началу бара". Просто поразительно -  скорость возросла в 10 раз! Скажите откуда в советнике берутся тики? И правильно ли это? Не должен ли Тестер работать только по таймеру?

 
Erm955:

У меня в мультивалютном советнике только три модуля: OnInit(),  OnDeInit(), OnTimer(). Когда проводил тестирование, то работал в режиме "Все тики", справедливо полагая, что тиков-то в советнике всё-равно нет (ведь нет же модуля OnTick()). Полагал, что время тестирования советника зависит только от параметра EventSetTimer(Step). У меня оно равно 15 мин. Случайно запустил оптимизацию в режиме "По началу бара". Просто поразительно -  скорость возросла в 10 раз! Скажите откуда в советнике берутся тики? И правильно ли это? Не должен ли Тестер работать только по таймеру?

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

Ну Тестеру легко понять есть ли в программе модуль OnTick(). Но и не это самое главное. Важно, чтобы Тестер был адекватен в режиме тестирования, например по началу бара, с работой советника в OnLine. Ведь работа с OnTimer() - это нечто совершенно новое, поэтому беспокоит чтобы это новое было правильно отмоделировано в Тестере. А то гоняешь-гоняешь Тестер месяцами - а оказывается не в том режиме!

 
Erm955:

У меня в мультивалютном советнике только три модуля: OnInit(),  OnDeInit(), OnTimer(). Когда проводил тестирование, то работал в режиме "Все тики", справедливо полагая, что тиков-то в советнике всё-равно нет (ведь нет же модуля OnTick()). Полагал, что время тестирования советника зависит только от параметра EventSetTimer(Step). У меня оно равно 15 мин. Случайно запустил оптимизацию в режиме "По началу бара". Просто поразительно -  скорость возросла в 10 раз! Скажите откуда в советнике берутся тики? И правильно ли это? Не должен ли Тестер работать только по таймеру?

Насколько я понимаю тестеру без разницы обрабатываются или нет тики в эксперте. Если выбран режим "все тики" тестер и будет стараться максимально правдоподобно отработать каждый тик.
Erm955:

Ну Тестеру легко понять есть ли в программе модуль OnTick(). Но и не это самое главное. Важно, чтобы Тестер был адекватен в режиме тестирования, например по началу бара, с работой советника в OnLine. Ведь работа с OnTimer() - это нечто совершенно новое, поэтому беспокоит чтобы это новое было правильно отмоделировано в Тестере. А то гоняешь-гоняешь Тестер месяцами - а оказывается не в том режиме!

Не замечалось за таймером особых "косяков", по крайней мере пока.
 
Erm955:

У меня в мультивалютном советнике только три модуля: OnInit(),  OnDeInit(), OnTimer(). Когда проводил тестирование, то работал в режиме "Все тики", справедливо полагая, что тиков-то в советнике всё-равно нет (ведь нет же модуля OnTick()). Полагал, что время тестирования советника зависит только от параметра EventSetTimer(Step). У меня оно равно 15 мин. Случайно запустил оптимизацию в режиме "По началу бара". Просто поразительно -  скорость возросла в 10 раз! Скажите откуда в советнике берутся тики? И правильно ли это? Не должен ли Тестер работать только по таймеру?

Кроме выполнения ф-ции ОнТик(), тестер должен обработать отложенные ордера, СЛ и ТП.

Да и чтоб включать таймер точно в ту секунду, на которую он установлен (и при этом показывать рыночное окружение, состоянием именно на эту секунду), нужно моделировать весь процесс потиково.

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

То есть тики получается всё-таки есть, но они скрыты. Тогда получается, что точность моделирования в тестере с OnTimer() зависит как от параметра EvenSetTimer(), так и от режима тестирования и величины таймфрейма. Максимальная точность в режиме "Все тики" и таймер = 1 сек.

 

Чем домыслами заниматься, взяли бы лучше и проверили самостоятельно.

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

Также читайте документацию. Режим "по открытию бара" предполагает генерацию тиков M1 OHLC. Но запуск OnTick эксперта - только по началу бара тестируемого таймфрейма.

 

Ну вот и ответили! То, что таймер работает независимо от тиков я знал ещё год назад. Но Тестер-то по тикам работает медленно, а тиков-то в эксперте не предусмотренно. Что я должен проверять, если у меня даже модуля OnTick нет в программе? Все кто мне ответил - тоже вообщем-то домысливали.  

 

Тики нужны не только для вызова функции OnTick. Мы же должны формировать историю (причём, возможно, по нескольким инструментам), проверять состояние ордеров и позиций.

Несмотря на то, что у Вас нет OnTick, тем не менее в своём OnTimer Вы всегда можете получить историю, соответствующую данному моменту времени.

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

Ну вот это уже ответ. То есть вы потвердили:

94

Erm955 2010.11.08 15:22 2010.11.08 15:22:03

То есть тики получается всё-таки есть, но они скрыты. Тогда получается, что точность моделирования в тестере с OnTimer() зависит как от параметра EvenSetTimer(), так и от режима тестирования и величины таймфрейма. Максимальная точность в режиме "Все тики" и таймер = 1 сек.

 
 
Erm955:

Ну вот это уже ответ. То есть вы потвердили:

94

Erm955 2010.11.08 15:22 2010.11.08 15:22:03

То есть тики получается всё-таки есть, но они скрыты. Тогда получается, что точность моделирования в тестере с OnTimer() зависит как от параметра EvenSetTimer(), так и от режима тестирования и величины таймфрейма. Максимальная точность в режиме "Все тики" и таймер = 1 сек

Поправка: точность моделирования от таймера не зависит. От него зависит только частота анализа данных вашим экспертом.
Причина обращения: