Скачать MetaTrader 5

Альтернатива TP

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
palesandr
70
palesandr  
Можна ли сделать советник, который будет закрывать все ордера при определенном значении общей прибыли?
Mihail Marchukajtes
4267
Mihail Marchukajtes  
Думаю можно....
palesandr
70
palesandr  
{ for(int i=1; i<=OrdersTotal(); i++)          
   { if (OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
  {  if (OrderProfit()>BB)
       if(OrderType()==OP_SELL && OrderSymbol()==Symbol() )
                  {
                     OrderClose(OrderTicket(),OrderLots(),Bid,3);
                  }
 
       if(OrderType()==OP_BUY && OrderSymbol()==Symbol() )
                  {
                     OrderClose(OrderTicket(),OrderLots(),Ask,3);
                  }
                  }return(0);
   }}
palesandr
70
palesandr  
Что сделать что б это работало?
Vladyslav Goshkov
2148
Vladyslav Goshkov  
palesandr:
Что сделать что б это работало?
Написать правильно.
palesandr
70
palesandr  
Может кто-нибуть помочь?
Левитин Сергей В.
5163
Левитин Сергей В.  
palesandr:
Что сделать что б это работало?

на сайте одного хорошего человека есть бесплатный советник . возьмите посмотрите как это сделано там. вопросов на эту тему больше не будет.
palesandr
70
palesandr  
Спасибо!
vitaly
48
vitaly  
palesandr:
Можна ли сделать советник, который будет закрывать все ордера при определенном значении общей прибыли?


Элементарно

extern double ProfitClose //это при какой прибыли всё закрыть
extern double pop //количество попыток закрытия
int q;
 
if(OrdersProfit()>=ProfitClose)
      {
         for (int i=OrdersTotal()-1;i>=0;i--)
         {
            bool closed;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          //закрываем покупку 
            if(OrderType()==OP_BUY) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
                  if(closed==true)q=pop;
                  }
            }
           //закрываем продажу
            if(OrderType()==OP_SELL) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
                  if(closed==true)q=pop;
                  }
            }
            Sleep(1000);
//закрываем отложенники, если нужно
            if(OrderType()>1 ) OrderDelete(OrderTicket());
         }
      }

double OrdersProfit()
{
   
  double rezultSymb=0;
  string SMB=Symbol();
  int i;
  for (i=OrdersTotal()-1;i>=0;i--)
   {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
     {
      if(OrderSymbol()!= SMB) continue;
      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
       {
        rezultSymb+=OrderProfit();
       } 
     }
   }
  return(rezultSymb);


}

Как то так.....

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