SZZ_without_ZZ





//+------------+-----------------------------------------------------+
//| v.05.01.08 |                                  SZZ_without_ZZ.mq4 |
//|            |              Bookkeeper, 2008, yuzefovich@gmail.com |
//+------------+-----------------------------------------------------+
// Äàííûé èíäèêàòîð ïðåäíàçíà÷åí òîëüêî äëÿ èñïîëüçîâàíèÿ â SZZReader.
// The given indicator is intended for use in SZZReader only.
//+------------+-----------------------------------------------------+
#property copyright ""
#property link      ""
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1  Blue
#property indicator_color2  Blue
//----
extern datetime FirstBarTime=0; // íå ìåíÿòü!
extern int NUnits=10; // ñ÷èòàòü êîëè÷åñòâî óçëîâ ÇèãÇàãà
//----                                      
double NumBars[];
double UpAndDn[];
double BarToBar[];
double Snake[];
//----
bool first=true, firstAlert=true;
datetime StartTime;
//----
//---------------------------------------------------------------------
double Navel(int Shift)
{
   // Òóøêà ñâå÷è äîëæíà áîëüøå ÷åì òåíè âëèÿòü íà öåíó ñâå÷è (?)
   return((5*Close[Shift]+2*Open[Shift]+High[Shift]+Low[Shift])/9);
}
//+------------------------------------------------------------------+
void deinit() 
{
   return; 
}
//---------------------------------------------------------------------
int init()
{
int    draw_begin;
   IndicatorBuffers  (4);
   SetIndexBuffer    (0,NumBars);
   SetIndexStyle     (0,DRAW_LINE);
   SetIndexBuffer    (1,UpAndDn);
   SetIndexStyle     (1,DRAW_LINE);
   SetIndexBuffer    (2,BarToBar);
   SetIndexStyle     (2,DRAW_NONE);
   SetIndexEmptyValue(2,0.0);
   SetIndexBuffer    (3,Snake);
   SetIndexStyle     (3,DRAW_NONE);
   SetIndexEmptyValue(3,0.0);
   return(0);
}
//---------------------------------------------------------------------
void CalcSnake(int Pos)
{  
   Snake[Pos]=(Navel(Pos+1)+Navel(Pos)*2+Navel(Pos-1))/4;
   return;
}
//---------------------------------------------------------------------
int start()
{
   if(FirstBarTime==0) StartTime=Time[0];
   else StartTime=FirstBarTime;
   int n=iBarShift(Symbol(),Period(),StartTime);
   Snake[n]=(Navel(n)*3+Navel(n+1)*2+Navel(n+2))/6;
   BarToBar[n]=Snake[n];
   int i=n+1;
   BarToBar[i]=0;
   CalcSnake(i);
   while(Snake[n]==Snake[i]) 
      { i++; CalcSnake(i); BarToBar[i]=0; }
   int nu=0;
   NumBars[nu]=1.0*n;
   if(Snake[n]>Snake[i]) UpAndDn[nu]=1.0;
   else UpAndDn[nu]=-1.0;
   int k=n;
   while(nu<NUnits+2)
   {
      if(UpAndDn[nu]>0)
      {
         while(Snake[i-1]>=Snake[i] && i<Bars-3) 
         {
            i++; 
            CalcSnake(i);
            BarToBar[i]=0;
         }
         if(i==Bars-3)
         {
            if(firstAlert==true)
            {
               Alert("i=Bars-3 && nu<NUnits");
               firstAlert=false;
            }
            return(0);
         }
         BarToBar[i-1]=Snake[i-1];
         if(nu==0) k++;
         else if(nu<NUnits+1)
         {
            k=iHighest(NULL,0,MODE_HIGH,i-k-1,k);
            NumBars[nu]=1.0*k;
            k++;
         }
         nu++;
         UpAndDn[nu]=-1.0;
      }
      if(UpAndDn[nu]<0)
      {
         while(Snake[i-1]<=Snake[i] && i<Bars-3) 
         {
            i++; 
            CalcSnake(i);
            BarToBar[i]=0;
         }
         if(i==Bars-3)
         {
            if(firstAlert==true)
            {
               Alert("i=Bars-3 && nu<NUnits");
               firstAlert=false;
            }
            return(0);
         }
         BarToBar[i-1]=Snake[i-1];
         if(nu==0) k++;
         else if(nu<NUnits+1)
         {
            k=iLowest(NULL,0,MODE_LOW,i-k-1,k);
            NumBars[nu]=1.0*k;
            k++;
         }
         nu++;
         UpAndDn[nu]=1.0;
      }
   }
   for(i=NUnits+1;i<NUnits+4;i++)
   {
      UpAndDn[i]=0;
      NumBars[i]=0;
   }
   return(0);
}
//---------------------------------------------------------------------





Sample





Analysis



Market Information Used:


Series array that contains close prices for each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open prices of each bar
Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen