Что-то странное. Объясните пожалуйста.

 
Имею код эксперта

int Run,n;
double sum1,sum2,sum3;   

int init()
{
   Run=1;
   n=1000;
   sum1=0.0;
   for(int i=0;i<=n-1;i++)
      sum1+=Close[i];
   return(0);
}

int start()
{
   int i;
   if(Run==1)
   {
      sum2=0.0;
      for(i=0;i<=n-1;i++)
         sum2+=Close[i];
   }
   if(Run==2)
   {
      sum3=0.0;
      for(i=0;i<=n-1;i++)
         sum3+=Close[i+1];
      Print("sum1=",sum1," sum2=",sum2," sum3=",sum3);
   }
   Run++;
   return(0);
}



Запускаю на М15 валютные пары. Получаю

2006.10.02 00:15 test EURUSD,M15: sum1=1271.2531 sum2=1271.2531 sum3=1271.253
2006.10.02 00:15 test GBPUSD,M15: sum1=1888.4309 sum2=1888.4309 sum3=1888.431
2006.10.02 00:15 test USDJPY,M15: sum1=117241.6999 sum2=117241.6999 sum3=117241.6599

Все суммы (sum1, sum2 и sum3) должны быть одинаковыми. Но получаются разными. Мой эксперт не работает из-за этого. помогите разобраться.

 
После дебуггинг понял. Тестирование производил по Open Prices Only. Поэтому Close[0]=Open[0] на каждом новом баре. Поэтому смотря в прошлое, Close за какой-то бар не совпадает с тем Close когда тот бар был новым (нулевым).