Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, Стринго,
к сожалению, эта ошибка сохраняется.
При запуске тестового скрипта ниже и переключении с одного счета на другой (в моем тестовом примере я использовал счета от 2 или 3 разных брокеров и переключался с одного на другой), вы можете увидеть, что после нескольких AccountChanges (довольно случайное число) connectionState действительно не меняется обратно на 1, он остается 0, даже если терминал _подключен_.
На ваш взгляд, это может быть не критичной ошибкой. Однако для некоторых людей, разрабатывающих скрипты, которые отображают connectionState, результаты проведенных тестов весьма тревожны.
Поэтому я был бы очень признателен, если бы вы еще раз взглянули на эту проблему.
Вот тестовый сценарий:
Искренне ваш,
Daniel.
Я также должен подтвердить ту же ошибку. В моем советнике я одновременно проверяю, существует ли соединение. Если нет, мой скрипт завершает работу.
Кто-нибудь нашел обходной путь для этого?
Скрипт не может определить проблему из-за бесконечного цикла и независимости от входящих тиков.
Проблему может показать только эксперт. Простой эксперт с одной строкой кода - Print(IsConnected());
Поступает тик (значит терминал подключен) - запускается функция start - oops! IsConnected() возвращает 0 (т.е. false)
спасибо
да, я использую
проблема в том, что при восстановлении соединения IsConnected() сохраняет старое значение false и не меняется на true! Но я вижу, что цена движется и терминал подключен на 100%. Это ошибка, потому что бесконечный цикл был разорван и старт был выполнен, так как на первом тике после восстановления соединения ничего не происходило. Но почему-то Is Connected() все равно возвращает false. Если я убираю советника с графика и ставлю заново, то все работает нормально до следующей потери связи.
Это сводит меня с ума. Пожалуйста, сделайте что-нибудь с этим!
Спасибо
Liliput - если выше описана схема использования start(), зачем оставаться в ней с бесконечным циклом?
Я спрашиваю потому, что нормальный способ - это войти > хочу ли я работать? нет:вернуться > сделать работу > вернуться
(нормально - это субъективно, конечно ;о)
Я не говорю вам, как проектировать - это ваше дело, просто спрашиваю, как вы рассуждаете, тогда я узнаю больше/вижу разные способы делать вещи!
Что заставило меня спросить?
Я понятия не имею, как Терминал ведет себя, если, например, советник отказывается возвращаться к нему в течение, возможно, многих тиков данных, которые, поскольку советник не возвращается - Терминал просто не делает вызов start()... или - он просто не делает вызов и в конечном итоге из-за многих тиков данных, пролетевших без возможности вызвать start() советника, Терминал уходит в неизведанные глубины и проявляет связанную проблему?
;)
Может ли это решить проблему?
Liliput - если выше описана схема использования start(), зачем оставаться в ней с бесконечным циклом?
Я спрашиваю, потому что нормальный способ - это войти > хочу ли я работать? нет:вернуться > сделать работу > вернуться
(нормально - это субъективно, конечно ;о)
Я не говорю вам, как проектировать - это ваше дело, просто спрашиваю, как вы рассуждаете, тогда я узнаю больше/вижу разные способы делать вещи!
Что заставило меня спросить?
Я понятия не имею, как Терминал ведет себя, если, например, советник отказывается возвращаться к нему в течение, возможно, многих тиков данных, которые, поскольку советник не возвращается - Терминал просто не делает вызов start()... или - он просто не делает вызов и в конечном итоге из-за многих тиков данных, пролетевших без возможности вызвать start() советника, Терминал уходит в неизведанные глубины и проявляет связанную проблему?
;)
ukt, без проблем, я отвечу. Я делаю инфинитный цикл, потому что мне нужно сделать много операций и я не хочу ждать нового тика для их выполнения. Таким образом, я забираю управление из терминала и делаю свою работу, когда мне нужно и когда я хочу. Для получения фактических данных я использую RefreshRates().
Поэтому логично проверить, существует ли соединение с брокером, потому что я отправляю/закрываю/модифицирую ордера и если нет соединения, то нет работы. Вот так просто. Есть и другие проверки для выхода из цикла, которые я использую. например IsStoped() и так далее, но проблема не в моем коде, а в IsConnected().