Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Начни зарабатывать с помощью Маркета. Опубликуй продукт!
palesandr
70
palesandr 2011.11.21 09:37 
Можна ли сделать советник, который будет закрывать все ордера при определенном значении общей прибыли?
Mihail Marchukajtes
3296
Mihail Marchukajtes 2011.11.21 09:39  
Думаю можно....
palesandr
70
palesandr 2011.11.21 09:43  
{ 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 2011.11.21 09:44  
Что сделать что б это работало?
Vladyslav Goshkov
1960
Vladyslav Goshkov 2011.11.21 09:46  
palesandr:
Что сделать что б это работало?
Написать правильно.
palesandr
70
palesandr 2011.11.21 09:48  
Может кто-нибуть помочь?
Левитин Сергей В.
5155
Левитин Сергей В. 2011.11.21 09:49  
palesandr:
Что сделать что б это работало?

на сайте одного хорошего человека есть бесплатный советник . возьмите посмотрите как это сделано там. вопросов на эту тему больше не будет.
palesandr
70
palesandr 2011.11.21 09:51  
Спасибо!
vitaly
49
vitaly 2011.11.21 10:17  
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);


}

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

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