Об интересных последствиях ошибки 134

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

По моему недосмотру эксперт 3 или 4 раза пропустил ордер с избыточным объемом лота на сервер, который столько же раз вернул ошибку 134 (ERR_NOT_ENOUGH_MONEY -- недостаточно средств для совершения требуемой операции). После этого эксперт был сначала дезактивирован кнопкой "Советники", затем удален со всех графиков для обезглючивания, и для чистоты эксперимента все ранее открытые позиции, большинство которых были прибыльными, были принудительно закрыты вручную. Соответственно, свободные средства на счете увеличились. К моему удивлению, почти сразу же открылась та самая позиция, на открытие которой раньше не хватало денег. Т.е., можно предположить, что она сохранилась на сервере в виде своего рода отложенного ордера.

В режиме ручной торговли не проверял.

Сборка клиентского терминала 204 от 11 мая, сервер Альпари-Демо (конкурс).
 
Размер очереди у разных брокеров может отличаться. На Альпари, по-моему, 2 мин. Поэтому, если вы успели все сделать за две минуты, то все вполне логично
 
Очень может быть, что и так. Закрывал быстрее, чем это делает эксперт. Просто решил сообщить о своем наблюдении ситуации, которая может иметь весьма неприятные последствия.
 
У меня такое на реале как то было. Послал запрос на открытие ордера, прошло минут 5. Никакого ответа брокера (рынок был спокойный, связь не рвалась). Я закрыл окошко запроса, а затем и терминал. Минут через 10 запустил терминал - а там красуется открытый ордер. Так что я теперь всегда дожидаюсь ответа брокера.
 
По всей видимости на терминале все-таки висел эксперт. Достаточно посмотреть логи терминала.

Заявки сразу же удаляются после ошибок и не висят в очередях ни на клиенте, ни на сервере.
 
Scriptong:
У меня такое на реале как то было. Послал запрос на открытие ордера, прошло минут 5. Никакого ответа брокера (рынок был спокойный, связь не рвалась). Я закрыл окошко запроса, а затем и терминал. Минут через 10 запустил терминал - а там красуется открытый ордер. Так что я теперь всегда дожидаюсь ответа брокера.
У любого запроса есть максимальное время ожидания в 2 минуты. Если Вы закроете окно сделки или терминал в "непрерываемый" момент (когда заявка уже дошла до брокера), то заявка будет отработана вне зависимости от Ваших действий. Принудительное закрытие терминала не означает снятия заявки. 
 
Может быть, эксперт и висел, но он в момент принудительного закрытия позиций совершенно точно был неактивен. Есть такая привычка -- перед удалением экспертов я их всегда дезактивирую. То же и перед выгрузкой терминала.
Хорошо. На днях попробую воспроизвести.
 
Понятно, спасибо за разъяснения. Кстати, очень похожую тему видел в прошлом году на форуме у болгар: http://www.finance.sts.bg/forum/viewtopic.php?t=711
Может быть, в описании стОит дополнительно акцентировать внимание на этом вопросе?
 
alexjou:
Может быть, эксперт и висел, но он в момент принудительного закрытия позиций совершенно точно был неактивен. Есть такая привычка -- перед удалением экспертов я их всегда дезактивирую. То же и перед выгрузкой терминала.
Хорошо. На днях попробую воспроизвести.
Дезактивация не влияет на эксперта, если он в этот момент работает в функции start() или в состоянии торговой операции. Дезактивация влияет на незапуск функции start().
Причина обращения: