Как создать множество линий по фракталам?

 

Помогите. Что нужно чтобы в этом индикаторе линии рисовались от каждого фрактала ко всем последующим? От верхних по верхним и от нижних по нижним.

Спасибо)

Пример:

Код:

//+------------------------------------------------------------------+
//|                                                           LF.mq4 |
//|                                                              JLY |
//|                                                                0 |
//+------------------------------------------------------------------+
#property copyright "JLY"
#property link      ""

//ПРИМЕР ОТРИСОВКИ ЛИНИЙ ПО ФРАКТАЛАМ ВЗЯТ ЗДЕСЬ - https://www.mql5.com/ru/articles/1429

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 Aqua
//---- input parameters
extern int  lines =14;  //Количество видимых фрактальных линий
extern int  MaxFractals = 10000;
extern bool ray=true;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//--- my variables
double bufUpPrice[10000];   //массив цен Up фракталов
double bufUpDate[10000];    //массив дат Up фракталов
double bufDownPrice[10000]; //массив цен Down фракталов
double bufDownDate[10000];  //массив дат Down фракталов
int Up = 0;    //счетчик Up фракталов
int Down = 0;  //счетчик Down фракталов

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 217);
   SetIndexBuffer(0, ExtMapBuffer1);
   SetIndexEmptyValue(0, 0.0);
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 218);
   SetIndexBuffer(1, ExtMapBuffer2);
   SetIndexEmptyValue(1, 0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
ObjectsDeleteAll(0, OBJ_ARROW);
ObjectsDeleteAll(0, OBJ_TREND);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
 //------------------------------------------------ОТРИСОВКА ФРАКТАЛОВ И ЛИНИЙ ТРЕНДА--------------
   int counted_bars = IndicatorCounted();
   if(counted_bars > 0) 
       counted_bars--;
   int limit = Bars - counted_bars;
   int FractalUp = 0;
   int FractalDown = 0;
   int SimpleFractalUp = 0;
   int SimpleFractalDown = 0;
   double buf = 0;
//---     
   for(int i = limit; i>0; i--)
     {   
     int BarCorr=1;
       //Рисуем сам фрактал  Up
       ExtMapBuffer1[i] = iFractals(NULL, 0, MODE_UPPER, i);
       //Если он есть, то заносим его в массив фракталов
       buf = iFractals(NULL, 0, MODE_UPPER, i);
       if(buf != 0)
         {
           Up++;
           bufUpPrice[Up] = iFractals(NULL, 0, MODE_UPPER, i);
           bufUpDate[Up] = Time[i];
           //Текущий уровень пробития фрактала - сам фрактал
           if(Up > 1)
             {
             if(Up > lines + 1)
                 {
                   ObjectDelete("LineUp " + (Up - lines));
                 }
               //Чертим фрактальные линии по 2 координатам
ObjectCreate("LineUp " + Up, OBJ_TREND, 0, bufUpDate[Up-BarCorr], bufUpPrice[Up-BarCorr], bufUpDate[Up], bufUpPrice[Up]); 
ObjectSet("LineUp " + Up, OBJPROP_COLOR, Blue);
ObjectSet("LineUp " + Up, OBJPROP_RAY, ray); 
             }     
         }
       //Аналогичный блок, но на Down фракталы
       ExtMapBuffer2[i] = iFractals(NULL, 0, MODE_LOWER, i);
       buf = iFractals(NULL, 0, MODE_LOWER, i);    
       if(buf != 0)
         {
           Down++;
           bufDownPrice[Down] = iFractals(NULL, 0, MODE_LOWER, i);
           bufDownDate[Down] = Time[i];                           
           if(Down > 1)
             {
             if(Down > lines + 1)
                 {
                   ObjectDelete("LineDown " + (Down - lines)); 
                 }    
ObjectCreate("LineDown " + Down, OBJ_TREND, 0, bufDownDate[Down-BarCorr], bufDownPrice[Down-BarCorr], bufDownDate[Down], bufDownPrice[Down]);        
ObjectSet("LineDown " + Down, OBJPROP_COLOR, Red);
ObjectSet("LineDown " + Down, OBJPROP_RAY, ray);
                       
             }   
         }           
     }   
   return(0);
  }
//+------------------------------------------------------------------+ 
Файлы:
lfv1_2.mq4  5 kb