//+------------------------------------------------------------------+
//|                                                  Daily Open.mq4 |
//|                                                             cja. |
//+------------------------------------------------------------------+

#property indicator_chart_window

extern int    days_Back            = 0; 

extern int    Set_High_Value        = 40;
extern int    Set_Low_Value         = 40;

extern color  DailyOpen_color      = Gold;
extern color  DailyHighValue_color = Blue;
extern color  DailyLowValue_color  = Blue;

extern int    DailyOpen_width      = 2;
extern int    DailyHighValue_width = 1;
extern int    DailyLowValue_width  = 1;

extern int    DailyOpen_style      = 0;
extern int    DailyHighValue_style = 2;
extern int    DailyLowValue_style  = 2;

extern bool   Show_Labels           = true; 
extern int    Font_Size             = 8;  
extern string Font_Type             = "Arial";
int Magic_Number;
double myPoint;

  double SetPoint() 
   { 
   double mPoint; 
   
   if (Digits < 4) 
   mPoint = 0.01; 
   else 
   mPoint = 0.0001; 
   
   return(mPoint); 
   }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   myPoint = SetPoint();
   Magic_Number=Set_High_Value+Set_Low_Value+days_Back;
   IndicatorShortName("  Daily open ");
  
  
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
    ObjectDelete("dayOpen "+Magic_Number);  
    ObjectDelete("dayHigh "+Magic_Number);  
    ObjectDelete("dayLow "+Magic_Number);
    
    ObjectDelete("dayOpenText "+Magic_Number);
    ObjectDelete("dayHighText "+Magic_Number);
    ObjectDelete("dayLowText "+Magic_Number);  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
       ObjectDelete("dayOpen "+Magic_Number);   
   if(ObjectFind("dayOpen "+Magic_Number) != 0) {
   ObjectCreate("dayOpen "+Magic_Number, OBJ_HLINE,0,Time[0], iOpen(NULL,1440,days_Back));
   ObjectSet("dayOpen "+Magic_Number,OBJPROP_WIDTH,DailyOpen_width);
   ObjectSet("dayOpen "+Magic_Number,OBJPROP_STYLE,DailyOpen_style);
   ObjectSet("dayOpen "+Magic_Number,OBJPROP_COLOR,DailyOpen_color);
   } else{ ObjectMove("dayOpen "+Magic_Number, 0,Time[0], iOpen(NULL,1440,days_Back)); }
   
       ObjectDelete("dayHigh "+Magic_Number);   
   if(ObjectFind("dayHigh "+Magic_Number) != 0) {
   ObjectCreate("dayHigh "+Magic_Number, OBJ_HLINE, 0,Time[0], iOpen(NULL,1440,days_Back)+Set_High_Value*myPoint);
   ObjectSet("dayHigh "+Magic_Number,OBJPROP_WIDTH,DailyHighValue_width);
   ObjectSet("dayHigh "+Magic_Number,OBJPROP_STYLE,DailyHighValue_style);
   ObjectSet("dayHigh "+Magic_Number,OBJPROP_COLOR,DailyHighValue_color);
   } else{ ObjectMove("dayHigh "+Magic_Number, 0,Time[0], iOpen(NULL,1440,days_Back)+Set_High_Value*myPoint); }
   
       ObjectDelete("dayLow "+Magic_Number);   
   if(ObjectFind("dayLow "+Magic_Number) != 0) {
   ObjectCreate("dayLow "+Magic_Number, OBJ_HLINE, 0,Time[0], iOpen(NULL,1440,days_Back)-Set_Low_Value*myPoint);
   ObjectSet("dayLow "+Magic_Number,OBJPROP_WIDTH,DailyLowValue_width);
   ObjectSet("dayLow "+Magic_Number,OBJPROP_STYLE,DailyLowValue_style);
   ObjectSet("dayLow "+Magic_Number,OBJPROP_COLOR,DailyLowValue_color);
   } else{ ObjectMove("dayLow "+Magic_Number, 0,Time[0], iOpen(NULL,1440,days_Back)-Set_Low_Value*myPoint); }
  
  if(Show_Labels){
       ObjectDelete("dayOpenText "+Magic_Number);   
   if(ObjectFind("dayOpenText "+Magic_Number) != 0) {
   ObjectCreate("dayOpenText "+Magic_Number, OBJ_TEXT,0,Time[0], iOpen(NULL,1440,days_Back));
   ObjectSetText("dayOpenText "+Magic_Number,"                               day Open [ "+days_Back+" ]",Font_Size,Font_Type,DailyOpen_color);
   } else{ ObjectMove("dayOpenText "+Magic_Number, 0,Time[0], iOpen(NULL,1440,days_Back)); }
   
       ObjectDelete("dayHighText "+Magic_Number);   
   if(ObjectFind("dayHighText "+Magic_Number) != 0) {
   ObjectCreate("dayHighText "+Magic_Number, OBJ_TEXT,0,Time[0], iOpen(NULL,1440,days_Back)+Set_High_Value*myPoint);
   ObjectSetText("dayHighText "+Magic_Number,"                           day [ "+days_Back+" ]+"+Set_High_Value,Font_Size,Font_Type,DailyHighValue_color);
   } else{ ObjectMove("dayHighText "+Magic_Number, 0,Time[0], iOpen(NULL,1440,days_Back)+Set_High_Value*myPoint); }

       ObjectDelete("dayLowText "+Magic_Number);   
   if(ObjectFind("dayLowText "+Magic_Number) != 0) {
   ObjectCreate("dayLowText "+Magic_Number, OBJ_TEXT,0,Time[0], iOpen(NULL,1440,days_Back)-Set_Low_Value*myPoint);
   ObjectSetText("dayLowText "+Magic_Number,"                           day [ "+days_Back+" ]-"+Set_Low_Value,Font_Size,Font_Type,DailyLowValue_color);
   } else{ ObjectMove("dayLowText "+Magic_Number, 0,Time[0], iOpen(NULL,1440,days_Back)-Set_Low_Value*myPoint); }
   }
   return(0);
  }
//+------------------------------------------------------------------+