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

- www.mql5.com
То есть тики получается всё-таки есть, но они скрыты. Тогда получается, что точность моделирования в тестере с OnTimer() зависит как от параметра EvenSetTimer(), так и от режима тестирования и величины таймфрейма. Максимальная точность в режиме "Все тики" и таймер = 1 сек.
Чем домыслами заниматься, взяли бы лучше и проверили самостоятельно.
События от таймера генерируются независимо от наличия или отсутствия тиков. Попробуйте потестировать субботние-воскресные даты - тиков нет, а таймер работает.
Также читайте документацию. Режим "по открытию бара" предполагает генерацию тиков M1 OHLC. Но запуск OnTick эксперта - только по началу бара тестируемого таймфрейма.
Ну вот и ответили! То, что таймер работает независимо от тиков я знал ещё год назад. Но Тестер-то по тикам работает медленно, а тиков-то в эксперте не предусмотренно. Что я должен проверять, если у меня даже модуля OnTick нет в программе? Все кто мне ответил - тоже вообщем-то домысливали.
Тики нужны не только для вызова функции OnTick. Мы же должны формировать историю (причём, возможно, по нескольким инструментам), проверять состояние ордеров и позиций.
Несмотря на то, что у Вас нет OnTick, тем не менее в своём OnTimer Вы всегда можете получить историю, соответствующую данному моменту времени.

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

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