Скачать MetaTrader 5

Закрытие по профиту определенного маджика

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

Доброго времени суток!

Возник вопрос может кто нибудь поможет.

 Допустим открыта сделка с magic=999 надо закрыть ордер по достижению определенной прибыли(по маджик 999),но открыты скажем 3 ордера с magic=111 как реализовать? 


  if (OrdersTotal()==1) 

   if(profit>=tp_in_money1 || a>0) 

   {

      closeall();

      closeall();

      closeall();

      //a++;

      //if(total()==0) a=0;

   }

   

   

   if (OrdersTotal()==2) 

   if(profit>=tp_in_money2 || a>0) 

   {

      closeall();

      closeall();

      closeall();

      //a++;

      //if(total()==0) a=0;

      

      }

Вот код где tp_in_money1, tp_in_money2 и т.д. у меня суммы профита при разном количестве открытых ордеров.Что надо всунуть в этот код чтоб сова закрывала профит только в ордерах с определенным маджиком?

Vladimir Pastushak
88332
Vladimir Pastushak  
DrovosekBYE:

Доброго времени суток!

Возник вопрос может кто нибудь поможет.

 Допустим открыта сделка с magic=999 надо закрыть ордер по достижению определенной прибыли(по маджик 999),но открыты скажем 3 ордера с magic=111 как реализовать? 


  if (OrdersTotal()==1)

if(OrderMagicNumber()==999)

   if(profit>=tp_in_money1 || a>0) 

   {

      closeall();

      closeall();

      closeall();

      //a++;

      //if(total()==0) a=0;

   }

   

   

   if (OrdersTotal()==2) 

   if(profit>=tp_in_money2 || a>0) 

   {

      closeall();

      closeall();

      closeall();

      //a++;

      //if(total()==0) a=0;

      

      }

Вот код где tp_in_money1, tp_in_money2 и т.д. у меня суммы профита при разном количестве открытых ордеров.Что надо всунуть в этот код чтоб сова закрывала профит только в ордерах с определенным маджиком?

Vladimir Sergey
36
Vladimir Sergey  
Не Работает! Не закрывает ордера
Vladimir Sergey
36
Vladimir Sergey  

Может проблема в том что "Все открытые ордера" надо заменить на "Все открытые ордера с маджик 999" .????

Проблема в   if (OrdersTotal()==1) 

Он считает не только свои но и чужие, только что сова закрыла 6ть сделок, по заданному профиту для 7 сделок , 6 закрыто 1 осталась. Закрыла только ордера с OrderMagicNumber()==999

Alexey Viktorov
17841
Alexey Viktorov  
DrovosekBYE:

Может проблема в том что "Все открытые ордера" надо заменить на "Все открытые ордера с маджик 999" .????

Проблема в   if (OrdersTotal()==1) 

Он считает не только свои но и чужие, только что сова закрыла 6ть сделок, по заданному профиту для 7 сделок , 6 закрыто 1 осталась. Закрыла только ордера с OrderMagicNumber()==999

Может проблема в том что не внимательно читаешь документацию? Или вообще не читал никогда?

Что такое profit и tp_in_money1? Что такое closeall() и как ордера закрываются?

Vladimir Sergey
36
Vladimir Sergey  

 tp_in_money1- это профит в валюте депозита

функция profit -

 

 double profit=0;

   for(i=0; i<OrdersTotal(); i++)

   {

      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic || OrderType()>1) continue;

      profit+=OrderProfit();

 

В документации пока что пытаюсь разобраться,я не программист,я только учусь. Пытаюсь подстроить не мной написанную сову под себя

Vladimir Sergey
36
Vladimir Sergey  
Тут ошибка??? profit+=OrderProfit();
Vladimir Karputov
Модератор
75845
Vladimir Karputov  
DrovosekBYE:


Пожалуйста, при вставке кода в сообщение, оформляйте код правильно: Правильно вставляем код на форуме
Vladimir Pastushak
88332
Vladimir Pastushak  

На

   double
   profit1=0,
   price1=0,
   tp_in_money1=50; // например 50 долларов или рублей или евро
   int magic1=999,
   Slip=30,
   i=0;
   for(i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
         if(OrderSymbol()==_Symbol)
           {
            if(OrderMagicNumber()==magic1)
              {
               profit1=OrderProfit()+OrderSwap()+OrderCommission();
               if(profit1>=tp_in_money1)
                  price1=OrderType()==OP_BUY?Bid:Ask;
               if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(price1,_Digits),Slip,clrRed)==true)
                  Print("OrderClose Ok !!!"); else Print("OrderClose Error "+(string)GetLastError());
              }
           }
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий