//+------------------------------------------------------------------+
//|                                            Market_Open_Lines.mq4 |
//|                                    Copyright © 2008, NuckingFuts |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property copyright "Copyright © 2008, NuckingFuts"
#property link      "www.forexfactory.com"

extern string   Sydney_Open    = "00:00";
extern string   Tokyo_Open     = "02:00";
extern string   London_Open    = "10:00";
extern string   NY_Open        = "15:00";

extern color    LineColor      = Tomato;
extern int      LabelPipOffset = 30;
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("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 Open",Sydney_Open);
   DrawOpenLine("TokOpen","Tokyo Open",Tokyo_Open);
   DrawOpenLine("LonOpen","London Open",London_Open);
   DrawOpenLine("NYOpen","NY Open",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);
}
//+------------------------------------------------------------------+