Состояние ордера в истории (прочтите объяснение)

 
  • 37% (21)
  • 12% (7)
  • 51% (29)
Всего проголосовало: 57
 

Добрый день!

Объяснение.

 

 

Покупая 3 контракта ЛИМИТНЫМ ордером с исполнением ORDER_FILLING_IOC,

складывается следующая ситуация:

1. Если мы купили все три контракта, то ордер в истории имеет состояние = ORDER_STATE_FILLED

2. Если мы ничего не купили, то в истории состояние =  ORDER_STATE_CANCELED

3. Если мы купили первых два контракта (28449), а 1 контракт не купили (28450), то в истории состояние =  ORDER_STATE_CANCELED

4. Если мы не купили первых два контракта (28449), а купили 1 (28450), то в истории состояние = ORDER_STATE_PARTIAL

 Сам вопрос голосования:

Каково должно быть состояние ордера в истории, если мы купили по пункту 3 ? 

 

Вроде бы очевидно - частичное исполнение...

Хотя вот эта приписка к объяснению режима IOC ("В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен.") как раз указывает на то, почему в результате операции получен статус "отменен". Правда, в таком случае непонятно, как же определить, имела ли место покупка или ордер был отменен в полном объеме.

 
Игорь Герасько:

Вроде бы очевидно - частичное исполнение...

Хотя вот эта приписка к объяснению режима IOC ("В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен.") как раз указывает на то, почему в результате операции получен статус "отменен". Правда, в таком случае непонятно, как же определить, имела ли место покупка или ордер был отменен в полном объеме.

Понять можно по начальному и текущему объёмам ордера, но сам факт, что частично исполненный ордер

хранится как ORDER_STATE_CANCELED, побудил меня сделать этот опрос.

 

P/S Может быть разработчики обратят внимание, что в данном вопросе нет ЧЁТКОЙ логики.... 

 
Михаил:

4. Если мы не купили первых два контракта (28449), а купили 1 (28450), то в истории состояние = ORDER_STATE_PARTIAL

...

Не может такого быть. Вы не можете купить по 28450, не купив перед этим по 28449.

Михаил:

3. Если мы купили первых два контракта (28449), а 1 контракт не купили (28450), то в истории состояние =  ORDER_STATE_CANCELED

Сам вопрос голосования:

Каково должно быть состояние ордера в истории, если мы купили по пункту 3 ? 

 ORDER_STATE_PARTIAL, очевидно. Но можно обойти это свойство, посчитав, сколько сделок относятся к этому ордеру.

З.Ы. Это еще что, у меня позавчера функция Symbol() весь день NULL возвращала (и это на реальном счете фортс!). Поэтому любая функция в MQL может вернуть все что угодно и когда угодно.

 
Vasiliy Sokolov:

Не может такого быть. Вы не можете купить по 28450, не купив перед этим по 28449.

 ORDER_STATE_PARTIAL, очевидно. Но можно обойти это свойство, посчитав, сколько сделок относятся к этому ордеру.

З.Ы. Это еще что, у меня позавчера функция Symbol() весь день NULL возвращала (и это на реальном счете фортс!). Поэтому любая функция в MQL может вернуть все что угодно и когда угодно.

Василий!

Не может быть? - Проверьте.

Выставляя ЛИМИТНЫЙ ордер на покупку 3 контрактов,  по цене 28450 с исполнением  ORDER_FILLING_IOC, вы можете купить два контракта по цене 28449, а можете и не купить.

И как Вы всегда говорите: "Не вводите людей в заблуждение"! 

 

P/S интересно знать мнение людей, проголосовавших за  ORDER_STATE_CANCELED

По Вашему выходит, что вовсе не исполненный ордер = частично исполненному ордеру

И соответственно   частично исполненный ордер != частично исполненному ордеру?

 
Михаил:

Василий!

Не может быть? - Проверьте.

Выставляя ЛИМИТНЫЙ ордер на покупку 3 контрактов,  по цене 28450 с исполнением  ORDER_FILLING_IOC, вы можете купить два контракта по цене 28449, а можете и не купить.

И как Вы всегда говорите: "Не вводите людей в заблуждение"! 

В таком случае срочно в сервис деск. Если это действительно проявляется - это грубейшая ошибка работы терминала. 
 
Vasiliy Sokolov:
В таком случае срочно в сервис деск. Если это действительно проявляется - это грубейшая ошибка работы терминала. 
А Ренат так не считает (https://www.mql5.com/ru/forum/38456/page18#comment_1404308), как и двое проголосовавших (правда это могли бьть сами разработчики) за ORDER_STATE_CANCELED
ФОРТС. Вопросы по исполнению
ФОРТС. Вопросы по исполнению
  • www.mql5.com
С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,. - Страница 18 - Категория: автоматические торговые системы
 
Михаил:
А Ренат так не считает, как и двое проголосовавших за ORDER_STATE_CANCELED
Я в шоке. У Вас есть конкретная его цитата по этой ситуации? На уровне биржи, технически невозможно обойти покупку по 28449. Интересно, как умудряется делать это МТ5?
 
Vasiliy Sokolov:
Я в шоке. У Вас есть конкретная его цитата по этой ситуации? На уровне биржи, технически невозможно обойти покупку по 28449. Интересно, как умудряется делать это МТ5?

Василий!

Вы, вероятно, не знаете, как исполняется ордер ORDER_FILLING_IOC !

Для этого ордера НЕ ВАЖНЫ предыдущие цены!

Важна ТОЛЬКО цена указанная в ордере, если есть что-то ниже этой цены, то купит (конечно же), если нет (кто-то опередил), то не купит,

а купит 1 контракт по цене 28500, если нет и этой цены(28500), то вовсе НИЧЕГО не купит. 

 

P/S В том то и прелесть этого исполнения, что Вы точно уверены, что купите именно то той цене, которую

указали в ордере или по более лучшей (если успели, а не успели, то ничего не купите) ! 

 
Михаил:

Добрый день!

Объяснение.

 

 

Покупая 3 контракта ЛИМИТНЫМ ордером с исполнением ORDER_FILLING_IOC,

складывается следующая ситуация:

1. Если мы купили все три контракта, то ордер в истории имеет состояние = ORDER_STATE_FILLED

2. Если мы ничего не купили, то в истории состояние =  ORDER_STATE_CANCELED

3. Если мы купили первых два контракта (28449), а 1 контракт не купили (28450), то в истории состояние =  ORDER_STATE_CANCELED

4. Если мы не купили первых два контракта (28449), а купили 1 (28450), то в истории состояние = ORDER_STATE_PARTIAL

 Сам вопрос голосования:

Каково должно быть состояние ордера в истории, если мы купили по пункту 3 ? 

Если случай 3 отмечен как CANCELED, то почему случай 4 помечен как PARTIAL? Тогда уж должен быть FILLED, по аналогии со случаем 3, по последнему действию. 

Короче, 3 и 4 должны быть PARTIAL, или PARTIAL'а вообще быть не должно. 

Почему в случае 4-ре как бы помним что было и потому PARTIAL, а не FILLED. А в случае 3 не помним что было, и поэтому не PARTIAL, а CANCELED?

Причина обращения: