//+------------------------------------------------------------------+
//|                                             weekly_open_line.mq4 |
//|                                    Copyright © 2008, NuckingFuts |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property copyright "Copyright © 2008, NuckingFuts"
#property link      "www.forexfactory.com"

extern color   WeeklyOpen_Color           = Red;
extern string  WeeklyOpen_Style           = "DASH";
extern int     WeeklyOpen_Width           = 1;
extern string  WeeklyOpen_Label           = "Weekly Open Line";
extern int     WeeklyOpen_Label_Offset    = 50;
extern string  WeeklyOpen_Label_Font      = "Arial";
extern int     WeeklyOpen_Label_Font_Size = 8;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
	// Stop out of bounds array
	if (WeeklyOpen_Label_Offset < 0) WeeklyOpen_Label_Offset = 0;
	
	// Only the style SOLID width can be greater than 1 
	if (WeeklyOpen_Style != "SOLID" && WeeklyOpen_Width > 1)
	  WeeklyOpen_Width = 1;
	
	return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
	// Delete lines
	ObjectDelete("Weekly_Open_Line");
	ObjectDelete("WO_Label");
	return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   // Current weekly bar open price
   double wo = iOpen(NULL, PERIOD_W1, 0);
   
   // Weekly open line
   ObjectCreate("Weekly_Open_Line", OBJ_HLINE, 0, Time[0], wo);
   ObjectSet("Weekly_Open_Line", OBJPROP_COLOR, WeeklyOpen_Color);
   ObjectSet("Weekly_Open_Line", OBJPROP_STYLE, GetLineStyle());
   ObjectSet("Weekly_Open_Line", OBJPROP_WIDTH, WeeklyOpen_Width);
   
   // Weekly open label
   ObjectCreate("WO_Label", OBJ_TEXT, 0, Time[WeeklyOpen_Label_Offset], wo);
   ObjectSetText("WO_Label", 
                 WeeklyOpen_Label, 
                 WeeklyOpen_Label_Font_Size, 
                 WeeklyOpen_Label_Font, 
                 WeeklyOpen_Color);
   return (0);
}
//+------------------------------------------------------------------+
//| GetLineStyle int                                                 |
//+------------------------------------------------------------------+
int GetLineStyle()
{
   int ls = 0;
   string stylearray[5] = {"SOLID", "DASH", "DOT", "DASHDOT", "DASHDOTDOT"};
   
   if (WeeklyOpen_Style == stylearray[1])      ls = 1;
   else if (WeeklyOpen_Style == stylearray[2]) ls = 2;
   else if (WeeklyOpen_Style == stylearray[3]) ls = 3;
   else if (WeeklyOpen_Style == stylearray[4]) ls = 4;
   return(ls);
}
//+------------------------------------------------------------------+