//+------------------------------------------------------------------+
//|                                          Daily Av Percentage.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window

extern color    DailyAverageRangeColor = Lime;
extern color    AboveDailyAverageColor = Red;
extern string   FontName               = "Calibra";
extern int      FontSize               = 9;
extern int      Corner                 = 2;
extern int      XDistance              = 10;
extern int      YDistance              = 5;

int lenbase;
string s_base=":....:....:....:....:";

color FontColor;

double myPoint;


   double SetPoint() 
   { 
   double mPoint; 
   
   if (Digits < 4) 
      mPoint = 0.01; 
   else 
      mPoint = 0.0001; 
   
   return(mPoint); 
   }  
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   lenbase=StringLen(s_base); 
    
   myPoint = SetPoint();      
      
         
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   if (ObjectFind("AvPercent") != -1) ObjectDelete("AvPercent");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {

        
   int i=0,percentage=0;
   
   string time="",s_end="",s_beg="";
   if (ObjectFind("AvPercent") == -1) {
     ObjectCreate("AvPercent" , OBJ_LABEL,0,0,0);
     ObjectSet("AvPercent", OBJPROP_XDISTANCE, XDistance);
     ObjectSet("AvPercent", OBJPROP_YDISTANCE, YDistance);
     ObjectSet("AvPercent", OBJPROP_CORNER, Corner);
   }

     int R0=0,R1=0,R5=0,R10=0,R20=0,RAvg=0;
   
     int j=0;
     R0 =  (iHigh(NULL,1440,0)-iLow(NULL,1440,0))/myPoint;
 
     R1 =  (iHigh(NULL,1440,1)-iLow(NULL,1440,1))/myPoint;
     for(j=1;j<=5;j++)
     R5    =    R5  +  (iHigh(NULL,1440,j)-iLow(NULL,1440,j))/myPoint;
     for(j=1;j<=10;j++)
     R10   =    R10 +  (iHigh(NULL,1440,j)-iLow(NULL,1440,j))/myPoint;
     for(j=1;j<=20;j++)
     R20   =    R20 +  (iHigh(NULL,1440,j)-iLow(NULL,1440,j))/myPoint;
     
    

     R5 = R5/5;
     R10 = R10/10;
     R20 = R20/20;
     double AV  =  (R1+R5+R10+R20)/4;    
    percentage=((R0)/AV*100);
    i=(lenbase-1)*percentage/100;
    if(R0<=AV){FontColor=DailyAverageRangeColor;}else {FontColor=AboveDailyAverageColor;}
    if(i>lenbase-1) i=lenbase-1;
    if(i>0) s_beg=StringSubstr(s_base,0,i);
    if(i<lenbase-1) s_end=StringSubstr(s_base,i+1,lenbase-i-1);
    time=StringConcatenate("Daily Av "+DoubleToStr(AV,0)+"  Range "+s_beg,"|",s_end,"  ",DoubleToStr(percentage,0),"% of Av");
   
    ObjectSetText("AvPercent", time, FontSize, FontName, FontColor);
 
   return(0);
  }
//+------------------------------------------------------------------+

