Невыставление (неудаление) отложенных ордеров (3.83)

 
Разработчикам
Описание проблемы: Отложенные ордера (BUYSTOP, SELLSTOP) выставляются (удаляются) НЕ ВСЕГДА (иногда выставляется, иногда нет) по командам из эксперта. В протокол записывается соответствующая команда (order buy stop ... или delete ...), но сам ордер не выставляется (не удаляется).
При выставлении ордера текущая цена находится на достаточном удалении от цены открвытия (30 пунктов).
Я предполагал, что это проблема тестового сервера, но и на реальном сервере возникает аналогичная проблема (правда не так часто как на тестовом). Сервера 217.74.32.214:1950 (:1952).
Вопрос: опишите, пожалуйста, процедуру обработки выставления (удаления) отложенных ордеров и ВСЕ возможные ситуации "проглатывание" соответствующих команд
 
Пришлите, пожалуйста, свой полный код на stringo@metaquotes.ru
И лог файл, в котором отображалось исполнение команд. Там "skipped" не стоит?

Особенности проведения торговых операций - нельзя проводить следующую торговую операцию
раньше 10 секунд после проведения предыдущей. Скорее всего именно этим правилом и
принебрегли.
 
Спасибо за ответ.
Проблема лежит, похоже, глубже.
Невыставление происходит чаще всего после удаления предыдущего ордера. Необходимый временной интервал (10 секунд) я выдерживаю и в протоколе появляется подтверждающая надпись (ордер удален).
Но следующая команда на выставление ордера "проглатываеться".
Я предпологаю, что несмотря на то, что подтверждение удаления пришло, процессор ордеров (извините за терминологию) не освободился и следующую команду не принял.
Вопрос: как правильно (100% надежно) организовать выполнение двух команд подрят (например, удаление одного ордера и выставление другого)?
 
После _любой_(именно любой) торговой операции надо ждать не менее (а лучше с запасом) 10 секунд. Вторая торговая операция автоматически отбрасывается если не прошло как минимум 10 сек.

Не забывайте о том, что время таймаута начинает считаться не с момента отсылки приказа из эксперта,
а с момент фактической отработки заявки сервером.

Естественно, если Вы совершаете операции на грани 10 секунд (10-15 сек), то велика вероятность
неудачи - тут винить можно только себя.
 
Как правильно (100% надежно) организовать выполнение двух команд подряд (например, удаление одного ордера и выставление другого) Если возможно, то приведите, пожалуйста, пример кода?
Есть ли возможность убедиться, что предыдущая операция успешно завершена сервером?
Нет ли возможности получить от сервера ОТКАЗ (сообщение об ошибке по тайм-ауту) на выполнение операции, а не просто ИГНОРИРОВАНИЕ команды?
Как определить, что посланная команда игнорирована сервером (важно при повторении отклоненной команды, чтобы не произошло повторного ее выполнения)?
 
в тройке - никак
поищите в архивах нашего форума пример закрытия одной позиции с последующим открытием встречной позиции.
также поищите в архивах нашего форума, а также на форумах альпари, наши объяснения по поводу задержки между торговыми операциями. эти темы очень активно обсуждались.
купите книгу "Forex: от простого к сложному. Новые возможности с клиентским терминалом MetaTrader" - в главе 4, пункте 4 "Пересечение двух МА", Советник 2 (стр 319) как раз использована эта техника - закрытие позиции с последующим открытием встречной.
 
Какие изменения в этом направлении сделаны в новой версии?
Можно ли запрашивать сервер о выполнении предыдущей операции?
Есть ли очередь команд?
Можно ли задать блокировку эксперта до выполнения предыдущей команды?
 
Сейчас каждая торговая команда дожидается своего полного завершения и выдает 100%
результат (номер тикета). Если результат меньше нуля, то детали ошибки доступны по GetLastError().
Сделка, открытая через торговую функцию сразу же становится доступна для анализа.
Причина обращения: