Как програмно включить TrailingStop ? Есть ли функция закрытия позиции (сделки) ?

 

1. Есть ли в MQL5 функция, позволяющая програмно включить TrailingStop для открытой позиции? И если позиция состоит из более чем  одной сделки, как выбрать ту по которой нужно включить TrailingStop?

2. Есть ли  в MQL5 функция закрытия позиции (сделки) ? Я что-то не нашёл ?

 

1. Нет.

2. OrderSend()

 
Victuar:

1. Есть ли в MQL5 функция, позволяющая програмно включить TrailingStop для открытой позиции? И если позиция состоит из более чем  одной сделки, как выбрать ту по которой нужно включить TrailingStop?

2. Есть ли  в MQL5 функция закрытия позиции (сделки) ? Я что-то не нашёл ?

1. Нет, такой функции в MQL5 нет, как нет её и MQL4. Трейлинг-стоп надо реализовывать самостоятельно в коде. Поскольку в МТ5 по символу может существовать только одна позиция, то на ней и будет работать трейлинг. А все отдельные сделки по символу суммируются в одну позицию.

2. В MQL5 позиция закрывается путём установки ордера на совершение сделки противоположного по отношению к закрываемой позиции направления того же объёма, что имеет закрываемая позиция.

Реализуется через OrderSend() функцию или можно использовать готовую из класса CTrade стандартной библиотеки bool CTrade::PositionClose(const string symbol,ulong deviation).

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Victuar:

1. Есть ли в MQL5 функция, позволяющая програмно включить TrailingStop для открытой позиции? И если позиция состоит из более чем  одной сделки, как выбрать ту по которой нужно включить TrailingStop?

2. Есть ли  в MQL5 функция закрытия позиции (сделки) ? Я что-то не нашёл ?

1. TrailingStop позиций

На текущий момент нет. Работа с  TrailingStop-ом возможна, только для этого придется отслеживать все сделки и периодическим "подтраливать" нужную позицию (если программно), примерно также осуществляется перевод в БУ.

Если позиция включает в себя несколько сделок, то любое управление ей на принципах используемых в MQL4 возможно только виртуально. С примером такой работы можно ознакомиться в статье Virtual Order Manager для управления ордерами в позициях терминала MetaTrader 5.

2. Закрытие позиций

Позиции закрываются встречной сделкой на равный объем. Функции, на прямую закрывающей позицию в самом MQL5 теперь нет (если не считать OrderSend()...), но ее можно реализовать самостоятельно.

Кроме того, реализация закрытия позиций присутствует в объектах, к примеру "CTrade" (\MQL5\Include\Trade\Trade.mqh).

Там есть такие вещи как:

//--- methods for working with positions
bool              PositionOpen(const string symbol,ENUM_ORDER_TYPE order_type,double volume,
                               double price,double sl,double tp,const string comment="");
bool              PositionModify(const string symbol,double sl,double tp);
bool              PositionClose(const string symbol,ulong deviation=ULONG_MAX);
Для управления позициями можно воспользоваться этим классов, или создать свой (более продвинутый)...
 

Дмитрий, Валерий, Владимир - большое спасибо за просвещение! Про ‘TrailingStop’ я в принципе так и думал, но были сомнения, в которых вы помогли разобраться. А вот за закрытие позиции особая благодарность – это для меня открытие.

 
Victuar:

1. Есть ли в MQL5 функция, позволяющая програмно включить TrailingStop для открытой позиции? И если позиция состоит из более чем  одной сделки, как выбрать ту по которой нужно включить TrailingStop?

2. Есть ли  в MQL5 функция закрытия позиции (сделки) ? Я что-то не нашёл ?

Посмотрите этот торговый класс, здесь реализовано пару механизмов трейлинг-стопа, модификация,закрытие,открытие позиций и т.д. Писал под себя, если что не понятно задавайте вопросы. Текущий менеджер не закончен, возможно есть где-то ошибки.
Файлы:
tm.mqh  33 kb
 
ни понил. если использовать double ResultBid() -
текущую рыночную цену предложения (реквота), то по какому (именно) инструменту получим реквоту?
Причина обращения: