//+------------------------------------------------------------------+
//|                                                   Close Line.mq4 |
//+------------------------------------------------------------------+

#property indicator_chart_window


//:::::::::::::::::::::::::::::::::::::::::::::
#include <mt4accountinfo.mqh>
#include <mt4string.mqh>
#include <mt4datetime.mqh>
#include <mt4objects_1.mqh>
#include <mt4timeseries_2.mqh>
//Etc.
//:::::::::::::::::::::::::::::::::::::::::::::::

input color  HilineLineColor    =  Aqua;
input int    HilineLineStyle    =  2;
input int    HilineLineWidth    =  0;
input bool   SetLineOnTop       = true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  //:::::::::::::::::::::::::::::::::::::::::::::
  double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
  double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  int Bars=Bars(Symbol(),PERIOD_CURRENT);
  double Point=Point();
  //Etc.
  //:::::::::::::::::::::::::::::::::::::::::::::::

//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int OnDeinit()
  {
  //:::::::::::::::::::::::::::::::::::::::::::::
  double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
  double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  int Bars=Bars(Symbol(),PERIOD_CURRENT);
  double Point=Point();
  //Etc.
  //:::::::::::::::::::::::::::::::::::::::::::::::

//----
   ObjectDelete("closeline");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
  //:::::::::::::::::::::::::::::::::::::::::::::
  double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
  double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  int Bars=Bars(Symbol(),PERIOD_CURRENT);
  double Point=Point();
  //Etc.
  //:::::::::::::::::::::::::::::::::::::::::::::::


  Level("closeline",0,Close[1], Time[0],HilineLineWidth,HilineLineStyle,HilineLineColor,true);                      
                    
   return(rates_total);
  }
  
  
void Level(string Levels, int Window,double starts,double time,double w, double s,color clr, bool deletes)
  {
   if (deletes) ObjectDelete(Levels);
   if(ObjectFind(Levels)!=0)
     { 
   ObjectCreate(Levels, OBJ_HLINE, 0, Time[0], starts,0);
   ObjectSet(Levels, OBJPROP_COLOR, clr);
   ObjectSet(Levels,OBJPROP_BACK,!SetLineOnTop);
   ObjectSet(Levels,OBJPROP_WIDTH,w);
   ObjectSet(Levels,OBJPROP_STYLE,s);
   ObjectSet(Levels,OBJPROP_TIME1,time);
     }
   else
   ObjectMove(Levels, 0, 0, Time[0]);
  } 
  
