Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
да. компилировал.
Можите сами проверить.
(если есть желание.)
Ну во-первых, ошибка при определении свободной маржи (кстати зачем она нужна при модификации ордера? лот все равно не можете менять на filled позиции)
То есть, не хватает type, volume и price (я заменил для пробы request.price -> price, поскольку request.price не определена)
Во-вторых, перед вызовом OrderSend(request,result), Вы не задаете номер ордера, который нужно модифицировать в структуре request. MT5 принимает на модификацию ордер 0, которого не существует. Вот и все.
кстати зачем она нужна при модификации ордера?
Я так понимаю что в справке неточность:
· SL & TP Modification
Торговый приказ на модификацию уровней StopLoss и/или TakeProfit. Требуется указание 4 полей:
·action
·symbol
·sl
·tp
А должно быть по сути
SL & TP Modification
Торговый приказ на модификацию уровней StopLoss и/или TakeProfit. Требуется указание 5 полей:
·action
·order
·symbol
·sl
·tp
собственно я же пост поэтому и создал, что бы уточнить как необходимо прописывать модификацию.
Я бы передавал тикет ордера в функцию модификации, СЛ и ТП. Затем по данным выбранного ордера заполнял нужные request поля и потом OrderSend.
Проверку маржи только на открытие позиции, или при изменении лота отложенных ордеров... хотя особого смысла в этом не вижу даже при открытии, разве что на микро счетах работать...
Я бы передавал тикет ордера в функцию модификации, СЛ и ТП. Затем по данным выбранного ордера заполнял нужные request поля и потом OrderSend.
Проверку маржи только на открытие позиции, или при изменении лота отложенных ордеров... хотя особого смысла в этом не вижу даже при открытии, разве что на микро счетах работать...
Попробовал разные варианты, в том числе и вот такой:
и получил вот такую ошибку:
вы не могли А вы не могли бы пример привести как правильно прописывается модификация?
Попробовал разные варианты, в том числе и вот такой:
и получил вот такую ошибку:
Так Вы не указываете номер ордера для модификации. Укажите его.
Вы обнулили структуру result, и задаете request.order = result.order , по сути 0. А нужно указать номер Вашего ордера, который Вы хотите модифицировать.
bool ModifyOrder(int pTicket, double price, double prc_bid)
{
...
request.order = pTicket;
...
}
А сам номер тикета передавайте при вызове ModifyOrder.
К тому же посмотрите какой ТП вы выставляете, он равен цене Bid, чего брокер не примет никогда. Либо закрывайте ордер, либо ставьте на минимально допустимое расстояние от текущей цены.
Посмотрите веточку https://www.mql5.com/ru/articles/643
К тому же посмотрите какой ТП вы выставляете, он равен цене Bid, чего брокер не примет никогда. Либо закрывайте ордер, либо ставьте на минимально допустимое расстояние от текущей цены.
Посмотрите веточку https://www.mql5.com/ru/articles/643
(у меня на демо именно такой счет.)
>> Либо закрывайте ордер
А это реально сделать, как то кроме модификации?
(я что уже только не пробовал.)
Даже на ECN счетах нельзя закрытся по биду?
(у меня на демо именно такой счет.)
>> Либо закрывайте ордер
А это реально сделать, как то кроме модификации?
(я что уже только не пробовал.)
Ну закрытие вычитанием лота позиции вроде бы. Хотя рекомендуют все же стандартные библиотеки.
А выставить ТП текущей ценой никто не даст.
Ну закрытие вычитанием лота позиции вроде бы. Хотя рекомендуют все же стандартные библиотеки.
А выставить ТП текущей ценой никто не даст.