index XXXX is out of range [0-0]

 
index XXXX is out of range [0-0]

В логах вот такая запись.
XXXX - это число от 0 и более

Что это за выход из диапазона [0-0]??? Что это за ошибка, почему возникла?
Вот кусок кода:
int start()
  {
   int    limit;
   int    counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars<0) return(-1);
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st additional buffer
   for(int i=0; i<limit; i++)
         ind_buffer3[i] = (High[i] - Low[i])/2+Low[i];
   
   for(i=0; i<limit; i++)
   {
      if (High[i]>High[i+1])
          if (Open[i]<=ind_buffer3[i])
              if (Close[i]<=ind_buffer3[i])             
               {
                  ind_buffer1[i] = ind_buffer3[i];
                  ind_buffer2[i] = 0.0;
               }
      
      if (Low[i]<Low[i+1])
          if (Open[i]>=ind_buffer3[i])
              if (Close[i]>=ind_buffer3[i])
               {
                  ind_buffer2[i] = ind_buffer3[i];
                  ind_buffer1[i] = 0.0;
               }
   }      
//---- done
   return(0);
  }



Даже если не делать таких 3-х этажных IF'ов, всеравно ничего не меняет.

 
Да, забыл сказать:
На графике естесстенно отображается какая-то галиматья, а не центр нужного (удовлетворяющего условиям) бара :(
 
High[i+1], Low[i+1] при первом вызове индикатора (когда IndicatorCounted()=0) на последнем цикле обращаются за пределы массива истории. Здесь следует использовать for(int i=0; i<limit-1; i++). А галиматью показывает, потому что галиматью запрограммировал. К тому же не показал блок инициализации.
 
index XXXX is out of range [0-0]

попытка обращения к массиву нулевой длины