OrderSelect(0
Там и дальше проблемки:
1) MODE_HISTORY. Зачем выбирать ордер в истории, если речь идет о рабочем ордере? Выходит, что нужно так:
OrderSelect(0, SELECT_BY_POS);
2) При закрытии ордера используется его индекс, а не тикет. Нужно так:
OrderClose(OrderTicket(), ...);
Ну а по большому счету, такой подход слишком ограничен в своих возможностях, т. к. не учитывает огромное количество разных ситуаций.
сделал так , и теперь выдает ошибку при закрытии: OrderClose error 138
Не понимаю это ведь выдается Если запрашиваемая цена открытия сильно устарела
Что не так как исправить ?
OrderSelect(0, SELECT_BY_POS); if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) { double profit=OrderProfit(); Print("profit",profit); if(profit>10){ OrderClose(OrderTicket(),0.1,Ask,3,Green); } }
сделал так , и теперь выдает ошибку при закрытии: OrderClose error 138
Не понимаю это ведь выдается Если запрашиваемая цена открытия сильно устарела
Что не так как исправить ?
сделал так , и теперь выдает ошибку при закрытии: OrderClose error 138
Не понимаю это ведь выдается Если запрашиваемая цена открытия сильно устарела
Что не так как исправить ?
сделал так , и теперь выдает ошибку при закрытии: OrderClose error 138
Не понимаю это ведь выдается Если запрашиваемая цена открытия сильно устарела
Что не так как исправить ?
Цена закрытия должна зависеть от типа ордера. Для бай Bid , для селл Ask.
А для Buy и Sell общая цена закрытия ордеров будет OrderClosePrice()
Не документированная фишка mql4 проверено, работает.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не судите строго вот мой код
Имеется 1 открытый ордер, как получить его профит и если он больше 10 то закрыть его, почему это не работает?