Подсчет PF в реалтайме

 

Решил сделать маленький индикатор для моих сделок (или советник не суть) но при убирании из условия OrderSymbol()==Symbol() Он не пашет. Вот код, в чем тут может быть дело ?

void start() {
int num=0;
   int TotalOrd, TekOrd, pos1; 
   int a=9999999999999, counter=0;
   double b=0, Profit=0, PF, Loss=0;    
   if (OrdersHistoryTotal()==0) return(0);
   TotalOrd = OrdersHistoryTotal();
   for(TekOrd = TotalOrd; TekOrd >= 0; TekOrd--) { OrderSelect(TekOrd, SELECT_BY_POS, MODE_HISTORY);
         if (OrderMagicNumber()==num && OrderSymbol()==Symbol() && OrderCloseTime()<a && (OrderType()==OP_BUY || OrderType()==OP_SELL)) {
            a=OrderCloseTime();
            if (OrderProfit()>0) Profit=Profit+OrderProfit();
            if (OrderProfit()<=0) Loss=Loss-OrderProfit();
            counter=counter+1;
            }
         if (counter==20) break;
   }
if (Loss!=0) PF=Profit/Loss;
Comment("PF последних 20 сделок : ",PF);
return(0);
}
 

1. Индексы ордеров, как индексы массивов начинаются с нуля, поэтому в цикле for нужно писать TekOrd = TotalOrd - 1;
2. Функция start определена как void, поэтому строка return(0); не нужна.