Как отследить судьбу ордера?

 

Выставляю торговый приказ (тоесть ордер) ,

как отследить его судьбу ?

Если выбрать ордер по тикету не получиться так как тикет ордеру назначает сервер,

по позицие тоже не выйдет так как в списке позиций ордер появиться позже когда будет обработан сервером и помещён в историю ,

и проходит между этими событиями иногда не один тик,

вот мозгую как описать вызов OrderSend() чтоб при проверке исполнения не нарываться на ошибку.

В MQL-4 в категории Проверка состояния была хорошая функция IsTradeContextBusy()

if(IsTradeContextBusy()) Print("Торговый поток занят. Подождите");

как сейчас блокировать повторный запрос одного и тогоже ордера не ясно.

 
Urain:

Выставляю торговый приказ (тоесть ордер) ,

как отследить его судьбу ?

Если выбрать ордер по тикету не получиться так как тикет ордеру назначает сервер,

по позицие тоже не выйдет так как в списке позиций ордер появиться позже когда будет обработан сервером и помещён в историю ,

и проходит между этими событиями иногда не один тик,

вот мозгую как описать вызов OrderSend() чтоб при проверке исполнения не нарываться на ошибку.

В MQL-4 в категории Проверка состояния была хорошая функция IsTradeContextBusy()

if(IsTradeContextBusy()) Print("Торговый поток занят. Подождите");

как сейчас блокировать повторный запрос одного и тогоже ордера не ясно.

 

 

 

Посмотри Торговые классы возможно там найдеш ответы на свои вопросы.
 
vdv2001:
Посмотри Торговые классы возможно там найдеш ответы на свои вопросы.

Спасибо что отозвался, но разбирая коды класса CTrade становиться понятным что ордера выставляются а там хоть трава не рости,

может конечно повторный запрос и не отсылаеться пока не пришёл ответ на предидущий но описания как исполняется ордер нигде не нахожу.

Вопрос актуальный, что будет если на каждом тике будет делаться проверка и если нет открытой позиции выставлять ордер на открытие позиции ?

как это всё будет исполняться ? сколько ордеров будет отправлено на сервер пока состояние позиции измениться ?

и как добиться контроля над исполнением ?

 
Urain:

Выставляю торговый приказ (тоесть ордер) ,

как отследить его судьбу ?


Посмотрите здесь.
 
Valmars:
Посмотрите здесь.

Уже интересней, это можно по аналогии организовать перебор кодов отказа и пока результат негативный блокировать отсылку повторного запроса,

но тогда сколько же запросов на проверку состояния прийдётся вынести серверу.

Я пока что блокирую запросом OrderGetInteger(ORDER_STATE) и пока значение ORDER_STATE_STARTED блокирую новый ордер,

когда же ордер принят то его можно уже обрабатывать целевыми запросами.

А как правильно заблокировать повторный запрос ордера?

 
Urain:

Уже интересней, это можно по аналогии организовать перебор кодов отказа и пока результат негативный блокировать отсылку повторного запроса,

но тогда сколько же запросов на проверку состояния прийдётся вынести серверу.

Я пока что блокирую запросом OrderGetInteger(ORDER_STATE) и пока значение ORDER_STATE_STARTED блокирую новый ордер,

когда же ордер принят то его можно уже обрабатывать целевыми запросами.

А как правильно заблокировать повторный запрос ордера?

Вот статья по отслеживанию событий, правда не все события рассмотрены

Обработка торговых событий в эксперте при помощи функции OnTrade()

 
sergey1294:

Вот статья по отслеживанию событий, правда не все события рассмотрены

Обработка торговых событий в эксперте при помощи функции OnTrade()

Да, спасибо это то что доктор прописал :о)
Причина обращения: