//+------------------------------------------------------------------+
//|                            Market Open Lines Northern Summer.mq4 |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
 

extern string   Sydney_Open    = "00:00";
extern string   Tokyo_Open     = "03:00";
extern string   Frankfurt_Open = "08:00";
extern string   London_Open    = "10:00";
extern string   NY_Open        = "15:00";

extern color    LineColor      = Black;
extern int      LabelPipOffset = 35;
extern int      LabelFontSize  = 9;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
	return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
	/* Delete our objects */
	
	ObjectDelete("SydOpen");
	ObjectDelete("SydOpen_Label");
	ObjectDelete("TokOpen");
	ObjectDelete("TokOpen_Label");
	ObjectDelete("FraOpen");
	ObjectDelete("FraOpen_Label");
	ObjectDelete("LonOpen");
	ObjectDelete("LonOpen_Label");
	ObjectDelete("NYOpen");
	ObjectDelete("NYOpen_Label");
	
	return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   /* If period > 1hr, don't draw open lines */
   if (Period() > PERIOD_H1) return(0);
   
   /* Draw the market open lines */
   DrawOpenLine("SydOpen","SYDNEY",Sydney_Open);
   DrawOpenLine("TokOpen","TOKYO",Tokyo_Open);
   DrawOpenLine("FraOpen","FRANKFURT",Frankfurt_Open);
   DrawOpenLine("LonOpen","LONDON",London_Open);
   DrawOpenLine("NYOpen","NEW YORK",NY_Open);

   return(0);
}
//+------------------------------------------------------------------+
void DrawOpenLine(string ObjName, string ObjText, string OpenTime)
{
   /* Convert the open time string to datetime */
   datetime t = StrToTime(OpenTime);
   
   /* Create the vertical open line */
   ObjectCreate(ObjName,OBJ_VLINE,0,t,0);
   ObjectSet(ObjName,OBJPROP_BACK,true); 
   ObjectSet(ObjName,OBJPROP_COLOR,LineColor);
   ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DOT);
   
   /* Determine the vertical position of the label object */
   double p = High[iHighest(NULL,0,MODE_HIGH,WindowBarsPerChart(),1)];
   p = p-(LabelPipOffset*Point);
   
   /* Draw the label object */
   ObjectCreate(ObjName+"_Label",OBJ_TEXT,0,t,p);
   ObjectSetText(ObjName+"_Label",ObjText,LabelFontSize);
   ObjectSet(ObjName+"_Label",OBJPROP_ANGLE,90);
   ObjectSet(ObjName+"_Label",OBJPROP_COLOR,LineColor);

   return(0);
}
//+------------------------------------------------------------------+