Новая версия платформы MetaTrader 5 build 5100: Переход на Git и хаб разработчиков MQL5 Algo Forge, темная тема и улучшения интерфейса - страница 36
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вообще хотелось бы из массива uchar сразу получить массив любого типа.
Грубо говоря, Вы предлагаете такое (немного обобщенное).
Грубо говоря, Вы предлагаете такое (немного обобщенное).
После получения по ссылке - только размер массива надо будет подкорректировать.
Между выходом из OnTimer и следующем заходом в OnTimer должно пройти 100 мс, судя по коду.
Ок.
Зачем каждый раз в обработчике таймера делать EventKillTimer?
Ок.
Зачем каждый раз в обработчике таймера делать EventKillTimer?
Работа через паузу таймером нужна для работы с графической панелью, чтобы на короткое время паузы она успела получить события нажатия кнопок и обработать их. Если работать без таймера то нажатия на кнопки вообще не срабатывают. Кнопка нужна для остановки этих медленных расчетов.
Ну и EventKillTimer ведь не запрещена к использованию кроме как в OnDeinit(), значит должна работать в любом количестве.
Какая ошибка таймера? 5 секунд плюс 100 миллисекунд?
PS Оказывается в лог уже выводится сообщение "start timer". Следующее сообщение "OnTimer via nnn ms" примерно через 100 миллисекунд. Прямо так в представленном логе и написано. Что не так?
В логе же видно, что идёт обработка а потом ещё такой же по времени лаг и дальше он увеличивается:
Кнопкой Stop в панели останавливать загрузку большого списка файлов. Ранее писал Загрузка каждого файла начинается после небольшой паузы через OnTimer(), чтобы получить события от панели, а именно нажатие кнопки.
Ну и EventKillTimer ведь не запрещена к использованию кроме как в OnDeinit(), значит должна работать в любом количестве.
А еще есть SetTimer() для одноразового выполнения через паузу. Вот такой конструкцией через EventKillTimer и получаем одноразовые выполнения через ваш имеющийся функционал.
100мс только после первого запуска таймера - при последующих уже дополнительные задержки, равные времени от предыдущего срабатывания Ontimer().
Я не знаю, как это у вас получается. Я запустил Ваш код.
Вот результат
Билд 5107
0:09.685 TestTimer (EURUSD,H1) start timer 2025.06.12 15:20:09.803 Te
Скопировал вашу версию кода. По прежнему лишние задержки.
2025.06.12 15:26:38.329 1) Work time: 995 ms
2025.06.12 15:26:38.329 start timer
2025.06.12 15:26:38.435 OnTimer via 105 ms
2025.06.12 15:26:40.438 2) Work time: 2002 ms
2025.06.12 15:26:40.438 start timer
2025.06.12 15:26:42.535 OnTimer via 2096 ms
2025.06.12 15:26:45.540 3) Work time: 3004 ms
2025.06.12 15:26:45.540 start timer
2025.06.12 15:26:48.635 OnTimer via 3094 ms
....
Билд 5106
Проверка последней беты показывает
2025.06.12 15:27:06.363 LiveUpdate you are using the latest version
Как получить 5107 - может там исправлено?
И еще у меня Windows 7
Скопировал вашу версию кода. По прежнему лишние задержки.
Билд 5106
Проверка последней беты показывает
2025.06.12 15:27:06.363 LiveUpdate you are using the latest version
Как получить 5107 - может там исправлено?
И еще у меня Windows 7
Это - Ваша версия кода, я только стилизатор применил.
Таймер много лет не трогали.
Сделайте несколько попыток для получения 5107Обновил до 5107 - лишние задержки по прежнему есть
2025.06.12 15:35:46.856 1) Work time: 994 ms
2025.06.12 15:35:46.856 start timer
2025.06.12 15:35:46.963 OnTimer via 106 ms
2025.06.12 15:35:48.966 2) Work time: 2002 ms
2025.06.12 15:35:48.966 start timer
2025.06.12 15:35:51.063 OnTimer via 2096 ms
2025.06.12 15:35:54.061 3) Work time: 2997 ms
2025.06.12 15:35:54.061 start timer
2025.06.12 15:35:57.172 OnTimer via 3110 ms
Значит из за Win7.