Линии вместо стрелок

 

Помогите найти ошибку? Не получается нарисовать линии вместо стрелок.


#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_width1 1
#property indicator_color2 Lime
#property indicator_width2 1
#property indicator_color3 Red
#property indicator_width3 1
#property indicator_color4 Lime
#property indicator_width4 1

extern int SignalGap = 4;
extern int ShowBars = 500;
extern bool repaint = false;

int dist=24;

double b1[];
double b2[];
double b3[];
double b4[];

int init()  {
   
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
   SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1);
   
   SetIndexBuffer(0,b1);
   SetIndexBuffer(1,b2);
   SetIndexBuffer(2,b3);
   SetIndexBuffer(3,b4);
      
   return(0);
}

int start() {
   
   int i,hhb,llb;
   
   if (ShowBars >= Bars) ShowBars = Bars;
   
   for (i=0;i<ShowBars;i++)   {
   
      b1[i]=0;
      b2[i]=0;
      b3[i]=0;
      b4[i]=0;
      
      if(repaint)
      {
        hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2);
        llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2);
      } else
      {
        hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i);
        llb = iLowest(Symbol(),0,MODE_LOW,dist,i);
      }

      
      if (i==hhb)
         b3[i]=High[hhb]+SignalGap*Point;
      
      if (i==llb)
         b4[i]=Low[llb]-SignalGap*Point;
         
         b1[i]=High[hhb];//+SignalGap*Point;
         b2[i]=Low[llb];//-SignalGap*Point;
   
   }
   return(0);
}

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

 
Anna Furmanova:

Помогите найти ошибку? Не получается нарисовать линии вместо стрелок.


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

Попробуйте так:

    //  b1[i]=0;
    //  b2[i]=0;
    //  b3[i]=0;
    //  b4[i]=0;

        b1[i]=EMPTY_VALUE;
        b2[i]=EMPTY_VALUE;
        b3[i]=EMPTY_VALUE;
        b4[i]=EMPTY_VALUE;

Как то так

 
Alekseu Fedotov:

Попробуйте так:

Как то так

Вообще все пропало. И стрелки и линии.

 
Anna Furmanova:  Вообще все пропало. И стрелки и линии.

Конечно пропадет. EMPTY = пусто

 
Anna Furmanova:

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

Чтобы рисовать горизонтальные линии - нужно на каждую линию свой буфер. Индикатор работает так: Против каждой свечи ставится точка (стрелка, продолжение линии) по значению из буфера. Если в буфере EMPTY - точка на этом баре пропадает, линия обрывается...

 
STARIJ:

Чтобы рисовать горизонтальные линии - нужно на каждую линию свой буфер. Индикатор работает так: Против каждой свечи ставится точка (стрелка, продолжение линии) по значению из буфера. Если в буфере EMPTY - точка на этом баре пропадает, линия обрывается...

Так как подправить?

 
Anna Furmanova:  Так как подправить?

Использовать объекты горизонтальные линии

 
Anna Furmanova:

Вообще все пропало. И стрелки и линии.

Картинка

 
STARIJ:

Использовать объекты горизонтальные линии

То есть заменить SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,1); на SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);? Меняла выходит вот что:

 
3 и 4 буфер можно сделать стрелками
 
Alekseu Fedotov:
3 и 4 буфер можно сделать стрелками

Добавила два буфера. Изменений нет.

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_width1 1
#property indicator_color2 Lime
#property indicator_width2 1
#property indicator_color3 Red
#property indicator_width3 1
#property indicator_color4 Lime
#property indicator_width4 1
#property indicator_color5 Red
#property indicator_width5 1
#property indicator_color6 Lime
#property indicator_width6 1

extern int SignalGap = 4;
extern int ShowBars = 500;
extern bool repaint = false;

int dist=24;

double b1[];
double b2[];
double b3[];
double b4[];
double b5[];
double b6[];

int init()  {
   
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
   SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1);
   SetIndexStyle(4,DRAW_ARROW,STYLE_SOLID,1);
   SetIndexStyle(5,DRAW_ARROW,STYLE_SOLID,1);
   
   SetIndexBuffer(0,b1);
   SetIndexBuffer(1,b2);
   SetIndexBuffer(2,b3);
   SetIndexBuffer(3,b4);
   SetIndexBuffer(4,b5);
   SetIndexBuffer(5,b6);
   
   SetIndexArrow(4,234);
   SetIndexArrow(5,233);
   
   return(0);
}

int start() {
   
   int k,i,j,limit,hhb,llb;
   
   if (ShowBars >= Bars) ShowBars = Bars;
   
   for (i=0;i<ShowBars;i++)   {
   
      b1[i]=0;
      b2[i]=0;
      b3[i]=0;
      b4[i]=0;
      b5[i]=0;
      b6[i]=0;
      
      if(repaint)
      {
        hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2);
        llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2);
      } else
      {
        hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i);
        llb = iLowest(Symbol(),0,MODE_LOW,dist,i);
      }

      
      if (i==hhb)
         b5[i]=High[hhb]+SignalGap*Point;
      
      if (i==llb)
         b6[i]=Low[llb]-SignalGap*Point;
         
         b1[i]=High[hhb];//+SignalGap*Point;
         b2[i]=Low[llb];//-SignalGap*Point;
         
   b3[i]=b5[i];
   b4[i]=b6[i];
   }
      
   return(0);
}
Причина обращения: