Заработок сегодня

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Allmazzzoff
40
Allmazzzoff  
Привет всем! Киньте код пожалуйста, или наведите на путь, вообщем нужно чтобы показывал заработок по валютной паре за сегодня, и можно еще общий заработок за сегодня по всем валютам, mql4
Alexander Ivanov
17211
Alexander Ivanov  

Comment("Заработок сегодня= "+ DoubleToStr(DayProfit(0),1)); 


double DayProfit(int Den)  {

   int TYear,TMonth,TDay,OCTime;

   int Orders=OrdersHistoryTotal();

   double Profit=0;

   for(int i=0; i<Orders; i++)  {

   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      OCTime=OrderCloseTime();

      TYear=TimeYear(OCTime);

      TMonth=TimeMonth(OCTime);

      TDay=TimeDay(OCTime);

      if(TYear==Year() && TMonth==Month() && TDay==Day()-Den)  {

      if(OrderType()==OP_BUY || OrderType()==OP_SELL)Profit+=OrderProfit()+OrderCommission()+OrderSwap();   }  }

   return(Profit);   }


Vladislav Boyko
2040
Vladislav Boyko  
Alexander Ivanov:

Comment("Заработок сегодня= "+ DoubleToStr(DayProfit(0),1)); 


double DayProfit(int Den)  {

   int TYear,TMonth,TDay,OCTime;

   int Orders=OrdersHistoryTotal();

   double Profit=0;

   for(int i=0; i<Orders; i++)  {

   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      OCTime=OrderCloseTime();

      TYear=TimeYear(OCTime);

      TMonth=TimeMonth(OCTime);

      TDay=TimeDay(OCTime);

      if(TYear==Year() && TMonth==Month() && TDay==Day()-Den)  {

      if(OrderType()==OP_BUY || OrderType()==OP_SELL)Profit+=OrderProfit()+OrderCommission()+OrderSwap();   }  }

   return(Profit);   }


Вы ведь так с каждым разом по всей истории бегать будете. Я бы выходил из цикла как только встретится ордер, который закрыт не сегодня (при этом, ища справа налево). Безопасней будет предварительно отсортировать историю по времени закрытия.

input int magic = 1;

double getProfitFromTime(datetime time)
  {
   double profit = 0;
   
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == Symbol() && OrderMagicNumber() == magic)
        {
         if(OrderCloseTime() < time)
            break;
         
         profit += OrderProfit() + OrderCommission() + OrderSwap();
        }
   
   return(profit);
  }

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

double var = getProfitFromTime(iTime(NULL, PERIOD_D1, 0));
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий