Вопросы по MQL4. - страница 2

 
komposter, ну, выручай.
Ответь на исходный вопрос.
У меня тут прям чудеса в связи с этим..
 
ты про меседжбокс?
в смысле, проверить у себя?
 
Да. Или как-нибудь..
Я прихожу к выводу, что МВ, висящий некоторое время до нажатия кнопки, не позволяет последующее подключение эксперта.
Поставь любой МВ в деинит, загрузи и выгружай советник.
1. Если ответить ОК быстро, то сохраняется возможность снова присоединить советника.
2. Если некоторое время подождать, то советник не присоединяется.

Чуть крыша не поехала, пока понял это..
 
ты логи пробовал читать? =))))
я же ещё в первом посте написАл - deinit работает 2,5 секунды.
бокс задерживает процесс, и советник вырубается насильственно. После этого не работает (это выяснилось только что)
Кстати, в скрипте работает ;)
 
Понимаешь, какое дело..
Пусть он работает хоть сколько угодно, но зачем (или почему) после этого нужны трудности с подкл. следующего советника?

Так должно быть или это недоработка? Может быть, разработчики нам подскажут..
 
Может быть, разработчики нам подскажут..
может и подскажут =)
только они пока этот форум редко (или мало?) читают..
 
komposter:
deinit работает 2,5 секунды - пользователь должен так быстро ответить? =)
Можно записать в файл то, что надо сделать, а потом скриптом считать, вывести MessageBox и, в зависимости от ответа, что-то предпринять.
как правило, если скрипт не зациклен бесконечно, его деинит может работать очень долго. по той самой причине, что если скрипта не гасят снаружи, то и некому контролировать таймаут. скриптовый деинит наступает естественно, сразу после завершения выполнения функции start. а вот чтобы сработал экспертовский деинит, эксперта надо сначала загасить одним из 6 способов
 
stringo,
если скрипт не зациклен бесконечно, его деинит может работать очень долго.
Я не очень-то понял. Как связано зацикливание с длительностью деинита?
 
SKif:
stringo,
если скрипт не зациклен бесконечно, его деинит может работать очень долго.
Я не очень-то понял. Как связано зацикливание с длительностью деинита?
если в скрипте бесконечный цикл - он будет работать пока его не отключат (тогда деинит будет ограничен 2,5 сек), а если нет - то сначала отрабатывает старт, а потом деинит (если есть) и деинит будет работать сколько угодно долго
 
SKif:
Я не очень-то понял. Как связано зацикливание с длительностью деинита?
очень просто. бесконечно зацикленный скрипт не завершает работу сам. его можно только загасить снаружи (удалить скрипта явно, повесить нового скрипта, сменить символ/таймфрейм графика, закрыть график, закрыть терминал). вот когда прошла команда на закрытие скрипта (и эксперта тоже), сразу после этого выставляется ожидание на 2 с половиной секунды. если скрипт (или эксперт) такой "глупый", что не проверяет IsStopped, то через 2 с половиной секунды ему выставляют стоп-флаг, который проверяется автоматически после каждой итерации цикла и после каждого вызова любой функции. если вдруг скрипт находился в состоянии вызова какой-либо dll-функции (которая конечно же не проверяет наш стоп-флаг) и за 2 с половиной секунды не завершил работу, то его поток останавливают принудительно.
если же скрипт сам завершил свою работу, то он спокойно выполняет деинит, и за ним никто сверху не следит и не проверяет никакой таймаут