ORDER_TYPE_CLOSE_BY в MQL5

 

Почему не работает этот тип операции в MQL5, тогда как в MetaTrader5 мы же закрываем сделку по кнопочке с крестиком.

Противоположным ордером (ORDER_TYPE_BUY, ORDER_TYPE_SELL) сделка закрывается. Но хотелось бы понять почему нельзя ORDER_TYPE_CLOSE_BY?

 
Alexey Barkalov:

Почему не работает этот тип операции в MQL5, тогда как в MetaTrader5 мы же закрываем сделку по кнопочке с крестиком.

Противоположным ордером (ORDER_TYPE_BUY, ORDER_TYPE_SELL) сделка закрывается. Но хотелось бы понять почему нельзя ORDER_TYPE_CLOSE_BY?

На самом деле

ORDER_TYPE_CLOSE_BY

Ордер на закрытие позиции встречной позицией


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

 
Vladimir Karputov:

На самом деле

ORDER_TYPE_CLOSE_BY

Ордер на закрытие позиции встречной позицией


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

Результат GetLastError: ERR_TRADE_SEND_FAILED

Остальное всё обычно - открываю позицию, сохраняю номер ордера, номер позиции, указываю это в ф-ии OrderSend, в качестве Action использовал и TRADE_ACTION_DEAL и TRADE_ACTION_CLOSE_BY, ошибка та же.

Это как-то зависит от типа торгового счёта?

 
Alexey Barkalov:

Результат GetLastError: ERR_TRADE_SEND_FAILED

Остальное всё обычно - открываю позицию, сохраняю номер ордера, номер позиции, указываю это в ф-ии OrderSend, в качестве Action использовал и TRADE_ACTION_DEAL и TRADE_ACTION_CLOSE_BY, ошибка та же.

Это как-то зависит от типа торгового счёта?

Вам даже автоматически движок сайта дал ссылку на типы торговых операций.

Вам нужно использовать эту:

TRADE_ACTION_CLOSE_BY

Закрыть позицию встречной


И, естественно, такой тип операции доступен только на хеджевом счёте.
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Торговля осуществляется посредством отправки с помощью функции OrderSend() приказов на открытие позиций, а также приказов на установку, модификацию и удаление отложенных ордеров. Каждый торговый приказ содержит указание на тип запрашиваемой торговой операции. Торговые операции описаны в перечислении ENUM_TRADE_REQUEST_ACTIONS...
 
Artyom Trishkin:

Вам даже автоматически движок сайта дал ссылку на типы торговых операций.

Вам нужно использовать эту:

TRADE_ACTION_CLOSE_BY

Закрыть позицию встречной


И, естественно, такой тип операции доступен только на хеджевом счёте.

Счёт хеджевый:

ENUM_ACCOUNT_MARGIN_MODE margin_mode=ENUM_ACCOUNT_MARGIN_MODE(AccountInfoInteger(ACCOUNT_MARGIN_MODE));

возвращает ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

и сделки у меня не группируются в одну при открытии в одном направлении.

Почему же не работает TRADE_ACTION_CLOSE_BY?

Так же заметил если закрывать вручную из терминала, в журнале тоже это фиксируется как сделка в противоположном направлении, а не закрытие:

2020.04.23 23:25:10.611 Trades '': market buy 0.01 BTCUSD

2020.04.23 23:25:10.734 Trades '': accepted market buy 0.01 BTCUSD

2020.04.23 23:25:12.745 Trades '': deal #3238700 buy 0.01 BTCUSD at 7562.000 done (based on order #4553191)

2020.04.23 23:25:12.748 Trades '': order #4553191 buy 0.01 / 0.01 BTCUSD at 7562.000 done in 2137.119 ms

2020.04.23 23:25:21.799 Trades '': market sell 0.01 BTCUSD, close #4553191 buy 0.01 BTCUSD 7562.000

2020.04.23 23:25:21.920 Trades '': accepted market sell 0.01 BTCUSD, close #4553191 buy 0.01 BTCUSD 7562.000

2020.04.23 23:25:23.926 Trades '': deal #3238701 sell 0.01 BTCUSD at 7557.000 done (based on order #4553192)

2020.04.23 23:25:23.927 Trades '': order #4553192 sell 0.01 / 0.01 BTCUSD at 7557.000 done in 2128.212 ms


 
В свойствах символа можно посмотреть SYMBOL_ORDER_CLOSEBY.
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...