//+------------------------------------------------------------------+
//|                                             CycleLinesByName.mq4 |
//|                                    Copyright © 2011, Robert Hill |
//|                                        http://www.mrpipforex.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Robert Hill"
#property link      "http://www.mrpipforex.com/"

#property indicator_chart_window
//---- input parameters
extern string myName = "VertCycle";
extern int BarsBack = 300;
extern int CountBars=30;
extern color LineColor = Red;

string ObjID = "CLN_";
int StartBar;

//---- buffers
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----
   return(0);
  }
  
  int deinit()
  {
   DeleteExistingLines();
  }
  
//+------------------------------------------------------------------+
//| Bulls Power                                                      |
//+------------------------------------------------------------------+
int start()
  {
   int i, counted_bars=IndicatorCounted();
//----
   if(Bars<=CountBars) return(0);
//----
   int limit=BarsBack;
   datetime tm, myStartTime;
   
   
// Find starting point for lines

   if (ObjectFind(myName) < 0) return(0);
   
   myStartTime = ObjectGet(myName, OBJPROP_TIME1);
   
   for(i=0; i<limit; i++)
   {
      tm = iTime(NULL, 0, i);   
      if (tm == myStartTime) StartBar = i;
   }

   for(i=StartBar + CountBars; i<limit; i+=CountBars)
      DrawLine(ObjID + i, iTime(NULL, 0, i), LineColor);
   if (StartBar > CountBars)
   {
      for(i=StartBar-CountBars; i>= 0; i-=CountBars)
        DrawLine(ObjID + i, iTime(NULL, 0, i), LineColor);
      
   }
   
//----
//----
   return(0);
  }
  
void DeleteExistingLines()
{
   int objNum = ObjectsTotal();
   string objName;
   
   if (objNum > 0)
   {
      for (int i = objNum; i >= 0;i--)
      {
         objName = ObjectName(i);
         if (StringFind(objName, ObjID, 0) >= 0) ObjectDelete(objName);  
      }
   }
}

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);
}

//+------------------------------------------------------------------+