Проблема с индикатором!

 

Товарищи, есть проблема с индюком. Этот индюк должен рисовать канал на графике цен, исходя из максимальных и минимальных значений другого индикатора, в котором соответственно есть буфер с максимальными и минимальными значениями. Естественно в этом буфере есть пустые значения (EMPTY_VALUE) когда нету ни максимума ни минимума. Вроде код правильный, но ничего не рисуется, подскажите, что неправильно то...Привожу код:


#property indicator_chart_window
#property indicator_buffers 2

#property indicator_color1 Green
#property indicator_color2 Violet

#property indicator_width1 2
#property indicator_width2 2

double Buffer1[],
       Buffer2[],
       MAX[],
       MIN[];

int init()
  {
     IndicatorBuffers (4);
     
     SetIndexBuffer (0,Buffer1);
     SetIndexStyle(0,DRAW_LINE);
     
     SetIndexBuffer (1,Buffer2);
     SetIndexStyle(1,DRAW_LINE);
     
     SetIndexBuffer (2,MAX);
     SetIndexStyle(2,DRAW_NONE);
     
     SetIndexBuffer (3,MIN);
     SetIndexStyle(3,DRAW_NONE);

   return(0);
  }


int deinit()
  {

   return(0);
  }

int start()
  {
   int counted_bars=IndicatorCounted();
    if(counted_bars > 0) counted_bars--;
   int limit = Bars - counted_bars;
   
//1) Забираю все максимумы из другого индикатора в этот индюк:
   for(int i=0; i< limit; i++)
   {
    MAX[i] = iCustom(NULL,0,"Indicator",5,2,i);
    MIN[i] = iCustom(NULL,0,"Indicator",5,3,i);     
   }

2) Если Максимум на индюке существует, то строить линию на баре графика цен,
соответствующему бару максимума в индюке, если максимума нет, то продолжить 
строить линию от предыдущего бара. Аналогично с минимумами.  
   for(i=0; i< limit; i++)
   {
    if (MAX[i+1]!=EMPTY_VALUE) Buffer1[i+1]=High[i+1]; 
    else                       Buffer1[i+1]=Buffer1[i+2];
    if (MIN[i+1]!=EMPTY_VALUE) Buffer2[i+1]=Low [i+1]; 
    else                       Buffer2[i+1]=Buffer2[i+2];
   }
   
   return(0);
  }
 

Рисует вот так:


 
Noterday >>:

Вроде код правильный, но ничего не рисуется, подскажите, что неправильно то...Привожу код:

 for(i=0; i< limit; i++)
   {
    if (MAX[i+1]!=EMPTY_VALUE) Buffer1[i+1]=High[i+1]; 
    else                       Buffer1[i+1]=Buffer1[i+2];
    if (MIN[i+1]!=EMPTY_VALUE) Buffer2[i+1]=Low [i+1]; 
    else                       Buffer2[i+1]=Buffer2[i+2];
   }

Может заполнять с конца?

Ведь

i+2
еще не заполнен
 

Сообразить не могу, подбросите код?

Имеете ввиду так:

for(int i=Bars; i< 0; i--)
   {
 
Noterday >>:

Сообразить не могу, подбросите код?

навскидку

Buffer1[limit]=EMPTY_VALUE;
Buffer2[limit]=EMPTY_VALUE;
for(i=limit; i> 0; i--)
{
if (MAX[i-1]!=EMPTY_VALUE) Buffer1[i-1]=High[i-1];
else Buffer1[i-1]=Buffer1[i];
if (MIN[i-1]!=EMPTY_VALUE) Buffer2[i-1]=Low [i-1];
else Buffer2[i-1]=Buffer2[i];
}

 
ТЕМА! Спасибо!!!!!!!!!!!!! :)))))