//+------------------------------------------------------------------+ 
//|                                                  TD_Carrie  | 
//|                                               "Vyacheslav-Oleg"  |              
//|                                                                  | 
//+------------------------------------------------------------------+ 
#property copyright "Vyacheslav-Oleg" 
#property link      "gendir@glagol.tvcom.ru" 

//Индикатор отображается в том 
#property indicator_chart_window 

//#property indicator_separate_window 
#property indicator_buffers 8 
#property indicator_color1 Red 
#property indicator_color2 Blue 
#property indicator_color3 Navy 
#property indicator_color4 Navy 
#property indicator_color5 Navy 
#property indicator_color6 Navy 
#property indicator_color7 Navy 
#property indicator_color8 Navy 


//---- buffers 
double Buf1[]; 
double Buf2[]; 
double Buf3[]; 
double Buf4[]; 
double Buf5[]; 
double Buf6[]; 
double Buf7[]; 
double Buf8[]; 


//Смещение по линии времени и множитель Point 
int shift = 0, n =0; 
//Минимальное и максимальное значение (вещественные величины) 
double  maxvalue = 0, minvalue = 0; 
double HH, LL; 
int bar_counter; 
bool counter = false; 
//Имя объекта типа "стрелка" с кодом code 
int code=161; 


//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init() 
  { 
   string short_name; 

//---- indicator line 
   SetIndexStyle(0,DRAW_ARROW); 
   SetIndexStyle(1,DRAW_ARROW); 
   SetIndexStyle(2,DRAW_ARROW); 
   SetIndexStyle(3,DRAW_ARROW); 
   SetIndexStyle(4,DRAW_ARROW); 
   SetIndexStyle(5,DRAW_ARROW); 
   SetIndexStyle(6,DRAW_ARROW); 
   SetIndexStyle(7,DRAW_ARROW); 

   SetIndexArrow(0,161);//233 
   SetIndexArrow(1,161);//234 
   SetIndexArrow(2,"_");//234 
   SetIndexArrow(3,242);//234 
   SetIndexArrow(4,"_");//234 
   SetIndexArrow(5,"_");//234 
   SetIndexArrow(6,"_");//234 
   SetIndexArrow(7,"_");//234 

   SetIndexBuffer(0,Buf1); 
   SetIndexBuffer(1,Buf2); 
   SetIndexBuffer(2,Buf3); 
   SetIndexBuffer(3,Buf4); 
   SetIndexBuffer(4,Buf5); 
   SetIndexBuffer(5,Buf6); 
   SetIndexBuffer(6,Buf7); 
   SetIndexBuffer(7,Buf8); 

//---- name for DataWindow and indicator subwindow label 
   short_name="My Ind"; 
   IndicatorShortName(short_name); 

   SetIndexLabel(0,short_name); 
   SetIndexLabel(1,short_name); 

//---- 
   SetIndexDrawBegin(0,0); 
    
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+ ------------------------------------------------------------------+ 
int start() 
  { 
//Вычисление минимума и максимума 
   for (shift = Bars; shift >= 0; shift--) 
     { 
     if (counter) bar_counter++; 
     HH=(High[shift+5]*1.001); 
     LL=(Low[shift+5]*0.999); 
     minvalue=0; 
     maxvalue=0; 
         if  ((High[shift+5]>High[shift+6]) && (High[shift+5]>High[shift+4])     && 
              (High[shift+5]>High[shift+3]) && (Close[shift+2]<Close[shift+3]) && 
              (Open[shift+1]<High[shift+5] && High[shift+1]>HH))  

              maxvalue=High[shift+5]+n*Point; 
    
         if  ((Low[shift+5]<Low[shift+6]) && (Low[shift+5]<Low[shift+4])       && 
              (Low[shift+5]<Low[shift+3]) && (Close[shift+2]>Close[shift+3]) && 
              (Open[shift+1]>Low[shift+5] && Low[shift+1]<LL))  

              minvalue=Low[shift+5]-n*Point; 

   if (bar_counter == 4) 
   { 
      bar_counter = 0; 
      counter = false; 
      Buf4[shift] = High[shift]+2*Point; 
   }      

//Если minvalue не равно нулю, то рисуется знак. 
   if(minvalue != 0) 
   { 
   Buf1[shift+5] =  minvalue; 
   Buf5[shift+1] = LL*0.88; 
   Buf6[shift+1] = LL*1.04; 
   Buf3[shift+1] = LL; 
   counter = true; 
   bar_counter = 0; 
   } 
//Если maxvalue не равно нулю, то рисуется знак. 
    if(maxvalue != 0) 
    { 
    Buf2[shift+5] = maxvalue; 
    Buf7[shift+1] = HH*1.12; 
    Buf8[shift+1] = HH*0.96; 
    Buf3[shift+1] = HH; 
    counter = true; 
    bar_counter = 0; 
    } 
     } 
//---- 
    
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+