Никогда не сталкивался с этой ошибкой. На нетбуке надо будет попробовать.
У меня возникала пару раз на арендованном на хетзнере сервере.
Намек был на то, что периодическое пересоздание таймера — источник потенциальных сбоев.
У меня возникала пару раз на арендованном на хетзнере сервере.
Намек был на то, что периодическое пересоздание таймера — источник потенциальных сбоев.
Уловил, Спасибо! От этого бага, конечно, никакой страховки. Возможно, разработчики починят.
Слава уже сказал ему свое негативное мнение. Но fxsaber не верит
Возможно, я что-то пропустил. Могли бы повторить?
GetMicrosecondCount и EventSetTimer очевидно используют разные источники времени и они обязаны расходится потому что разное время отсчитывают.
Пытаться их синхронизовать это что-то с чем-то, это неправильно :-)
GetMicrosecondCount и EventSetTimer очевидно используют разные источники времени и они обязаны расходится потому что разное время отсчитывают.
Пытаться их синхронизовать это что-то с чем-то, это неправильно :-)
Поставьте секундный таймер в 00:00:00. И посмотрите, какое время будет после 300-го вызова OnTimer. Поверьте, 00:05:00 (пять минут ровно) Вы не увидите. С библиотекой такого расхождения не будет.
Поставьте секундный таймер в 00:00:00. И посмотрите, какое время будет после 300-го вызова OnTimer. Поверьте, 00:05:00 Вы не увидите. С библиотекой такого расхождения не будет.
ой, какой упёртый, дремучий человек :-)
GetMicrosecondTimer используется для профилирования, измерений производительности и малых задержках в циклах. Очевидно для этого берёт учётное время процесса или треда (могут разработчики уточнить, только зачем?)
EventSetTimer берёт или monotоnic или realtime (скорее первое), по тику таймера тем или иным способом вызывает OnTimer. Для этого задействует системные дескрипторы, что вызывает некоторые проблемы, таймер может просто не запуститься через EventSetTimer
всё упомянутое - разные таймеры. На нагруженной машине расхождения будут существенны и естественны
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
AccurateTimer:
Штатный таймер в MetaTrader 4/5 основан на вызове системного таймера, и поэтому может работать с погрешностью. Чтобы в этом убедиться, достаточно запустить простой советник:
В комментарии чарта (левый-верхний угол) он показывает, как растет лаг таймера:
На скриншоте видно, что всего за минуту работы секундный таймер создает лаг больше секунды. И со временем он только растет!
Данная библиотека позволяет повысить точность штатного таймера любого советника/индикатора. Для этого нужно в начале кода прописать только одну строку:
После такого действия в вышеприведенном советнике можно наблюдать следующую картину:
После десятка минут работы среднее отклонение от идеального (теоретического) таймера составляет ~1 мс, и ошибка не будет расти.
Иметь точный таймер, конечно, всегда хорошо. Но есть задачи, в которых без него просто не обойтись. Например, секундный таймер, синхронизированный со временем Торгового сервера.
Данная кросс-платформенная библиотека совместима со всеми советниками/индикаторами, где используется штатный таймер (OnTimer). Не влияет на скорость выполнения в тестере.
Повышайте точность уже готовых и новых программ всего одной строкой!
Автор: fxsaber