//+------------------------------------------------------------------+
//|                                          CandleTimeStationary.mq4|
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
//---- input parameters

extern color  Clock_Color = Red;
extern string Corner_Placement = "1 is top right 3 is bottom right";
extern int    Corner = 3;
extern double Risk_percentage = 10;
extern int    NumberOfCharts = 5;
extern bool   ShowPips = true;


string sp_close="Spread&Bar";
string lots="Lots";
string t="Today";
string y="Yesterday";
string oop="OOP";


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init(){

  ObjectCreate(sp_close, OBJ_LABEL,0, 0, 0);
  ObjectSet(sp_close, OBJPROP_CORNER, Corner);
  ObjectSet(sp_close, OBJPROP_XDISTANCE, 10);
  ObjectSet(sp_close, OBJPROP_YDISTANCE, 2);     
  
  ObjectCreate(lots, OBJ_LABEL,0, 0, 0);
  ObjectSet(lots, OBJPROP_CORNER, Corner);
  ObjectSet(lots, OBJPROP_XDISTANCE, 10);
  ObjectSet(lots, OBJPROP_YDISTANCE, 16);   
  
  ObjectCreate(y, OBJ_LABEL,0, 0, 0);
  ObjectSet(y, OBJPROP_CORNER, Corner);
  ObjectSet(y, OBJPROP_XDISTANCE, 10);
  ObjectSet(y, OBJPROP_YDISTANCE, 28);   
  
  ObjectCreate(t, OBJ_LABEL,0, 0, 0);
  ObjectSet(t, OBJPROP_CORNER, Corner);
  ObjectSet(t, OBJPROP_XDISTANCE, 10);
  ObjectSet(t, OBJPROP_YDISTANCE, 40);     

  ObjectCreate(oop, OBJ_LABEL,0, 0, 0);
  ObjectSet(oop, OBJPROP_CORNER, Corner);
  ObjectSet(oop, OBJPROP_XDISTANCE, 10);
  ObjectSet(oop, OBJPROP_YDISTANCE, 52);  
  
 
   //----
   return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){

  ObjectDelete(sp_close);
  ObjectDelete(lots);
  ObjectDelete(y);
  ObjectDelete(t);
  ObjectDelete(oop);

  //----
  return(0);
} 
 // double OOP=OrderOpenPrice();
 // int iPips;
  int m,s; 
  double open1, close1, high1, low1;
  double open, close, high, low;
  double d0, hl0, d1, hl1;
  double op;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{  //Lot per risk percentage
  double Prots=Risk_percentage/100;
  double Lots=MathFloor(AccountFreeMargin()*Prots/MarketInfo(Symbol(),MODE_MARGINREQUIRED)
              /MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP);
  double Lotz=Lots/NumberOfCharts;
  //Symbol Profit
double  Kepice=CalculateProfit();
  //Time to bar expiry 
  m=Time[0]+Period()*60-CurTime();
  s=m%60;
  m=(m-s)/60;
  int spread=MarketInfo(Symbol(), MODE_SPREAD);

  string _sp="",_m="",_s="";
  if (spread<10) _sp="..";
  else if (spread<100) _sp=".";
  if (m<10) _m="0";
  if (s<10) _s="0";
  
  //Pips indi  
  int point_compat=1;
  if(Digits == 3 || Digits == 5) {point_compat = 10;}                      
  open1=iOpen(NULL,PERIOD_D1,1);
  close1=iClose(NULL,PERIOD_D1,1);
  high1=iHigh(NULL,PERIOD_D1,1);
  low1=iLow(NULL,PERIOD_D1,1);
  open=iOpen(NULL,PERIOD_D1,0);
  close=iClose(NULL,PERIOD_D1,0);
  high=iHigh(NULL,PERIOD_D1,0);
  low=iLow(NULL,PERIOD_D1,0);

  // Yesterday Up
  if(open1<close1){ hl1=((high1-low1)/Point);
                    d1=((close1-open1)/Point); }
  // Yesterday Down
  else if(open1>close1){ hl1=((low1-high1)/Point);
                         d1=((close1-open1)/Point); }
   
  //Today Up
  if(open<close){ hl0=((high-low)/Point);
                  d0=((close-open)/Point); }
  //Today Down
  else if(open>close){ hl0=((low-high)/Point);   
                       d0=((close-open)/Point); } 
  //OOP
  if(OrderSymbol()==Symbol()){op=OrderOpenPrice();}
                       
  //Draw objects
  ObjectSetText(sp_close,DoubleToStr(Kepice,2)+"Sp:"+DoubleToStr(spread,0)+_sp+"Close:"+_m+DoubleToStr(m,0)+":"+_s+DoubleToStr(s,0),10,"Courier",Clock_Color);
  ObjectSetText(lots,"L:"+DoubleToStr(Lotz,2),10,"Courier",Clock_Color);
  ObjectSetText(t,"T:"+DoubleToStr(hl0,0)+"/"+DoubleToStr(d0,0),10,"Courier",Clock_Color);
  ObjectSetText(y,"Y:"+DoubleToStr(hl1,0)+"/"+DoubleToStr(d1,0),10,"Courier",Clock_Color);
  ObjectSetText(oop,"OOP:"+DoubleToStr(op,5),10,"Courier",Clock_Color);

  
  return(0);
}
///////////------------------------------

                
double CalculateProfit()
  {
   double Profit=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()!=Symbol())
         continue;
      if(OrderSymbol()==Symbol())
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            Profit=Profit+OrderProfit();
           }
     }
   return(Profit);
     }
