Добрый день!
Объяснение.
Покупая 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 может вернуть все что угодно и когда угодно.
Не может такого быть. Вы не можете купить по 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, а можете и не купить.
И как Вы всегда говорите: "Не вводите людей в заблуждение"!
В таком случае срочно в сервис деск. Если это действительно проявляется - это грубейшая ошибка работы терминала.

- www.mql5.com
Я в шоке. У Вас есть конкретная его цитата по этой ситуации? На уровне биржи, технически невозможно обойти покупку по 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?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования