Скачать MetaTrader 5

Запретить выполнение нескольких ордеров, если хоть по одному будет slippage

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет компьютера под рукой? Переписывайся с друзьями с помощью телефона!
Andy Sanders
403
Andy Sanders 2016.11.21 19:51 
Отправляется одновременно 3-5 ордеров.
Можно ли перед их исполнением или во время исполнения по нескольким парам отменить все выставленные заявки если хотя бы одна из них не может открыться по заданной цене?
Vladimir Karputov
Модератор
46099
Vladimir Karputov 2016.11.21 19:52  
Andy Sanders:
Отправляется одновременно 3-5 ордеров.
Можно ли перед их исполнением или во время исполнения по нескольким парам отменить все выставленные заявки если хотя бы одна из них не может открыться по заданной цене?
Это каким образом Вы отправляете их одновременно?
Ihor Herasko
9060
Ihor Herasko 2016.11.21 19:54  
Vladimir Karputov:
Это каким образом Вы отправляете их одновременно?
Например, параллельным запуском 3-5 скриптов.
Vladimir Karputov
Модератор
46099
Vladimir Karputov 2016.11.21 19:55  
Я хочу ответ от автора.
Andy Sanders
403
Andy Sanders 2016.11.21 20:00  
Vladimir Karputov:
Это каким образом Вы отправляете их одновременно?

Я имею в виду почти одновременно

OrderSend("EURUSD")
OrderSend("AUDUSD")
OrderSend("GBPUSD")
OrderSend("USDCHF")

Допустим, стратегия арбитражная и важно исполнение по именно текущей цене, ни пипсом больше, в какой-то момент времени становится понятно, что EURUSD открыться по нужной цене не может, у него в ордере проставлено slippage = 0, это ок, но как теперь в данной ситуации отменить заявки по остальным 3 ордерам, до того как они исполнились или, другими словами, до того как сняли спред при исполнении?

Vladimir Karputov
Модератор
46099
Vladimir Karputov 2016.11.21 20:07  
Andy Sanders:

Я имею в виду почти одновременно

OrderSend("EURUSD")
OrderSend("AUDUSD")
OrderSend("GBPUSD")
OrderSend("USDCHF")

Допустим, стратегия арбитражная и важно исполнение по именно текущей цене, ни пипсом больше, в какой-то момент времени становится понятно, что EURUSD открыться по нужной цене не может, у него в ордере проставлено slippage = 0, это ок, но как теперь в данной ситуации отменить заявки по остальным 3 ордерам, до того как они исполнились или, другими словами, до того как сняли спред при исполнении?

OrderSend полностью синхронная. То есть после отсылки торгового приказа

bool  OrderSend(
   MqlTradeRequest&  request,      // структура запроса
   MqlTradeResult&   result        // структура ответа
   );

и пока не придёт ответ, Вы в этот советнике ничего не сможете делать. Остаётся только анализировать ответ отработки OrderSend

fxsaber
4523
fxsaber 2016.11.21 20:11  
Andy Sanders:

Я имею в виду почти одновременно

OrderSend("EURUSD")
OrderSend("AUDUSD")
OrderSend("GBPUSD")
OrderSend("USDCHF")

Допустим, стратегия арбитражная и важно исполнение по именно текущей цене, ни пипсом больше, в какой-то момент времени становится понятно, что EURUSD открыться по нужной цене не может, у него в ордере проставлено slippage = 0, это ок, но как теперь в данной ситуации отменить заявки по остальным 3 ордерам, до того как они исполнились или, другими словами, до того как сняли спред при исполнении?

Отправляете FOK или IOC-заявку. По коду возврата сразу определяете, было ли исполнение. Если FOK - то даже не надо ждать синхронизации с историей. Если IOC - придется ~ 1 мс подождать для выяснения, на какой объем было открытие.

Вот такая логика даст то, что нужно

if (OrderSend("EURUSD") && OrderSend("AUDUSD") && OrderSend("GBPUSD") && OrderSend("USDCHF"))
  ;
Andy Sanders
403
Andy Sanders 2016.11.21 20:12  
Vladimir Karputov:

OrderSend полностью синхронная. То есть после отсылки торгового приказа

bool  OrderSend(
   MqlTradeRequest&  request,      // структура запроса
   MqlTradeResult&   result        // структура ответа
   );

и пока не придёт ответ, Вы в этот советнике ничего не сможете делать. Остаётся только анализировать ответ отработки OrderSend

То есть, если проблема будет в последнем ордере, то предыдущие уже будут в рынке и их никак отменить нельзя ...
Я думал, может если брокер может гарантировать выполнение одного ордера по текущей цене, то может ему можно указать это делать для серии ордеров.
fxsaber
4523
fxsaber 2016.11.21 20:16  
Andy Sanders:
Я думал, может если брокер может гарантировать выполнение одного ордера по текущей цене, то может ему можно указать это делать для серии ордеров.
Для арбитража используют лимитные ордера по текущей цене. В случае проблем (кто-то не исполнился), идет траллинг лимитника.
Vladimir Karputov
Модератор
46099
Vladimir Karputov 2016.11.21 20:19  
Andy Sanders:
То есть, если проблема будет в последнем ордере, то предыдущие уже будут в рынке и их никак отменить нельзя ...
Я думал, может если брокер может гарантировать выполнение одного ордера по текущей цене, то может ему можно указать это делать для серии ордеров.

Есть ещё один вариант - OrderSendAsync -

bool  OrderSendAsync(
   MqlTradeRequest&  request,      // структура запроса
   MqlTradeResult&   result        // структура ответа
   );

здесь приказы улетают пачкой (точнее один за одним, просто программа не ожидает ответа от торгового сервера). Такой вариант больше подойдёт, если хочется по одной цене разместить.

Andy Sanders
403
Andy Sanders 2016.11.21 20:27  
Ок, всем спасибо, надо будет попробовать
Еще вопрос вдогонку, почему в справке, в данных о позиции нет упоминания константы 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
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Position Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Position Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Position Properties - Reference on algorithmic/automated trading language for MetaTrader 5
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий