Тестовый прогон мультивалютника на разных парах
- Помощь разработчикам.
- Количество переменных в тестере/оптимизаторе
- Как работает один советник на разных парах?
Друзья! Вопрос следующий: при прогоне мультивалютника на разных парах - разный результат. Если разбить на части (по каждой паре) и каждую часть прогнать на соответствующей ей паре - один результат. Собираю в кучу и прогоняю, например на евре, - другой, на йене - третий. Основной итог примерно похож во всех случаях, но должен ли он быть одинаковым и не зависеть от того на какой паре тестируется мультивалютник?
OnTick()
Поэтому рассчёт советника зависит от прихода тика по торгуемому символу. Лучше OnTimer():
int OnInit() { EventSetTimer(1); // вызов рассчёта советника каждую 1 сек независимо от прихода тиков //... } void OnTimer() // вместо OnTick { // тело советника } void OnDeinit(const int reason) { //... EventKillTimer(): }
Поэтому рассчёт советника зависит от прихода тика по торгуемому символу. Лучше OnTimer():
Т.е. если советкни тестируется на йене, то и евра и фунт ждут когда придет тик по йене? И пока его нет, нет тиков для советника и по евре и прочим?
Да. Для рассчёта любого советника/индикатора нужно "событие", которое провоцирует вызов рассчёта. В OnTick это происходит с приходом тика то тому символу, на котором торгует/тестируется программа. При OnTimer событие происходит по установленному пользователем отрезку времени, в моём примере выше каждую 1 сек.
Попробовал. Выставил секунду. Срок теста увеличился в десятки раз?:(
В тестере "по тику" этот тик и так генерируется на баре М1, попробуйте менее 60 сек, напр. 58 сек. И еще почитайте статью Рецепты MQL5 - Мультивалютный эксперт: пример простой, точной и быстрой схемы , там в начале показано как можно вызывать событие рассчёта советника. Да и вообще вся статья полезна.
P.S.: 1 секунда - для реальной торговли. В любом случае OnTick для мультиков однозначно не подходит.
В тестере "по тику" этот тик и так генерируется на баре М1, попробуйте менее 60 сек, напр. 58 сек. И еще почитайте статью Рецепты MQL5 - Мультивалютный эксперт: пример простой, точной и быстрой схемы , там в начале показано как можно вызывать событие рассчёта советника. Да и вообще вся статья полезна.
С OnTick() интересная ситуация: если новый тик приходит, а код еще не отработан по предыдущему тику, то новый тик игноритсЯ, а что происходит в случае OnTimer() если вызов кода по нему происходит раньше окончания работы кода по предыдущему вызову? Что приоритетной- новый вызов или окончание предыдущего?