Попробуйте вынести запуcк скрипта в init()
Дело в том, что если в скрипте используется бесконечный цикл, например: while(true), то из программы стандартными средствами вообще не выйти корректно... это можно скинуть на специфику MQL конечно, однако аварийный стоп типа Ctrl+\ известен всем. Поэтому дело до переинициализации попросу не доходит.. короче не вышло... может я не так понял?
Используйте более корректное зацикливание while(!IsStopped()) и будет вам счастье (не забудьте в цикле, отдать немного времени на нужды терминала - Sleep(50) хотя-бы)
Ну или на крайний случай - таймер высокого разрешения
С точки зрения стабильности - таймер предпочтительнее, так как конвеер потока будет выполнен полностью, при зацикливании, в зависимости от тяжести датафида брокера, можно даже подвесить интерфейс терминала и в совсем запущенных случаях - потерять способность к исполнению торговых приказов
Однако при использовании таймера, будьте готовы к итерациям длиной до 10 секунд, даже если поставите таймер на 1мс (привет копировщикам :)
AccountNumber - имеет минимальную ресурсоемкость, но имеет смысл ее вызывать только в OnInit
Используйте более корректное зацикливание while(!IsStopped()) и будет вам счастье (не забудьте в цикле, отдать немного времени на нужды терминала - Sleep(50) хотя-бы)
Ну или на крайний случай - таймер высокого разрешения
С точки зрения стабильности - таймер предпочтительнее, так как конвеер потока будет выполнен полностью, при зацикливании, в зависимости от тяжести датафида брокера, можно даже подвесить интерфейс терминала и в совсем запущенных случаях - потерять способность к исполнению торговых приказов
Однако при использовании таймера, будьте готовы к итерациям длиной до 10 секунд, даже если поставите таймер на 1мс (привет копировщикам :)
AccountNumber - имеет минимальную ресурсоемкость, но имеет смысл ее вызывать только в OnInit
Спасибо за комментарий! По-большому счёту остановился на AccountNumber() - работает железно! В моём случае выход из цикла = завершение работы скрипта, а по поводу, чтобы там терминалу надо какое то время давать - впервые слышу! С какой стати я вообще должен об этом думать? Если не затруднит, скиньте ссылку =)
псы: привет от копировщиков =)
Дело в том, что если в скрипте используется бесконечный цикл, например: while(true), то из программы стандартными средствами вообще не выйти корректно... это можно скинуть на специфику MQL конечно, однако аварийный стоп типа Ctrl+\ известен всем. Поэтому дело до переинициализации попросу не доходит.. короче не вышло... может я не так понял?
Нет, Вы все правильно поняли. Но я надеялся, что сработают эти чекбоксы
Но Ваш вариант с анализом номера счета лучше. Если терминал не падает, беспокоиться не надо по моему.
Если хотите не так часто спрашивать номер счета у терминала, и если позволяет алгоритм, то можно такое делать раз в ХХ секунд. Отразите эту команду в OnTimer()
Всем привет! Есть скрипт, который работает в бэкграунде (while true), и при переключении аккаунтов в терминале продолжает работать... а мне необходимо его перезапускать!
Вопрос: как мне отловить действие logout либо login ? Либо насколько ресурсоёмка функция AccountNumber(), чтобы использовать её в while ? может есть предопределённая для неё переменная по аналогии _Digits, _Point и т.д... ?
В чем необходимость, чтобы это был именно скрипт? Почему это не может быть неторгующий эксперт?
В чем необходимость, чтобы это был именно скрипт? Почему это не может быть неторгующий эксперт?
Пока так удобней.. хотя принципиальной разницы нет.
Пока так удобней.. хотя принципиальной разницы нет.
Если б был эксперт, проблема бы решилась. Разве не так удобней?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос: как мне отловить действие logout либо login ? Либо насколько ресурсоёмка функция AccountNumber(), чтобы использовать её в while ? может есть предопределённая для неё переменная по аналогии _Digits, _Point и т.д... ?