ZZZ





//+------------------------------------------------------------------+
//|                                                          ZZZ.mq4 |
//+------------------------------------------------------------------+
#property copyright "Istoniz"
#property link      "http://www.kg/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Aqua
//---- input parameters
extern int       Length=6;

//---- buffers
double ExtMapBuffer1[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  int barn=300;
/*
//--------------------------
   int    counted_bars=IndicatorCounted();
       limit,barn=Bars-Length;
   if (counted_bars<0) return(-1);
   if (counted_bars>0) counted_bars--;
   
   limit=Bars-counted_bars+4*Length;
   //Comment(" limit = ",limit, "  Bars = ",Bars);
//--------------------------
*/
//--------------------------
   int shift,Swing,Swing_n,i,zu,zd,uzl;
   double LL,HH,BH,BL,NH,NL;
   
   Swing_n=0; Swing=0; uzl=0; 
   
   BH =High[barn]; BL=Low[barn];
   zu=barn; zd=barn;
   
   for ( shift=barn; shift>0 ; shift--)
      {
         LL=10000000; HH=-100000000;
         for ( i=shift+Length; i>shift+1 ; i--)
            {
               if ( Low[i]<LL ) LL=Low[i];
               if ( High[i]>HH ) HH=High[i];
            }
         if ( Low[shift]<LL && High[shift]>HH ) 
            { 
               Swing=2; 
               if ( Swing_n==1 ) zu=shift+1; 
               if ( Swing_n==-1 ) zd=shift+1; 
            } else
               {
                  if ( Low[shift]<LL ) Swing=-1; 
                  if ( High[shift]>HH ) Swing=1; 
               }
               
         if ( Swing!=Swing_n && Swing_n!=0 ) 
               { 
                  if ( Swing==2 ) 
                     {
                        Swing=-Swing_n;
                        BH=High[shift];
                        BL=Low[shift];
                     } 
                  uzl=uzl+1;
                  if ( Swing==1 ) 
                     {
                                           
                        ExtMapBuffer1[zd]=BL;
                     } 
                  if ( Swing==-1 )
                     {
                      
                        ExtMapBuffer1[zu]=BH;
                     } 
                  BH=High[shift];
                  BL=Low[shift]; 
               }

         if ( Swing==1 )
             { 
               if ( High[shift]>=BH ) 
                  {
                     BH=High[shift];
                     zu=shift;
                  }
             } 
         if ( Swing==-1 ) 
            { 
               if ( Low[shift]<=BL )
                  {
                     BL=Low[shift];
                     zd=shift;
                  }
            } 
         Swing_n=Swing; 
   }

//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:

Implements a curve of type DRAW_SECTION


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: