//+------------------------------------------------------------------+
//|                                         Candle Trend             |
//+------------------------------------------------------------------+
#property copyright " www.mql5.com "
#property link      "https://www.mql5.com"
#property strict

#property indicator_chart_window

enum enTimeFrames
{
   tf_cu  = 0,           
   tf_m1  = PERIOD_M1, 
   tf_m5  = PERIOD_M5, 
   tf_m15 = PERIOD_M15,  
   tf_m30 = PERIOD_M30,  
   tf_h1  = PERIOD_H1,
   tf_h4  = PERIOD_H4, 
   tf_d1  = PERIOD_D1,  
   tf_w1  = PERIOD_W1,  
   tf_mb1 = PERIOD_MN1, 
};

extern enTimeFrames      TimeFrame = tf_cu;
extern int    NumBars              = 24;
extern int    Udoji                = 10;
extern int    Ddoji                = -10;
extern color  BarColor             = clrAqua;
extern color  UpColor              = clrLime;
extern color  DnColor              = clrRed;
extern color  DojiColor            = clrYellow;
extern ENUM_BASE_CORNER  corner    = CORNER_LEFT_UPPER;
extern int    XDISTANCE            = 1100;
extern int    YDISTANCE            = 5;
extern int    FontSize             = 10;
extern int    Windowid             = 0;
extern string ids                  = "T";

string sObjName0;
string sObjName1;
string sObjName2;
string sObjName3;
string sObjName4;
string sObjName5;
string sObjName6;
string sObjName7;
string sObjName8;
string sObjName9;

double UpTicks;
double DownTicks;
//+------------------------------------------------------------------+
int init()
  {
   string short_name;

   short_name = "Candle Range";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

   return(0);
  }
//+------------------------------------------------------------------+
int deinit() 
{  
   ObjectDelete(sObjName0+ids);
   ObjectDelete(sObjName1+ids);
   ObjectDelete(sObjName2+ids);   
   ObjectDelete(sObjName3+ids);
   ObjectDelete(sObjName4+ids);
   ObjectDelete(sObjName5+ids);
   ObjectDelete(sObjName6+ids);
   ObjectDelete(sObjName7+ids);
   ObjectDelete(sObjName8+ids);
   ObjectDelete(sObjName9+ids);

   return(0);
}
//+------------------------------------------------------------------+
int start()
  {
   ObjectDelete(sObjName2+ids);
   ObjectDelete(sObjName4+ids);
   ObjectDelete(sObjName5+ids);
  
   int    UpCount=0 , DownCount=0 ,j;
   double MaxUp=0;
   double MaxDown=0;
   double UpCandle=0,DownCandle=0;
   double doji=0,open,close,high,low;
   
   for(j=0; j<NumBars; j++)
   {
   close = iClose(NULL,TimeFrame,j);
   open  = iOpen (NULL,TimeFrame,j);
   high  = iHigh (NULL,TimeFrame,0);
   low   = iLow  (NULL,TimeFrame,0);
  
   double Pip       = (iClose(NULL,TimeFrame,0)/Point- iOpen(NULL,TimeFrame,0)/Point);  
   double rang      = (high - low)/Point;
   
   if (Pip > 0) { UpTicks   = Pip;  DownTicks = 0;}
   if (Pip < 0) { DownTicks = Pip ; UpTicks   = 0;}
   if (Pip == 0){ DownTicks = 0;    UpTicks   = 0;}
        
   if(close > open)
   {
   UpCandle=(close-open)/Point ; 

   if (UpCandle >= Ddoji && UpCandle <= Udoji) doji++ ; else UpCount++; 
   }
   
   if(close < open)
   {
   DownCandle =(open-close)/Point ;
   
   if (DownCandle  <= Udoji && DownCandle >= Ddoji ) doji++; else  DownCount++;
   } 
   
   string text0 ="Bars      = "+IntegerToString(NumBars); 
   sObjName0="InfoBar0";
   ObjectCreate(sObjName0+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName0+ids,text0, FontSize, "Arial", BarColor);
   ObjectSet(sObjName0+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName0+ids, OBJPROP_XDISTANCE, XDISTANCE);
   ObjectSet(sObjName0+ids, OBJPROP_YDISTANCE, YDISTANCE);

   string text1 ="UBars    = "+IntegerToString(UpCount);
   sObjName1="InfoBar1";
   ObjectCreate(sObjName1+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName1+ids,text1, FontSize, "Arial", UpColor);
   ObjectSet(sObjName1+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName1+ids, OBJPROP_XDISTANCE, XDISTANCE);
   ObjectSet(sObjName1+ids, OBJPROP_YDISTANCE, YDISTANCE+20);
   
   double m = (UpCount*100)/NumBars;
   string text7 = "         = "+DoubleToString(m,2)+ "%";
   sObjName7="InfoBar7";
   ObjectCreate(sObjName7+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName7+ids,text7, FontSize, "Arial", UpColor); 
   ObjectSet(sObjName7+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName7+ids, OBJPROP_XDISTANCE, XDISTANCE+80);
   ObjectSet(sObjName7+ids, OBJPROP_YDISTANCE,YDISTANCE+20);

   string text3 ="DBars    = "+IntegerToString(DownCount);    
   sObjName3="InfoBar3";
   ObjectCreate(sObjName3+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName3+ids,text3, FontSize, "Arial", DnColor);
   ObjectSet(sObjName3+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName3+ids, OBJPROP_XDISTANCE, XDISTANCE);
   ObjectSet(sObjName3+ids, OBJPROP_YDISTANCE,YDISTANCE+40);
   
   double n = (DownCount*100)/NumBars;
   string text8 ="         = "+DoubleToString(n,2)+ "%";   
   sObjName8="InfoBar8";
   ObjectCreate(sObjName8+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName8+ids,text8, FontSize, "Arial", DnColor);
   ObjectSet(sObjName8+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName8+ids, OBJPROP_XDISTANCE, XDISTANCE+80);
   ObjectSet(sObjName8+ids, OBJPROP_YDISTANCE,YDISTANCE+40);

   string text6 ="Doji        = "+DoubleToString(doji,0);
   sObjName6="InfoBar6";
   ObjectCreate(sObjName6+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName6+ids,text6, FontSize, "Arial", DojiColor);
   ObjectSet(sObjName6+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName6+ids, OBJPROP_XDISTANCE, XDISTANCE);
   ObjectSet(sObjName6+ids, OBJPROP_YDISTANCE,YDISTANCE+60);
   
   double p = (doji*100)/NumBars;
   string text9 ="         = "+DoubleToString(p,2)+ "%";   
   sObjName9="InfoBar9";
   ObjectCreate(sObjName9+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName9+ids,text9, FontSize, "Arial", DojiColor);
   ObjectSet(sObjName9+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName9+ids, OBJPROP_XDISTANCE, XDISTANCE+80);
   ObjectSet(sObjName9+ids, OBJPROP_YDISTANCE,YDISTANCE+60);
   
   
   string text5 ="BUY      = "+ DoubleToStr(UpTicks,0)+"";
   sObjName5="InfoBar5";
   ObjectCreate(sObjName5+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName5+ids,text5, FontSize, "Arial", UpColor);
   ObjectSet(sObjName5+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName5+ids, OBJPROP_XDISTANCE, XDISTANCE);
   ObjectSet(sObjName5+ids, OBJPROP_YDISTANCE,YDISTANCE+90);

   string text4 ="SELL     = "+ DoubleToStr(DownTicks*(-1),0)+"";
   sObjName4="InfoBar4";
   ObjectCreate(sObjName4+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName4+ids,text4, FontSize, "Arial", DnColor); 
   ObjectSet(sObjName4+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName4+ids, OBJPROP_XDISTANCE, XDISTANCE);
   ObjectSet(sObjName4+ids, OBJPROP_YDISTANCE,YDISTANCE+110);
   
   string text2 ="Rang      = "+DoubleToString(rang,0);
   sObjName2="InfoBar2";
   ObjectCreate(sObjName2+ids, OBJ_LABEL, Windowid, 0, 0);
   ObjectSetText(sObjName2+ids,text2, FontSize, "Arial", DojiColor);
   ObjectSet(sObjName2+ids, OBJPROP_CORNER, corner);
   ObjectSet(sObjName2+ids, OBJPROP_XDISTANCE, XDISTANCE);
   ObjectSet(sObjName2+ids, OBJPROP_YDISTANCE,YDISTANCE+130);
 
   }
   return(0);
 }  
//+------------------------------------------------------------------+ 