Ордера исполняются, несмотря на ошибку (4/190 2006_02_06)

 
Проблема.
Вместо одного ордера были открыты три ордера.
При открытии рынка советником был выдан сигнал на покупку по-рынку:
02:00:36 SetOrder(OP_BUY), Lots_MM: 0.10000000, Ask: 1.20530000, orderBUYSTOP_SL: 1.20210000, TPBuy: 626.00000000
Через минуту получена ошибка
02:01:36 0. OrderSend error #128 - trade timeout
сделана вторая попытка открыть ордер
02:01:38 1. OrderSend error #2 - common error
третья
02:02:38 2. OrderSend error #128 - trade timeout
и четвертая
02:02:51 3. OrderSend error #2 - common error
после чего в 02:03:50 были открыты сразу три ордера.

Что это: ошибка эксперта или сервера?

Ниже приведены фрагменты лог/файла сервера.
2006.03.06 00:01:38 buy 0.10 EURUSD at 1.2053
2006.03.06 00:02:49 buy 0.10 EURUSD at 1.2054
2006.03.06 00:03:45 buy 0.10 EURUSD at 1.2051


Проблема в том, что терминал получал сообщение об ОШИБКЕ (см. протокол)
на команды выставления ордера и попытался выставить ордер еще и еще раз.
В результате были исполнены ТРИ заявки, вместо одной.
Эксперт ожидает исполнения команды OrderSend и, если возвращается
ошибка, то пытается выполнить команду еще раз. Получилось же, что вернув
ошибку, сервер исполнил таки заявку.
Проясните, пожалуйста, как такое может произойти.
 
Так ошибки-то локально терминал формирует, надо думать. Иначе откуда возьмется, к примеру, ошибка "нет связи", когда связи уже нет?
 
"Проблема при выставлении ордеров"
Об этом уже писалось. Посмотри приведённую ветку. Это ошибка, которую сам клиентский терминал на основе выявления ошибки установки ордера определить не в состоянии. Почитай способ обойти эту системную ошибку, которым пользуюсь я на реале.
 
Спасибо за ссылку.
В той ветке так и не дождались ответа квотовцев.
Может быть в этой они ответят и помогут советом?
 
Квотовцы.
Явная ошибка терминала, а Вы даже не высказываете своего мнения.
Помогайте, что можно предпринять нам и что будете предпринимать вы?
 
Извините, мы отдыхали на праздниках.

Trade timeout и common error явно указывают на сетевые проблемы:
Trade timeout - от сервера не получен ответ, терминал самостоятельно прервал торговую операцию из-за таймаута.
Сommon error - ошибка общего плана, практически всегда это сетевые проблемы.
Получилось же, что вернув ошибку, сервер исполнил таки заявку.

К сожалению, когда проблемы со связью, сервер ничего вернуть не может. Вышеприведенные ошибки генерирует терминал.

С каким сервером работали и с какой связью (dialup, GPRS, выделенка и тд)?
Какой пинг до торгового сервера?
 
Кстати, я бы рекомендовал повторять торговую операцию только после четких и осознанных кодов ошибок (типа неправильных цен), а не во всех случаях. Если появляются нечеткие коды (timeout, common error и другие), то надо включать блок логики для работы с внештатными ситуациями.

Жесткое повторение попыток до победного конца в ситуации неопределенности - это явно неправильно.
 
Кстати, я бы рекомендовал повторять торговую операцию только после четких и осознанных кодов ошибок (типа неправильных цен), а не во всех случаях. Если появляются нечеткие коды (timeout, common error и другие), то надо включать блок логики для работы с внештатными ситуациями.


Проверка на ошибки делается в основном не потому что интересно какая именно ошибка произошла, а потому что надо однозначно знать был выставлен ордер или нет. Если есть коды ошибок при которых ситуация неопределенна - проверка на ошибки становится бесполезной. Пользователю в этой ситуации нужно выдумывать что то совершенно другое. Мне кажется что разработчикам нужно было бы очень серьезно подумать о средствах которые могли бы давать однозначный ответ. Возможно нужен более совершенный протокол обмена между терминалом и сервером. Траффик не критичен - выжнее надежность.
 
Возможно нужен более совершенный протокол обмена между терминалом и сервером. Траффик не критичен - выжнее надежность.

Протокол не поможет, если _нет_связи_с_сервером_, не так ли?
 
Возможно нужен более совершенный протокол обмена между терминалом и сервером. Траффик не критичен - выжнее надежность.

Протокол не поможет, если _нет_связи_с_сервером_, не так ли?

Я могу с 99% уверенностью сказать, что связь была.
Такая ошибка происходит ТОЛЬКО в понедельник при открытии рынка, если сразу выставляется ордер.
Проблема, скорее всего, в сервере (Alpari-Customers), который не успевает выполнить все заявки и ВЕРНУТЬ подтверждение.
Терминал же, подождав ответа, генерирут Trade timeout и Сommon error.
Подтверждением моего предположения являются исполненные ордер (см. первый пост).

Можно ли увеличить время Trade timeout?
Какие способы решения этой проблемы предлагаете вы?
 

Я могу с 99% уверенностью сказать, что связь была.
Такая ошибка происходит ТОЛЬКО в понедельник при открытии рынка, если сразу выставляется ордер.
Проблема, скорее всего, в сервере (Alpari-Customers), который не успевает выполнить все заявки и ВЕРНУТЬ подтверждение.
Терминал же, подождав ответа, генерирут Trade timeout и Сommon error.
Подтверждением моего предположения являются исполненные ордер (см. первый пост).

Согласен со всем сказанным. У меня эта ошибка возникает в основном в 0 часов в понедельник с сервером Альпари. При этом задержка исполнения ордеров бывает более 1 минуты - видимо сервер в этот момент бывает сильно загружен. В другие дни эта ошибка бывает крайне редко и опять же в те моменты когда бывает большая задержка исполнения ордера.
Причина обращения: