Как правильно удалить ордер?

 

 Я просмотрел все возможные торговые операции функции OrderSend(). Всё понятно, в принципе, кроме закрытия позиции. Хотел уточнить. Я так понимаю, нужно лишь заполнить структуру торгового запроса MqlTradeRequest и цену установить противоположную закрываемой позиции?

Имею ввиду, например, закрываем мы Buy, значит посылаем ордер со всеми необходимыми параметрами и цену ставить в торговый запрос Bid. Верно? Грубо говоря, теперь нужно в отличие от мт4 явно продавать весь объём позиции(или не весь), что бы закрыть ордер?

 
hoz:

 Я просмотрел все возможные торговые операции функции OrderSend(). Всё понятно, в принципе, кроме закрытия позиции. Хотел уточнить. Я так понимаю, нужно лишь заполнить структуру торгового запроса MqlTradeRequest и цену установить противоположную закрываемой позиции?

Имею ввиду, например, закрываем мы Buy, значит посылаем ордер со всеми необходимыми параметрами и цену ставить в торговый запрос Bid. Верно? Грубо говоря, теперь нужно в отличие от мт4 явно продавать весь объём позиции(или не весь), что бы закрыть ордер?

И всегда надо проверять, что позиция не была уже закрыта, а то можно наоткрывать противоположных позиций пачку.
 
hoz: посмотрите MQL5/Include/Trade/Trade.mqh функции
// закрыть полностью позицию
bool CTrade::PositionClose(const string symbol,const ulong deviation)
bool CTrade::PositionClose(const ulong ticket,const ulong deviation)
// закрыть позицию частично
bool CTrade::PositionClosePartial(const string symbol,const double volume,const ulong deviation)
bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation)
И все более менее будет понятно.
 
И кроме проверки, коли уж решил учить mql5, надо освоить терминологию МТ5 и mql5. Понять чем отличается ордер от позиции, что можно удалить, а что можно закрыть. Иначе получается какая-то ахинея. Говоришь об удалении ордера, а пример приводишь по закрытию позиции.
 
Alexey Viktorov:
И кроме проверки, коли уж решил учить mql5, надо освоить терминологию МТ5 и mql5. Понять чем отличается ордер от позиции, что можно удалить, а что можно закрыть. Иначе получается какая-то ахинея. Говоришь об удалении ордера, а пример приводишь по закрытию позиции.

Это я прекрасно понимаю. Писал ночью на автомате. С утра увидел название темы, и понял, что написал не верно.

Yury Kirillov:
И всегда надо проверять, что позиция не была уже закрыта, а то можно наоткрывать противоположных позиций пачку.

Навряд ли. Мы же когда закрываем указываем тикет позиции или ID. С чего вдруг позиции наплодятся тогда?

 
hoz:

Это я прекрасно понимаю. Писал ночью на автомате. С утра увидел название темы, и понял, что написал не верно.

Навряд ли. Мы же когда закрываем указываем тикет позиции или ID. С чего вдруг позиции наплодятся тогда?

Мы ничего не закрываем, а отправляем ордера противоположные направлению "закрываемой позиции". Соответственно если отправить один - то нет гарантии исполнения и закрытия позиции (например реквота). Если отправлять несколько - то можно получить в остатке противоположную позицию. Поэтому проверять исполнение закрывающего ордера, и по результатам возможно слать ордера на "закрытие" повторно.
 
Yury Kirillov:
Мы ничего не закрываем, а отправляем ордера противоположные направлению "закрываемой позиции". Соответственно если отправить один - то нет гарантии исполнения и закрытия позиции (например реквота). Если отправлять несколько - то можно получить в остатке противоположную позицию. Поэтому проверять исполнение закрывающего ордера, и по результатам возможно слать ордера на "закрытие" повторно.

Да, на счетах, в т.ч. ECN часто бывает, если объем с десяток лотов, ордер может биться на части, если нет встречного предложения.

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