#property copyright "Copyright © 2009, Stephen Ambatoding."
#property link      "sangmane@forexfactory.com"

#property indicator_chart_window

extern int varExtDepth=12;
extern int varExtDeviation=5;
extern int varExtBackstep=3;
extern int History = 1000;
extern color FontColor=Yellow;

double Pip;

int init()
  {
    if(Digits==3 || Digits==5) Pip = 10*Point;
    else Pip = Point;
    IndicatorDigits(Digits+1);   
    return(0);
  }

int deinit()
  {
   string ObjName;
   for(int i=ObjectsTotal()-1; i>=0; i--)
   {
     ObjName = ObjectName(i);
     if(StringFind(ObjName,"ZZLabel",0)>=0)
       ObjectDelete(ObjName);
   }
   return(0);
  }

int start()
  {
   int i, k, limit, counted_bars=IndicatorCounted();
   limit = MathMin(History,Bars-counted_bars-1);
   double zz;
   color ObjColor;
   for(i=limit; i>=0; i--)
   {
     k = i;
     double d1=0,d2=0,d3=0;
     datetime t1=0,t2=0,t3=0;
     while(k<Bars-2)
     {
       zz = iCustom(NULL,0,"ZigZag",varExtDepth,varExtDeviation,varExtBackstep,0,k);
       if(zz!=0)
       {         
         d1 = d2; d2 = d3; d3 = zz;
         t1 = t2; t2 = t3; t3 = Time[k];
       }
       if(d1>0) break;
       k++;  
     }
     if(d1==0) continue;
     double LabelPos;
     int ib = iBarShift(NULL,0,t2);
     if(d2>d3) LabelPos = NormalizeDouble(High[ib]+0.2*iATR(NULL,0,10,ib),Digits);
     else LabelPos = NormalizeDouble(Low[ib]-0.2*iATR(NULL,0,10,ib),Digits);
     string ObjName = "ZZLabel"+t1;
     if(ObjectFind(ObjName)<0)
     {
       ObjectCreate(ObjName,OBJ_TEXT,0,t2,LabelPos);
       ObjectSetText(ObjName,DoubleToStr(MathAbs(d3-d2)/Pip,2),8,"Arial",Yellow);
     }
   }
   return(0);
  }
//+------------------------------------------------------------------+