Ошибка простейшего индикатора...

 

Подскажите в чем может быть ошибка. 
Индикатор строится на High и Low свечей. Никаких заморочек. 
Но иногда на одной свече рисует стрелки в обе стороны.... 
И несмотря на условия ставит стрелки или выше свечи или ниже положенного места.


int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   for(int i=500; i>=0; i--)
     {
       
       if(Close[i+1] < Open[i+1])
        {
         if(Close[i+1] < Low[i+2] && Close[i+2] > Open[i+2] && High[i+1] > High[i+2])
           {
            b2[i+1] = Low[i+1] - 20 *Point;
           }
        } 
      
       if(Close[i+1] > Open[i+1] && Close[i+2] < Open[i+2])
        {
         if(Close[i+1] > High[i+2])
           {
            if(Low[i+1] < Low[i+2])
              {
               b1[i+1] = High[i+1] + 20 *Point;
              }
           }
        }

     }

   return(rates_total);
  }

 Код вроде простейший...
Подскажите пожалуйста в чем ошибся. 

 

В начало цикла добавить:

b1[i+1]=EMPTY_VALUE
b2[i+1]=EMPTY_VALUE
 
Dmitry Fedoseev #:

В начало цикла добавить:

Благодарю Вас. Сейчас внесу поправки. 

Причина обращения: