Как средствами языка MQL4 завершить ожидание ответа сервера?

 
Проблема:
При отсутствии ответа сервера нарушается алгоритм работы Советника.

Суть проблемы:
В процессе работы Советника была послана серверу команда на закрытие ордера...

Выписка из ЖУРНАЛА:
************************************************
18:30:20 '54901': close order #4992533 sell 2.40 EURUSD at 1.2822 sl: 0.0000 tp: 0.0000 at price 1.2796
18:30:25 '54901': request was accepted by server
18:30:26 '54901': request in process
************************************************

Из журнала видно, что...


18:30:25 '54901': запрос был принят сервером
18:30:26 '54901': запрос в процессе

Далее ответа от сервера не последовало (в том числе не был закрыт ордер и обратно не пришло никакого сообщения об ошибке) - полное молчание при наличии связи с сервером и поступлении тиковой информации спустя 3 минуты, когда ТЕРМИНАЛ выдал ошибку 128 (Истек срок ожидания совершения сделки).

Так как ответа от сервера не последовало, то последующие попытки Советника закрыть ордер сервером игнорировались (в ЖУРНАЛЕ нет никаких записей о последующих попытках закрытия ордера).

Для сброса ожидания ответа сервера пришлось перезапустить ТЕРМИНАЛ, после чего первая же команда Советника на закрытие ордера прошла успешно.
Выписка из ЖУРНАЛА:
******************************************************
19:53:16 Expert Sovetnik Youra 04.4 EURUSD,M5: removed
19:53:18 SIGTrader 4.00 build 195 stopped
19:53:21 SIGTrader 4.00 build 195 started
19:53:22 Expert Sovetnik Youra 04.4 EURUSD,M5: loaded successfully
19:53:23 '54901': login (4.00, #291AB8B6)
19:53:55 '54901': close order #4992533 sell 2.40 EURUSD at 1.2822 sl: 0.0000 tp: 0.0000 at price 1.2789
19:53:56 '54901': request was accepted by server
19:53:56 '54901': request in process
19:53:58 '54901': order #4992533 sell 2.40 EURUSD at 1.2822 sl: 0.0000 tp: 0.0000 closed at price 1.2789
******************************************************

Аналогичная ситуация повторилась на следующий день. В течении 2-х часов Советник пытался безуспешно закрыть ордер (39 раз за 2 часа), но в ЖУРНАЛЕ отражена только первая попытка...
После перезапуска ТЕРМИНАЛА, ордер успешно был закрыт.

Выписка из ЖУРНАЛА:
******************************************************
10:17:54 '54901': login (4.00, #291B8190)
16:33:12 '54901': close order #5004394 sell 0.60 EURUSD at 1.2815 sl: 0.0000 tp: 0.0000 at price 1.2789
16:33:31 '54901': request was accepted by server
18:44:15 '54901': login (4.00, #291B8190)
18:44:18 '54901': login (4.00, #291B8190)
18:44:22 '54901': login (4.00, #291B8190)
18:52:17 Expert Sovetnik Youra 04.4 EURUSD,M5: removed
18:52:19 SIGTrader 4.00 build 195 stopped
18:52:22 SIGTrader 4.00 build 195 started
18:52:23 Expert Sovetnik Youra 04.4 EURUSD,M5: loaded successfully
18:52:24 '54901': login (4.00, #291B8190)
19:04:23 '54901': close order #5004394 sell 0.60 EURUSD at 1.2815 sl: 0.0000 tp: 0.0000 at price 1.2806
19:04:23 '54901': request was accepted by server
19:04:23 '54901': request in process
19:04:24 '54901': order #5004394 sell 0.60 EURUSD at 1.2815 sl: 0.0000 tp: 0.0000 closed at price 1.2806
******************************************************

ВОПРОС:
Как средствами языка MQL4 без перезапуска ТЕРМИНАЛА (и без вмешательства трейдера) прервать ожидание ответа сервера и соответственно продолжить правильную работу Советника?

 

В субботу некому ответить на мою тему?

 
По главному вопросу: к сожалению, из эксперта никак нельзя прервать 3х минутный интервал ожидания ответа сервера.

Ситуация с отказом повторной торговли после таймаута непонятная - будем у себя моделировать и перепроверять.
Кстати, попробуйте последний 195 билд от 29 августа ( http://www.metatrader4.com/files/mt4setup.exe ) - в нем был ряд исправлений.
 
Renat писал (а):
По главному вопросу: к сожалению, из эксперта никак нельзя прервать 3х минутный интервал ожидания ответа сервера.

Ситуация с отказом повторной торговли после таймаута непонятная - будем у себя моделировать и перепроверять.
Кстати, попробуйте последний 195 билд от 29 августа ( http://www.metatrader4.com/files/mt4setup.exe ) - в нем был ряд исправлений.



А вообще, в принципе, почему сервер не ответил? Из-за некорректного запроса, при этом НЕкорректность не вписалась в рамки, определенные существующими КОДАМИ ОШИБОК. Или же это умышленное или неумышленное игнорирование сервером запроса в моменты высоковолантильного рынка? А после первого игнорирования запроса уже подвис сам ТЕРМИНАЛ....
Если бы не подвисал ТЕРМИНАЛ, то можно было бы смириться с подобными неответами сервера. Кстати, в первый день, неответ сервера сыграл против ДЦ, потому что позже позиция закрылась по более выгодной для меня цене.
В любом случае, буду с нетерпением ждать результатов вашего моделирования и устранения подвисания ТЕРМИНАЛА. Держите меня, пожалуйста, в курсе.
С уважением, МИХАИЛ.
 
У меня тоже было подвисание терминала в момент очень сильной активности рынка, пришлось перезапускать терминал.

P.S. кстати, у меня тоже позиция закрылась по более выгодной для меня цене ;), но пугает сам факт, не хотелось бы играть в орел/решку. ..
 
И у меня такое было;-)
 
А по-моему, это не терминал подвисает, а сервер брокера не успевает отвечать на шквал запросов. Хотя, может это и искусственный тормоз брокера, но не самого терминала...
 
Речь идет о том, что первый отказ сервера ответить на запрос Терминала не должен приводить к зависанию самого Терминала. Зависание происходит именно из-за непрекращающегося ОЖИДАНИЯ ОТВЕТА сервера Терминалом. Для правильной работы Терминала, после 3-минутного ожидания и после выдачи сообщения об отсутствии ответа сервера, Терминал должен ПРЕКРАТИТЬ дальнейшее ожидание ответа сервера на свой запрос. Последующие запросы Терминала в этом случае будут считаться каждый раз ПЕРВЫМИ, что расциклит ситуацию.
 

Ошибка с зависанием исправлена. Скоро-скоро выпустим 197 билд

 
Убедился на 197 билде, что ошибка исправлена. Теперь, даже если с первого раза сервер ДЦ не закрывает (открывает) позу, Терминал не зависает. Со второго раза, как правило, поза закрывается (открывается) без сбоев. Приятно, однако.
Причина обращения: