- Изменение позиций - Торговля - MetaTrader 5 для Android
- Исполнение по запросу - Открытие и закрытие позиций - Торговля - MetaTrader 5 для iPhone
- Исполнение по запросу - Открытие и закрытие позиций - Торговля - MetaTrader 5 для Android
Необходимо отредактировать сделку (поставить стоп и тейк-профит) через некоторое время после её установки. Как это сделать в МТ5? Не нашёл в документации функции OrderModify(), как в MQL4. Если ставить тейк и стоп через класс CTrade, то при живой торговле это почему-то не работает (только в тестере работает), при том, код ошибки = 0 (неизвестный код).
Класс CTrade отлично работает. Может Вы путаете ПОЗИЦИЮ и ОТЛОЖЕННЫЙ ОРДЕР?
вот почему-то всегда нервно глаз дёргается, когда человек со 109 продуктами в маркете подобный вопрос задаёт...
а по сути вопроса, скрин из документации:
вот почему-то всегда нервно глаз дёргается, когда человек со 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), стопы и тейки ставятся, а в живой торговле:
- www.mql5.com
На МТ5 пока очень мало продуктов, почти всё там на MQL4, по-этому с 5-кой пока проблемы возникают.
Из документации, по CTrade надо использовать не GetLastError, а "Необходимо проверять результат выполнения торгового запроса (код возврата торгового сервера) вызовом метода ResultRetcode()."
Vladimir Karputov, мне нужно модифицировать уже открытую позицию. Сейчас сделано так:
В результате, в тестере всё нормально (результат: done), стопы и тейки ставятся, а в живой торговле:
Судя по всему, у вас неверные данные в структуре запроса. поэтому OrderSend возвращает false. Поэтому и код возврата 0. т.е. запроса не было, он просто остался нулём с момента обнуления структур.
У вас класс точно функционирует нормально? может какие переопределения криво сделаны где-то. Если вы уверены что всё верно, проверьте структуру запроса OrderCheck, получите доп.информацию.
вот почему-то всегда нервно глаз дёргается, когда человек со 109 продуктами в маркете подобный вопрос задаёт...
а по сути вопроса, скрин из документации:
Ээээ... А я вот просто ох... конкретно удивлен... Сделать столько продуктов, и задавать подобный вопрос... Чего-то я в современной
продуктоштамповке не понимаю...
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();
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования