//+------------------------------------------------------------------+
//|                                       mpurdy_GBPtriggerTimes.mq4 |
//|                                                    Matthew Purdy |
//|                                             mpurdy1973@yahoo.com |
//+------------------------------------------------------------------+
#define MAX_OBJECTS 1000 

#property copyright "Matthew Purdy"
#property link      "mpurdy1973@yahoo.com"

#property indicator_chart_window

string glob_objectArray[MAX_OBJECTS];
int glob_objectArrayCount = 0;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   deleteAllObjects();
   
   return(0);
   
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
//Print("##### start");
   int countedBars = IndicatorCounted();
//Print("##### start: countedBars = " + countedBars);  
   int startBars = 5000 - countedBars;
   datetime dailyStartTime = 0;
   double dailyLow = 1000.0;
   double dailyHigh = 0.0;
   for(int i = startBars; i > 0; i--)
   {
      
      if(TimeHour(Time[i]) == 0 && TimeMinute(Time[i]) == 0)
      {
         dailyStartTime = Time[i];
         dailyLow = Low[i];
         dailyHigh = High[i];
         ObjectCreate(TimeToStr(Time[i]) + "_0000", OBJ_VLINE, 0, Time[i], 10.0, Time[i], 0.0);
         ObjectSet(TimeToStr(Time[i]) + "_0000", OBJPROP_COLOR, White);
         ObjectSet(TimeToStr(Time[i]) + "_0000", OBJPROP_WIDTH, 2);
         addObject(TimeToStr(Time[i]) + "_0000");
         
      }//end if time is 0000
      
      if(((TimeHour(Time[i]) >= 0 && TimeHour(Time[i]) < 6)
         || (TimeHour(Time[i]) == 6 && TimeMinute(Time[i]) == 0)))
      {
         if(Low[i] < dailyLow)
            dailyLow = Low[i];
         if(High[i] > dailyHigh)
            dailyHigh = High[i];
         
      }//end if in test range

      if(TimeHour(Time[i]) == 6 && TimeMinute(Time[i]) == 00)
      {
         ObjectCreate(TimeToStr(Time[i]) + "_0600", OBJ_VLINE, 0, Time[i], 10.0, Time[i], 0.0);
         ObjectSet(TimeToStr(Time[i]) + "_0600", OBJPROP_COLOR, Yellow);
         ObjectSet(TimeToStr(Time[i]) + "_0600", OBJPROP_WIDTH, 1);
         addObject(TimeToStr(Time[i]) + "_0600");
         
         ObjectCreate(TimeToStr(Time[i]) + "highLine", OBJ_TREND, 0, dailyStartTime, dailyHigh, Time[i], dailyHigh);
         ObjectSet(TimeToStr(Time[i]) + "highLine", OBJPROP_COLOR, DarkOrchid);
         ObjectSet(TimeToStr(Time[i]) + "highLine", OBJPROP_WIDTH, 2);
         ObjectSet(TimeToStr(Time[i]) + "highLine", OBJPROP_STYLE, STYLE_DOT);
         ObjectSet(TimeToStr(Time[i]) + "highLine", OBJPROP_RAY, false);
         addObject(TimeToStr(Time[i]) + "highLine");
          
         ObjectCreate(TimeToStr(Time[i]) + "lowLine", OBJ_TREND, 0, dailyStartTime, dailyLow, Time[i], dailyLow);
         ObjectSet(TimeToStr(Time[i]) + "lowLine", OBJPROP_COLOR, DarkOrchid);
         ObjectSet(TimeToStr(Time[i]) + "lowLine", OBJPROP_WIDTH, 2);
         ObjectSet(TimeToStr(Time[i]) + "lowLine", OBJPROP_STYLE, STYLE_DOT);
         ObjectSet(TimeToStr(Time[i]) + "lowLine", OBJPROP_RAY, false);
         addObject(TimeToStr(Time[i]) + "lowLine");
         
      }//end if time is 0600 (0200 eastern time)
      
      if(TimeHour(Time[i]) == 7 && TimeMinute(Time[i]) == 00)
      {
         ObjectCreate(TimeToStr(Time[i]) + "_0700", OBJ_VLINE, 0, Time[i], 10.0, Time[i], 0.0);
         ObjectSet(TimeToStr(Time[i]) + "_0700", OBJPROP_COLOR, Red);
         ObjectSet(TimeToStr(Time[i]) + "_0700", OBJPROP_WIDTH, 1);
         addObject(TimeToStr(Time[i]) + "_0700");
         
      }//end if time is 0700 (0300 eastern time)
 
      if(TimeHour(Time[i]) == 8 && TimeMinute(Time[i]) == 00)
      {
         ObjectCreate(TimeToStr(Time[i]) + "_0800", OBJ_VLINE, 0, Time[i], 10.0, Time[i], 0.0);
         ObjectSet(TimeToStr(Time[i]) + "_0800", OBJPROP_COLOR, Blue);
         ObjectSet(TimeToStr(Time[i]) + "_0800", OBJPROP_WIDTH, 1);
         addObject(TimeToStr(Time[i]) + "_0800");
         
      }//end if time is 0800 (0400 eastern time)
      
      if(TimeHour(Time[i]) == 10 && TimeMinute(Time[i]) == 00)
      {
         ObjectCreate(TimeToStr(Time[i]) + "_1000", OBJ_VLINE, 0, Time[i], 10.0, Time[i], 0.0);
         ObjectSet(TimeToStr(Time[i]) + "_1000", OBJPROP_COLOR, Green);
         ObjectSet(TimeToStr(Time[i]) + "_1000", OBJPROP_WIDTH, 1);
         addObject(TimeToStr(Time[i]) + "_1000");
         
      }//end if time is 1000 (0600 eastern time)
 
       if(TimeHour(Time[i]) == 12 && TimeMinute(Time[i]) == 00)
      {
         ObjectCreate(TimeToStr(Time[i]) + "_1200", OBJ_VLINE, 0, Time[i], 10.0, Time[i], 0.0);
         ObjectSet(TimeToStr(Time[i]) + "_1200", OBJPROP_COLOR, Purple);
         ObjectSet(TimeToStr(Time[i]) + "_1200", OBJPROP_WIDTH, 1);
         addObject(TimeToStr(Time[i]) + "_1200");
         
      }//end if time is 1200 (0800 eastern time)
      
   }//end for the range


   return(0);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| deleteAllObjects                                                 |
//+------------------------------------------------------------------+
void deleteAllObjects()
{
   for(int i = 0; i < glob_objectArrayCount; i++)
      ObjectDelete(glob_objectArray[i]);
      
   glob_objectArrayCount = 0;
      
}//end function deleteAllObjects
//--------------------------------------------------------------------

//+------------------------------------------------------------------+
//| addObject                                                        |
//+------------------------------------------------------------------+
void addObject(string sObj)
{
   if(glob_objectArrayCount <= MAX_OBJECTS)
   {
      glob_objectArray[glob_objectArrayCount] = sObj;
      glob_objectArrayCount++;
      
   }//end if room for more objects
      
}//end function deleteAllObjects
//--------------------------------------------------------------------