[MQL4] Функция подсчета прибыли/убытка за период

romanzif

Постоялец
Команда форума
Администратор
Форекс робот VolnaFX
Монет
23,220
Данная функция может пригодиться, для вывода на график прибыли или убытка в инфо-панель советника.
Например как у меня сделано в советнике ТруФибо:
info-panel.jpg

Например я вывожу прибыль за сегодня, за 7 дней и за всё время.
Функция выбирает историю ордеров по текущему графику и Magic номеру.

Код:
//+------------------------------------------------------------------+
double Earn(datetime startDate = 0)
{
   double result = 0;
  
   for (int i = 0; i < OrdersHistoryTotal(); i++)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))
      {
         if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol())
         {
            if (startDate < OrderCloseTime())
               result += OrderProfit() + OrderSwap() + OrderCommission();
         }
      }
   }
  
   return(NormalizeDouble(result, 2));         
}
//+------------------------------------------------------------------+
Пример вызова:

Код:
   datetime d0 = StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)); // сегодня
   while(TimeDayOfWeek(d0)<1 || TimeDayOfWeek(d0)>5) d0-=24*60*60;   
  
   datetime d7 = StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)) - (24*60*60)*7; // 7 дней   
  
   ObjectSetString(chart, earntoday, OBJPROP_TEXT, "Прибыль сегодня: " + DoubleToString(Earn(d0),2) + "$");
   ObjectSetString(chart, earnweek, OBJPROP_TEXT, "Прибыль за 7 дней: " + DoubleToString(Earn(d7),2) + "$");   
   ObjectSetString(chart, earntotal, OBJPROP_TEXT, "Прибыль общая: " + DoubleToString(Earn(),2) + "$");
 

Сигналы

Заработок онлайн

Верх