Не отрисовывается индикатор

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
sebegolov
13
sebegolov  

Добрый день, решил сам попробовать сделать индикатор типа ZigZag (прогать начал недавно). Вроде ошибок нет, но на графике он не отрисовывается.

#property link      ""

#property version   "1.00"

#property strict

#property indicator_chart_window

//--------------------------------

#property indicator_buffers 1       // Количество буферов

#property indicator_color1 Blue     // Цвет линии 0 буфера

double Buf_0[];

double Max_B=0,

       Min_B=10000; 

int init()

{

SetIndexBuffer(0,Buf_0);                  //Назначение массива буфера

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //стиль линии

   return(0);}

//------------------------------

int start()

{  

   int i;

   int n,

       step=10;

   int Counted_bars;

   double Max_A,

          Min_A;   

   Counted_bars=IndicatorCounted();

   i=Bars-Counted_bars-1;

   //--------------------------------------------------------------------------------------------------------------+

while(i>=0)                               //цикл, который считает просчитывает значение на i-ом баре               

   {   Max_A=High[i];                         //присвоили максимальное значение i-ого бара переменной Max_A            

   Min_A=Low[i];                          //присвоили минимальное значение i-ого бара переменной Min_A

   if(Max_A>Max_B)

   Max_B=Max_A;

   if(Min_A<Min_B)

   Min_B=Min_A;                                    

   //------------------------------------------------------------------------------------------------------------- 

    if(i>=step)

    {      for(n=0;n<step;n++)                    //цикл, который будет сравнивать значения баров на определённом интервале        

       {if(High[i+n]>Max_A)

       { Max_A=High[i+n];

       }else

       { if(High[i+n]<Min_A)

       Min_A=High[i+n]; }

       }

      }

        if(i<step)

       {

          for(n=step;n>0;n--)                    //цикл, который будет сравнивать значения баров на определённом интервале        

          {

          if(High[i-n]>Max_A)

          {

          Max_A=High[i-n];

          }else

         {

          if(High[i-n]<Min_A)

          Min_A=High[i-n];

          }

          }

       }

      if(Max_A>Max_B)

      { 

    Buf_0[i]=Max_A;

    }else

    {

    if(Min_A<Min_B)

    Buf_0[i]=Min_A;

    }

   i--;

   }


return(0);

}


DEDUL
139
DEDUL  
sebegolov:

Добрый день, решил сам попробовать сделать индикатор типа ZigZag (прогать начал недавно). Вроде ошибок нет, но на графике он не отрисовывается.

   Counted_bars=IndicatorCounted();

   i=Bars-Counted_bars-1;

       if(High[i+n]>Max_A)

return(0);

}

При запуске Counted_bars = 0.  Тогда i+n больше количества баров Bars и индикатор прекращает работу с сообщением на вкладке Эксперты: Array out of range

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий