Проверил - start после deinit не вызывается. Можете кусок кода привести?
Извиняюсь за поспешный, не обдуманный вопрос,
конечно start после deinit не вызывается - это понятно.
Для полного прояснения, хотелось-бы знать
почему в логах экспертов строка "deinitialized" принтуется дважды?
Пример лога прилагаю.
Спасибо.
конечно start после deinit не вызывается - это понятно.
Для полного прояснения, хотелось-бы знать
почему в логах экспертов строка "deinitialized" принтуется дважды?
Пример лога прилагаю.
Спасибо.
По логу видно, что эксперт не желает самостоятельно закрываться и терминал его принудительно и аварийно(именно аварийно, возможны утечки памяти и прочие неприятности) глушит.
Строки shutdown by timeout, terminated by timeout не зря выдаются.
Видимо эксперт излишне эгоистичен, зациклен и не проверяет через IsStopped() флаг закрытия советника. Это очень плохой случай, от таких экспертов можно получить только неприятности.
Еще важно: эксперт использует DLL?
Строки shutdown by timeout, terminated by timeout не зря выдаются.
Видимо эксперт излишне эгоистичен, зациклен и не проверяет через IsStopped() флаг закрытия советника. Это очень плохой случай, от таких экспертов можно получить только неприятности.
Еще важно: эксперт использует DLL?
Еще важно: эксперт использует DLL?
Да, DLL используется.
Еще важно: эксперт использует DLL?
Да, DLL используется.
Именно DLL (он не управляется виртуальной машиной MQL4) отъедает все время , в результате терминал не может остановить эксперта. Обычный MQL4 код автоматически содержит проверяющий код статуса состояния и может корректно завершаться, когда родитель просит его остановиться.
Рекомендую хотя бы раз в секунду вылезать из DLL и самостоятельно проверять флаг IsStopped(), чтобы корректно завершать свою работу.
Извиняюсь за назойливость, все же до конца не все ясно.
А именно: Почему-то именно при деинициализации начинают срабатывать функции из start(),
которые должны срабатывать только один раз при первом start.
А именно: Почему-то именно при деинициализации начинают срабатывать функции из start(),
которые должны срабатывать только один раз при первом start.
Извиняюсь за назойливость, все же до конца не все ясно.
А это:
По логу видно, что эксперт не желает самостоятельно закрываться и терминал его принудительно и аварийно(именно аварийно, возможны утечки памяти и прочие неприятности) глушит.
Строки shutdown by timeout, terminated by timeout не зря выдаются.
Видимо эксперт излишне эгоистичен, зациклен и не проверяет через IsStopped() флаг закрытия советника. Это очень плохой случай, от таких экспертов можно получить только неприятности.
Строки shutdown by timeout, terminated by timeout не зря выдаются.
Видимо эксперт излишне эгоистичен, зациклен и не проверяет через IsStopped() флаг закрытия советника. Это очень плохой случай, от таких экспертов можно получить только неприятности.
Терминал жестоко прерывает(не останавливает, а терминирует) рабочий поток эксперта.
Напишите корректного эксперта и проверьте снова. Если у своего эксперта видите строки "shutdown by timeout, terminated by timeout ", то будьте уверены, что процесс эксперта снимают "по-грязному", как зависший процесс со всеми вытекающими (печальными) последствиями.
Понимаю, что уже порядком надоел...
но всеже рискну утверждать:
Закрытие графика вызывает start{}, при условии, что с момента пуска на график не приходило тиков.
Прошу еще раз проверить.
но всеже рискну утверждать:
Закрытие графика вызывает start{}, при условии, что с момента пуска на график не приходило тиков.
Прошу еще раз проверить.
Какие именно события к чему приводят утверждать не берусь.
Однако есть некоторые события, приводящие (видимо) к запуску start() индикатора. По моим наблюдениям, это - переход мышкой между любыми (!) окнами валют и при изменении размеров окна.
Я писал недавно о небольших исследованиях задержек между временем поступления тиков (понимать: исполнением первых программных строк) в идикатор и советник. В указанных здесь случаях задержка составляет ровно столько времени, сколько проходит от тыканья мышкой в соседний таймфрейм до поступления реального тика (котировки). В ночное время - минуты.
Получается, что на этих событиях индикатор воспроизводит несанкционированный тик, т.е ведёт себя так, как будто тик пришёл, хотя на самом деле его нет.
Однако есть некоторые события, приводящие (видимо) к запуску start() индикатора. По моим наблюдениям, это - переход мышкой между любыми (!) окнами валют и при изменении размеров окна.
Я писал недавно о небольших исследованиях задержек между временем поступления тиков (понимать: исполнением первых программных строк) в идикатор и советник. В указанных здесь случаях задержка составляет ровно столько времени, сколько проходит от тыканья мышкой в соседний таймфрейм до поступления реального тика (котировки). В ночное время - минуты.
Получается, что на этих событиях индикатор воспроизводит несанкционированный тик, т.е ведёт себя так, как будто тик пришёл, хотя на самом деле его нет.
Кстати, эффект наблюдается и при компиляции в ME "больших" файлов, более 300 строк.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
срабатывает start() ???