Как получить профит последних N сделок?

 

Есть задача получить сумму профитов последних n прибыльных сделок, как только накапливается необходимое количество сделок, если n сделок пока не достигнуто либо их сумма меньше спреда*2 то возвращается значение по умолчанию 10000.

Но что-то пошло не так и всегда возвращается дефолтное значение.

Есть подозрение на то что я не верно итерируюсь по массиву истории HistoryDealGetTicket(historyTotal-i) 

int GetProfitSum(int total)
  {
   int result=10000;
   HistorySelect(0,TimeCurrent());
   uint historyTotal=HistoryDealsTotal();
   if(total > historyTotal)
      return(result);

   int counter=0;
   double accumulator=0.0;

   for(int i=0; i < historyTotal && counter < total; i++)
     {
      ulong ticket=HistoryDealGetTicket(historyTotal-i);
      if(HistoryDealGetString(ticket, DEAL_SYMBOL) == symbolInfo.Name() && HistoryDealGetInteger(ticket, DEAL_MAGIC) == magic_number)
        {
         double profit=HistoryDealGetDouble(ticket, DEAL_PROFIT);
         if(profit>0)
           {
            counter++;
            accumulator += profit;
           }
        }
     }

   int sum=accumulator / symbolInfo.Point();
   int duoSpread=SymbolInfoInteger(Symbol(), SYMBOL_SPREAD) * 2;
   if(total == counter-1 && sum > duoSpread)
      result=sum;

   return(result);
  }
 

Если будете запрашивать больше, чем есть в истории - то будет вылет по-умолчанию:

int GetProfitSum(int total)
  {
   int result=10000;
   HistorySelect(0,TimeCurrent());
   uint historyTotal=HistoryDealsTotal();
   if(total > historyTotal)
      return(result);


ВНИМАНИЕ: Тестер (при запуске в режиме) "Отладка на истории" ничего не знает о Вашем торговом счёте.