Посчитать профит за месяц и за неделю

 

Здравствуйте, писал советника и решил добавить инфопанель. Знаю как посчитать прибыль за все время торгов и за день, но есть вопросы по поводу месяца и недели

Правильно ли написана функция по месяцу? (пока нет возможности проверить)

double HistoryWeek() 
  {
  double result = 0;
  for (int i=OrdersHistoryTotal()-1; i>=0; i--) 
    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
      if (OrderType ()> 1) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          {
          if (TimeDayOfWeek(OrderCloseTime()) == DayOfWeek()) result = OrderProfit() + OrderSwap() + OrderCommission();
          }
      }
    }
   return(NormalizeDouble(result, 2));  
  }


С написанием недельной функции -.- в голову ничего не приходит, может кто пожскажет

 
sin_:

Здравствуйте, писал советника и решил добавить инфопанель. Знаю как посчитать прибыль за все время торгов и за день, но есть вопросы по поводу месяца и недели

Правильно ли написана функция по месяцу? (пока нет возможности проверить)


С написанием недельной функции -.- в голову ничего не приходит, может кто пожскажет

Я в MQL4 вообще никакой, но вроде так должно считать за последнюю неделю.

if (iTime(_Symbol,PERIOD_D1,DayOfWeek())<=OrderCloseTime()) result = OrderProfit() + OrderSwap() + OrderCommission(); 

 
double Profit()
  {
   double result=0.0;
   for(int pos=OrdersHistoryTotal()-1; pos>=0; pos--)
     {
      if(!OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY))
         continue;
      if(OrderSymbol()!=Symbol())
         continue;
      if(OrderType()>1)
         continue;
      if(iTime(_Symbol,PERIOD_D1,DayOfWeek())<=OrderCloseTime())
         result += OrderProfit() + OrderSwap() + OrderCommission();
     }
   return(result);
  }

 

Как то так

Файлы:
is-Profit.mq4  46 kb
 
datetime m_time;
m_time = iTime(_Symbol,PERIOD_W1,0);    // С начала текущей недели
m_time = TimeCurrent()-60*60*24*7;      // За последнюю неделю
m_time = iTime(_Symbol,PERIOD_MN1,0);   // С начала текущего месяца
m_time = TimeCurrent()-60*60*24*30;     // За последние 30 дней

if(iTime(m_time<=OrderCloseTime())
     result = OrderProfit() + OrderSwap() + OrderCommission();

Смотря как вам считать нужно

 

oo) Спасибо.

И оказывется из за моей невнимательности не работало)) (забыл изменить на MODE_HISTORY)