как соединить экстремумы на графике линией?

 

Всем привет.

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

Код такой

 rr1=rr1+1;
 
 x1=ArrayMaximum(p1,8,(xx-1)*8);
 n1=ArrayMinimum(p1,8,(xx-1)*8);
 if (x1<n1)
 {
 mx1[rr1]=p1[x1];
 pmx1[rr1]=x1;
  SetArrow(241, Green, "Green"+pmx1[rr1], Time[pmx1[rr1]], High[pmx1[rr1]], 2);
 rr1=rr1+1;
  mx1[rr1]=p1[n1];
 pmx1[rr1]=n1;
 SetArrow(242, Green, "Green"+pmx1[rr1], Time[pmx1[rr1]], High[pmx1[rr1]], 2);
 }
 if (x1>n1)
      {
        mx1[rr1]=p1[n1];
 pmx1[rr1]=n1;
 SetArrow(242, Green, "Green"+pmx1[rr1], Time[pmx1[rr1]], High[pmx1[rr1]], 2);
 rr1=rr1+1;
    mx1[rr1]=p1[x1];
 pmx1[rr1]=x1;   
 SetArrow(241, Green, "Green"+pmx1[rr1], Time[pmx1[rr1]], High[pmx1[rr1]], 2);
      }
      //#############################################################################
 mn1=(mx1[rr1]-mx1[rr1-1])/(pmx1[rr1]-pmx1[rr1-1]);
 //Alert("mn"+mn);//
 int a=1;
   for (int tt=pmx1[rr1-1];tt<pmx1[rr1];tt++)
         {
         p4[tt]=mx1[rr1-1]+mn*a;
         a=a+1;
      //   Alert("p4="+p4[tt]);
         }
Причина обращения: