Скачать MetaTrader 5

Как подсчитать прибыльные и убыточные ордера в архиве?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Авторизуйся на MQL5.community с помощью OpenID. Это удобно!
Dima DD
211
Dima DD 2015.06.02 13:48 
Есть ли такая функция, которая суммирует кол-во ордеров архива? а дальше уже распределю по символу, по профиту, по времени.
Mikhail Filimonov
5931
Mikhail Filimonov 2015.06.02 14:45  
D4135:
Есть ли такая функция, которая суммирует кол-во ордеров архива? а дальше уже распределю по символу, по профиту, по времени.
Уточните платформу
Dima DD
211
Dima DD 2015.06.02 16:54  
Михаил:
Уточните платформу
    mt4
Ihor Herasko
9046
Ihor Herasko 2015.06.02 21:54  

"Архив" в смысле история? Если история, то нужно писать свой код, который перебирает все закрытые ордера, выбирает нужные (относящиеся к определенному символу или магику) и подсчитывает количество тех и других ордеров.

Если же под "архивом" подразумевается то, что было сжато брокером, то вообще никак. 

Dima DD
211
Dima DD 2015.06.03 15:30  
Игорь Герасько:

"Архив" в смысле история? Если история, то нужно писать свой код, который перебирает все закрытые ордера, выбирает нужные (относящиеся к определенному символу или магику) и подсчитывает количество тех и других ордеров.

Если же под "архивом" подразумевается то, что было сжато брокером, то вообще никак. 

Ордера за последний день надо посчитать

//+------------------------------------------------------------------+ 
 void OnTick()
 {
  int count = 0;
    {  
  for(int trade = OrdersHistoryTotal()-1; trade >= 0; trade--)
     {
  OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY);
  if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic )
        {
         if(OrderType()== OP_BUY) count++; // после выбора, как суммировать их все 
         Comment(StringFormat("Количество ордеров в архиве\nBUY = %G",count++));
        }
       }    
    } 
  }
 

//+------------------------------------------------------------------+ 
Alekseu Fedotov
818
Alekseu Fedotov 2015.06.03 18:52  
D4135:

Ордера за последний день надо посчитать

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int Loss = NumberOfLossPosToday();
   int Profit = NumberOfProfitPosToday();
   
   Comment("Loss = ",Loss,"  Profit = ",Profit);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество убыточных позиций, закрытых сегодня.     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfLossPosToday(string sy="",int op=-1,int mn=-1) 
  {
   datetime t;
   int      i,k=OrdersHistoryTotal(),kp=0;

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         if(OrderSymbol()==sy || sy=="") 
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) 
              {
               if(op<0 || OrderType()==op) 
                 {
                  if(mn<0 || OrderMagicNumber()==mn) 
                    {
                     t=OrderCloseTime();
                     if(Year()==TimeYear(t) && DayOfYear()==TimeDayOfYear(t)) 
                       {
                        if(OrderProfit()<0) kp++;
                       }
                    }
                 }
              }
           }
        }
     }
   return(kp);
  }
//+------------------------------------------------------------------+
int NumberOfProfitPosToday(string sy="",int op=-1,int mn=-1) 
  {
   datetime t;
   int      i,k=OrdersHistoryTotal(),kp=0;

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         if(OrderSymbol()==sy || sy=="") 
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) 
              {
               if(op<0 || OrderType()==op) 
                 {
                  if(mn<0 || OrderMagicNumber()==mn) 
                    {
                     t=OrderCloseTime();
                     if(Year()==TimeYear(t) && DayOfYear()==TimeDayOfYear(t)) 
                       {
                        if(OrderProfit()>0) kp++;
                       }
                    }
                 }
              }
           }
        }
     }
   return(kp);
  }
//+------------------------------------------------------------------+
Как-то так
Dima DD
211
Dima DD 2015.06.04 06:27  
Alekseu Fedotov:
Как-то так
    То что искал.Спасибо.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий