Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй торговый сигнал. Получи доступ к миллионам трейдеров!
Serg95off
58
Serg95off 2015.12.18 23:27 

Не судите строго вот мой код

 Имеется 1 открытый ордер, как получить его профит и если он больше 10 то закрыть его, почему это не работает? 


OrderSelect(1, SELECT_BY_POS, MODE_HISTORY);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) { 
           
       double profit=OrderProfit();
       Print(profit);
               if(profit>10){
       
       OrderClose(1,0.1,Ask,3,Green);
}
}
Vasyl Nosal
18221
Vasyl Nosal 2015.12.19 07:19  
OrderSelect(0
Ihor Herasko
8463
Ihor Herasko 2015.12.19 09:27  
eevviill:

Там и дальше проблемки:

1) MODE_HISTORY. Зачем выбирать ордер в истории, если речь идет о рабочем ордере? Выходит, что нужно так:

OrderSelect(0, SELECT_BY_POS);

2) При закрытии ордера используется его индекс, а не тикет. Нужно так:

OrderClose(OrderTicket(), ...);

 

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

Serg95off
58
Serg95off 2015.12.19 10:27  

сделал так , и теперь выдает ошибку при закрытии: 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);
       
       
       }
}
Boris
3883
Boris 2015.12.19 15:42  
Serg95off:

сделал так , и теперь выдает ошибку при закрытии: OrderClose error 138

Не понимаю  это ведь выдается Если запрашиваемая цена открытия сильно устарела

Что не так как исправить ? 


Cделайте цикл и не будет ошибок! И сгодится для любого количества ордеров!
Ihor Herasko
8463
Ihor Herasko 2015.12.19 19:32  
Serg95off:

сделал так , и теперь выдает ошибку при закрытии: OrderClose error 138

Не понимаю  это ведь выдается Если запрашиваемая цена открытия сильно устарела

Что не так как исправить ? 


Как минимум, добавить RefreshRates перед вызовом OrderClose.
khorosh
8058
khorosh 2015.12.20 07:36  
Serg95off:

сделал так , и теперь выдает ошибку при закрытии: OrderClose error 138

Не понимаю  это ведь выдается Если запрашиваемая цена открытия сильно устарела

Что не так как исправить ? 


Цена закрытия должна зависеть от типа ордера. Для бай Bid , для селл Ask.
Alexey Viktorov
5194
Alexey Viktorov 2015.12.20 16:06  
khorosh:
Цена закрытия должна зависеть от типа ордера. Для бай Bid , для селл Ask.

А для Buy и Sell общая цена закрытия ордеров будет OrderClosePrice()

Не документированная фишка mql4 проверено, работает.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий