Я просмотрел все возможные торговые операции функции OrderSend(). Всё понятно, в принципе, кроме закрытия позиции. Хотел уточнить. Я так понимаю, нужно лишь заполнить структуру торгового запроса MqlTradeRequest и цену установить противоположную закрываемой позиции?
Имею ввиду, например, закрываем мы Buy, значит посылаем ордер со всеми необходимыми параметрами и цену ставить в торговый запрос Bid. Верно? Грубо говоря, теперь нужно в отличие от мт4 явно продавать весь объём позиции(или не весь), что бы закрыть ордер?
// закрыть полностью позицию 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. Понять чем отличается ордер от позиции, что можно удалить, а что можно закрыть. Иначе получается какая-то ахинея. Говоришь об удалении ордера, а пример приводишь по закрытию позиции.
Это я прекрасно понимаю. Писал ночью на автомате. С утра увидел название темы, и понял, что написал не верно.
И всегда надо проверять, что позиция не была уже закрыта, а то можно наоткрывать противоположных позиций пачку.
Навряд ли. Мы же когда закрываем указываем тикет позиции или ID. С чего вдруг позиции наплодятся тогда?
Это я прекрасно понимаю. Писал ночью на автомате. С утра увидел название темы, и понял, что написал не верно.
Навряд ли. Мы же когда закрываем указываем тикет позиции или ID. С чего вдруг позиции наплодятся тогда?
Мы ничего не закрываем, а отправляем ордера противоположные направлению "закрываемой позиции". Соответственно если отправить один - то нет гарантии исполнения и закрытия позиции (например реквота). Если отправлять несколько - то можно получить в остатке противоположную позицию. Поэтому проверять исполнение закрывающего ордера, и по результатам возможно слать ордера на "закрытие" повторно.
Да, на счетах, в т.ч. ECN часто бывает, если объем с десяток лотов, ордер может биться на части, если нет встречного предложения.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я просмотрел все возможные торговые операции функции OrderSend(). Всё понятно, в принципе, кроме закрытия позиции. Хотел уточнить. Я так понимаю, нужно лишь заполнить структуру торгового запроса MqlTradeRequest и цену установить противоположную закрываемой позиции?
Имею ввиду, например, закрываем мы Buy, значит посылаем ордер со всеми необходимыми параметрами и цену ставить в торговый запрос Bid. Верно? Грубо говоря, теперь нужно в отличие от мт4 явно продавать весь объём позиции(или не весь), что бы закрыть ордер?