Отправляется одновременно 3-5 ордеров.
Можно ли перед их исполнением или во время исполнения по нескольким парам отменить все выставленные заявки если хотя бы одна из них не может открыться по заданной цене?
Это каким образом Вы отправляете их одновременно?
Это каким образом Вы отправляете их одновременно?
Я имею в виду почти одновременно
OrderSend("AUDUSD")
OrderSend("GBPUSD")
OrderSend("USDCHF")
Допустим, стратегия арбитражная и важно исполнение по именно текущей цене, ни пипсом больше, в какой-то момент времени становится понятно, что EURUSD открыться по нужной цене не может, у него в ордере проставлено slippage = 0, это ок, но как теперь в данной ситуации отменить заявки по остальным 3 ордерам, до того как они исполнились или, другими словами, до того как сняли спред при исполнении?
Я имею в виду почти одновременно
OrderSend("AUDUSD")
OrderSend("GBPUSD")
OrderSend("USDCHF")
Допустим, стратегия арбитражная и важно исполнение по именно текущей цене, ни пипсом больше, в какой-то момент времени становится понятно, что EURUSD открыться по нужной цене не может, у него в ордере проставлено slippage = 0, это ок, но как теперь в данной ситуации отменить заявки по остальным 3 ордерам, до того как они исполнились или, другими словами, до того как сняли спред при исполнении?
OrderSend полностью синхронная. То есть после отсылки торгового приказа
MqlTradeRequest& request, // структура запроса
MqlTradeResult& result // структура ответа
);
и пока не придёт ответ, Вы в этот советнике ничего не сможете делать. Остаётся только анализировать ответ отработки OrderSend
Я имею в виду почти одновременно
OrderSend("AUDUSD")
OrderSend("GBPUSD")
OrderSend("USDCHF")
Допустим, стратегия арбитражная и важно исполнение по именно текущей цене, ни пипсом больше, в какой-то момент времени становится понятно, что EURUSD открыться по нужной цене не может, у него в ордере проставлено slippage = 0, это ок, но как теперь в данной ситуации отменить заявки по остальным 3 ордерам, до того как они исполнились или, другими словами, до того как сняли спред при исполнении?
Отправляете FOK или IOC-заявку. По коду возврата сразу определяете, было ли исполнение. Если FOK - то даже не надо ждать синхронизации с историей. Если IOC - придется ~ 1 мс подождать для выяснения, на какой объем было открытие.
Вот такая логика даст то, что нужно
;
OrderSend полностью синхронная. То есть после отсылки торгового приказа
MqlTradeRequest& request, // структура запроса
MqlTradeResult& result // структура ответа
);
и пока не придёт ответ, Вы в этот советнике ничего не сможете делать. Остаётся только анализировать ответ отработки OrderSend
Я думал, может если брокер может гарантировать выполнение одного ордера по текущей цене, то может ему можно указать это делать для серии ордеров.
Я думал, может если брокер может гарантировать выполнение одного ордера по текущей цене, то может ему можно указать это делать для серии ордеров.
То есть, если проблема будет в последнем ордере, то предыдущие уже будут в рынке и их никак отменить нельзя ...
Я думал, может если брокер может гарантировать выполнение одного ордера по текущей цене, то может ему можно указать это делать для серии ордеров.
Есть ещё один вариант - OrderSendAsync -
MqlTradeRequest& request, // структура запроса
MqlTradeResult& result // структура ответа
);
здесь приказы улетают пачкой (точнее один за одним, просто программа не ожидает ответа от торгового сервера). Такой вариант больше подойдёт, если хочется по одной цене разместить.
Еще вопрос вдогонку, почему в справке, в данных о позиции нет упоминания константы POSITION_COMMISSION, а в классе CPositionInfo она есть?
И вызывая ее в коде я получаю всегда 0, несмотря на то, что комиссию снимают и за IN, и за OUT сделки.
Брокер валютный, ECN, по крайней мере так заявляется.
https://www.mql5.com/en/docs/constants/tradingconstants/positionproperties#enum_position_property_double
https://www.mql5.com/en/docs/standardlibrary/tradeclasses/cpositioninfo/cpositioninfocommission
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Можно ли перед их исполнением или во время исполнения по нескольким парам отменить все выставленные заявки если хотя бы одна из них не может открыться по заданной цене?