我如何计算某一天的所有利润?

How do i calculate all the profit for a certain day?

double CheckProfitSofar() 
{
      datetime today = iTime(_Symbol,PERIOD_D1,0);
      int dDay=TimeDay(today);
      int dMonth = TimeMonth(today);
      int dYear = TimeYear(today);
      int todayYear, todayMonth, todayDay;
      datetime opnOrdTime = 0;
      double opnOrdProfit =0;
      double addLoss = 0;
      for(int s=0 ; s<OrdersHistoryTotal(); s++) 
      {
         if ( OrderSelect( s, SELECT_BY_POS, MODE_HISTORY ) == true )
            opnOrdTime = OrderCloseTime();
            todayYear=TimeYear(opnOrdTime);
            todayMonth =TimeMonth(opnOrdTime);
            todayDay=TimeDay(opnOrdTime);
            if ( dYear==todayYear && dMonth==todayMonth && dDay==todayDay )

         totalLoss_Profit += (OrderProfit() + OrderSwap() + OrderCommission()); 
       }
       Comment(dYear," ",dMonth," ",dDay," ",todayYear," ",todayMonth," ",todayDay);  
   return totalLoss_Profit;
}

我想要的是计算特定日期的利润(+ve 或-ve)。例如今天。我使用 "datetime today" 获得今天第一根蜡烛的开盘时间,然后跟随。它没有返回准确的值。请帮忙。提前致谢。

您只需要 datetime timeStart = iTime(_Symbol,PERIOD_D1,i) 收到的那一天的开始和那一天的结束 datetime timeEnd=timeStart+PeriodSeconds(PERIOD_D1);。然后循环关闭交易并在 OrderClosePrice() 不在范围内时将其过滤掉。

double getClosedPnlOfDay(const int indexDay)
{
   const datetime timeStart=iTime(_Symbol,PERIOD_D1,i),
                  timeEnd = timeStart+PeriodSeconds(PERIOD_D1);
   double result=0.;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
   {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      //filter by OrderSymbol() and OrderMagicNumber() here
      if(OrderCloseTime()<timeStart || OrderCloseTime()>=timeEnd) continue;
      result+=OrderProfit() + OrderCommission() + OrderSwap();
   }
}