Как называется функция OrderModify в МQL5?

 
Необходимо отредактировать сделку (поставить стоп и тейк-профит) через некоторое время после её установки. Как это сделать в МТ5? Не нашёл в документации функции OrderModify(), как в MQL4. Если ставить тейк и стоп через класс CTrade, то при живой торговле это почему-то не работает (только в тестере работает), при том, код ошибки = 0 (неизвестный код).
 
Alexander Nikolaev:
Необходимо отредактировать сделку (поставить стоп и тейк-профит) через некоторое время после её установки. Как это сделать в МТ5? Не нашёл в документации функции OrderModify(), как в MQL4. Если ставить тейк и стоп через класс CTrade, то при живой торговле это почему-то не работает (только в тестере работает), при том, код ошибки = 0 (неизвестный код).

Класс CTrade отлично работает. Может Вы путаете ПОЗИЦИЮ и ОТЛОЖЕННЫЙ ОРДЕР?

 

вот почему-то всегда нервно глаз дёргается, когда человек со 109 продуктами в маркете подобный вопрос задаёт...

а по сути вопроса, скрин из документации:

 
Igor Zakharov:

вот почему-то всегда нервно глаз дёргается, когда человек со 109 продуктами в маркете подобный вопрос задаёт...

а по сути вопроса, скрин из документации:

На МТ5 пока очень мало продуктов, почти всё там на MQL4, по-этому с 5-кой пока проблемы возникают.

Из документации, по CTrade надо использовать не GetLastError, а "Необходимо проверять результат выполнения торгового запроса (код возврата торгового сервера) вызовом метода ResultRetcode()."

Vladimir Karputov, мне нужно модифицировать уже открытую позицию. Сейчас сделано так:

bool bRes = trade.PositionModify(oTicket,sl,tp); // Установка стопа и профита через класс CTrade.
if (_printInfo)
      Print("PositionModify result: ",trade.ResultRetcodeDescription());

if (!bRes)   
      Print("PositionModify fail! Result code = ",trade.ResultRetcode()); 

В результате, в тестере всё нормально (результат: done), стопы и тейки ставятся, а в живой торговле:

err

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / ResultRetcode
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / ResultRetcode
  • www.mql5.com
Стандартная библиотека / Торговые классы / CTrade / ResultRetcode - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Nikolaev:

На МТ5 пока очень мало продуктов, почти всё там на MQL4, по-этому с 5-кой пока проблемы возникают.

Из документации, по CTrade надо использовать не GetLastError, а "Необходимо проверять результат выполнения торгового запроса (код возврата торгового сервера) вызовом метода ResultRetcode()."

Vladimir Karputov, мне нужно модифицировать уже открытую позицию. Сейчас сделано так:

В результате, в тестере всё нормально (результат: done), стопы и тейки ставятся, а в живой торговле:

Судя по всему, у вас неверные данные в структуре запроса. поэтому OrderSend возвращает false. Поэтому и код возврата 0. т.е. запроса не было, он просто остался нулём с момента обнуления структур.

У вас класс точно функционирует нормально? может какие переопределения криво сделаны где-то.  Если вы уверены что всё верно, проверьте структуру запроса OrderCheck, получите доп.информацию.

 
Igor Zakharov:

вот почему-то всегда нервно глаз дёргается, когда человек со 109 продуктами в маркете подобный вопрос задаёт...

а по сути вопроса, скрин из документации:

Ээээ... А я вот просто ох... конкретно удивлен... Сделать столько продуктов, и задавать подобный вопрос... Чего-то я в современной продуктоштамповке не понимаю...

 
Alexander Nikolaev а все-же что вас интересует.
bool bRes = trade.PositionModify(oTicket,sl,tp); // Установка стопа и профита через класс CTrade.

Отложенный ордер или открытая торговая позиция? Может все-же нужно использовать

   bool              OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                                 const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit=0.0);
а не
   bool              PositionModify(const string symbol,const double sl,const double tp);
   bool              PositionModify(const ulong ticket,const double sl,const double tp);
 

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

trade.ResultOrder(); вместо trade.ResultDeal(); 

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