//+------------------------------------------------------------------+
//|                                                        Bulls.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
//---- input parameters
extern int BarsBack = 300;
extern int CountBars=30;
extern int myYear = 2011;
extern int myMonth = 9;
extern int myDay = 20;
extern int myHour = 12;
extern int myMinute = 0;

extern color LineColor = Red;

string ObjID = "CL_";
int per;
int StartBar;

//---- buffers
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----
   per = Period();
   return(0);
  }
  
  int deinit()
  {
   DeleteExistingLines();
  }
  
//+------------------------------------------------------------------+
//| Bulls Power                                                      |
//+------------------------------------------------------------------+
int start()
  {
   int i, counted_bars=IndicatorCounted();
//----
   if(Bars<=CountBars) return(0);
//----
   int limit=BarsBack;
   datetime tm;
   
   
// Find starting point for lines

   for(i=0; i<limit; i++)
   {
      tm = iTime(NULL, 0, i);   
      if (TimeYear(tm) == myYear)
      {
        if (TimeMonth(tm) == myMonth)
        {
           if (per > 1440)
             StartBar = i;
           else
           {
             if (TimeDay(tm) == myDay)
             {
               if (per > 60)
                  StartBar = i;
               else
               {
                 if (TimeHour(tm) == myHour)
                 {
                   if (per == 60)
                     StartBar = i;
                   else
                   {
                    if (TimeMinute(tm) == myMinute) StartBar = i;
                   }
                 } // Hour check
               } // period greater than hour check
             } // Day check
           } // period greaterthan day check
           
        }
      }
   }

   for(i=StartBar; i<limit; i+=CountBars)
      DrawLine(ObjID + i, iTime(NULL, 0, i), LineColor);
   if (StartBar > CountBars)
   {
      for(i=StartBar; i>= 0; i-=CountBars)
        DrawLine(ObjID + i, iTime(NULL, 0, i), LineColor);
      
   }
   
//----
//----
   return(0);
  }
  
void DeleteExistingLines()
{
   int objLines = ObjectsTotal(OBJ_VLINE);
   string objName;
   
   if (objLines > 0)
   {
      for (int i = objLines; i >= 0;i--)
      {
         objName = ObjectName(i);
         if (StringFind(objName, ObjID, 0) >= 0) { ObjectDelete(objName); continue; }  
      }
   }
}

void DrawLine(string LineName, datetime myTime, color LineColor)
{

  	if(ObjectFind(LineName) != 0)
   {
   ObjectCreate(LineName, OBJ_VLINE, 0, myTime, 0);
	ObjectSet(LineName, OBJPROP_COLOR, LineColor);
	ObjectSet(LineName, OBJPROP_STYLE, STYLE_SOLID);
	ObjectSet(LineName, OBJPROP_WIDTH, 1);
	}
	ObjectSet(LineName, OBJPROP_TIME1, myTime);
}

//+------------------------------------------------------------------+