Зависает навсегда?
Зачем вызываете закрытие ордеров без тиков?
Зависает навсегда?
Зачем вызываете закрытие ордеров без тиков?
Почти навсегда. :) Когда связь появляется - развисает и показывает Алерт. А если не появляется интернет или рынок все еще закрыт - техминал закрыть можно только через Диспетчер задач.
Вызываю без тикета? Номер тикета ведь передаю в функцию OrderClose (OrderTicket (), ...)
Возможно я где-то туплю и это вообще не проблема, но пока решения не нашел.
Почти навсегда. :) Когда связь появляется - развисает и показывает Алерт. А если не появляется интернет или рынок все еще закрыт - техминал закрыть можно только через Диспетчер задач.
Оч. странно. Как буд-то не настроен максимальный тайм-аут.
Вызываю без тикета? Номер тикета ведь передаю в функцию OrderClose (OrderTicket (), ...)
Без тиков. Т.е. не из OnTick, а из таймера или бесконечного цикла.
Иначе чего было бы зависание?
Но так все равно не должно быть.
На других счетах пробовали? Может, это особенность конкретного ДЦ?
Здравствуйте, дорогие знатоки.
Закрываю ордера простенькой функцией:
Когда рынок открыт и есть интернет - все закрывает, Алерт выводится.
Когда рынок закрыт на выходные или пропал интернет - при первой попытке закрыть тот же ордер с теми же параметрами - платформа зависает. Алерт не выводится.
Пробовал лечить проверкой через функцию состояния потока данных - IsTradeContextBusy() - помогает, на нерабочем рынке. На рабочем поток данные постоянно возвращает false, т.е. занят.
Подскажите, что делаю не так?
Замените "Alert" на что-то другое "Print" например. При "Alert" выскакивает попап-окно, которому нужен нормальный поток, очередь сообщенний. А у вас не понятно где расположен этот код, это скрипт? советник? Если советник то когда рынок открыт код вообще не должен вызываться так как нет тиков, весь код должен выполнятся в "OnTick".
Алерту не нужен отдельный поток.
Тут проблема, похоже, в том, что сервер не возвращает ни какого ответа, пока не начинают тикать котировки.
Так быть не должно.
Алерту не нужен отдельный поток.
Тут проблема, похоже, в том, что сервер не возвращает ни какого ответа, пока не начинают тикать котировки.
Так быть не должно.
Возможно дело в том, что я использую конструкцию таймера "OnTimer". То есть когда рынок не закрыт - советник все-равно работает. Это нужно для быстрого реагирования робота на действия пользователя. В тестере OnTimer перекрывается OnTick.
Но думаю такое поведение было задумано в МТ4, раз этот код доступен и подобного зависания не должно быть.
Как такое можно обойти, сделать проверки и т.д.?
------------
На другом счете проверю. ДЦ - MetaQuotes. Стандартный скаченный МТ4 с официального сайта.
вот у них ещё беда с таймером, оказывается, если советник зациклен в OnTick, то OnTimer игнорируется
что-то мне подсказывает что долгое молчание сервера на запрос о закрытии в функции OnTimer, вешает термина.
Пробуйте зациклить скрипт и оттуда пытаться закрыть ордер на закрытом рынке, зацикливание советника ничего не даст без тиков )
Возможно дело в том, что я использую конструкцию таймера "OnTimer". То есть когда рынок не закрыт - советник все-равно работает. Это нужно для быстрого реагирования робота на действия пользователя. В тестере OnTimer перекрывается OnTick.
Но думаю такое поведение было задумано в МТ4, раз этот код доступен и подобного зависания не должно быть.
Как такое можно обойти, сделать проверки и т.д.?
------------
На другом счете проверю. ДЦ - MetaQuotes. Стандартный скаченный МТ4 с официального сайта.
Это очевидно, что из-за таймера. Но все равно не должно быть зависания.
Приложите код советника для проверки, укажите адрес сервера (точно MQ-Demo?).
Можно не сюда, а сразу в сервис-деск, там ответят оперативно и точно.
Это очевидно, что из-за таймера. Но все равно не должно быть зависания.
Приложите код советника для проверки, укажите адрес сервера (точно MQ-Demo?).
Можно не сюда, а сразу в сервис-деск, там ответят оперативно и точно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, дорогие знатоки.
Закрываю ордера простенькой функцией:
Когда рынок открыт и есть интернет - все закрывает, Алерт выводится.
Когда рынок закрыт на выходные или пропал интернет - при первой попытке закрыть тот же ордер с теми же параметрами - платформа зависает. Алерт не выводится.
Пробовал лечить проверкой через функцию состояния потока данных - IsTradeContextBusy() - помогает, на нерабочем рынке. На рабочем поток данные постоянно возвращает false, т.е. занят.
Подскажите, что делаю не так?