//+------------------------------------------------------------------+
//|                                   mpurdy_LondonOpenIndicator.mq4 |
//|                                                    Matthew Purdy |
//|                                      mailto:mpurdy1973@yahoo.com |
//+------------------------------------------------------------------+
#property copyright "Matthew Purdy"
#property link      "mailto:mpurdy1973@yahoo.com"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

//input variables
extern bool ExtShowVerticalLines = false;
extern color ExtVerticalLineColor = Yellow;
//---- buffers
double ExtMapBuffer1_LondonDailyOpen[];

string glob_objectArray[100];
int glob_objectArrayCount = 0;
double glob_londonDailyOpen = 0.0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1_LondonDailyOpen);
   SetIndexLabel(0,  "London Daily Open");

   return(0);
   
}//end function init
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   for(int i = 0; i < glob_objectArrayCount; i++)
      ObjectDelete(glob_objectArray[i]);
      
   return(0);
   
}//end function deinit
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int lookback = PERIOD_D1 / Period();
   int verticalLineDrawback = 10 * lookback;
  
//Print("period = ", Period(), ", lookback = ", lookback);   
   for(int i = (Bars - lookback); i > 0; i--)
   {
      if(TimeHour(Time[i]) == 8 && TimeMinute(Time[i]) == 0)
      {
         if(i <= verticalLineDrawback && ExtShowVerticalLines)
         {
            string name = TimeYear(Time[i]) + "." + TimeMonth(Time[i]) + "." + TimeDay(Time[i]) + "." +  TimeHour(Time[i]) + "." + TimeMinute(Time[i]);
            ObjectCreate(name, OBJ_VLINE, 0, Time[i], 1000.0, Time[i], 0.0);
            ObjectSet(name, OBJPROP_COLOR, ExtVerticalLineColor);
            glob_objectArray[glob_objectArrayCount] = name;
            glob_objectArrayCount++;
            
         }//end if last ten days draw vertical lines
         
         glob_londonDailyOpen = Open[i];
      
      }//end if new day
      
      ExtMapBuffer1_LondonDailyOpen[i] = glob_londonDailyOpen;
   
   }//end for all bars

   return(0);
   
}//end function start
//--------------------------------------------------------------------