Vertical line Indicator For MT5

Vertical line Indicator For MT5

The Vertical line Indicator For MT5 draws a vertical line at a specific time of the actual day. If the day changes then a new line will be drawn for the actual day. You can use the line for several purposes like a warning for upcoming news or any other use ase where you need to see a specific time on the chart (think of weekends).

FREE Vertical line Indicator

Download the FREE Vertical line Indicator for MT5.

To receive my email 100% sure: 
Put my email on your whitelist!

 

Partially Automated Trading Besides Your Day Job

Alerts In Real-Time When Divergences Occur

My Recommended MT4/MT5 Broker

 

Installing the Vertical line Indicator For MT5

After you downloaded the indicator via the form above you need to unzip the zip-file. Then you need to copy the file Vertical_line.mq5 into the folder MQL5\Indicators of your MT5 installation. After that please restart MT5 and then you will be able to see the indicator in the list of indicators.

Parameters of the Vertical line Indicator For MT5

The Vertical line Indicator For MT5 has 5 parameters to configure.

input datetime          InpTime  = D 2017.05.22 18:40:00 ;  // Use only Hours and minutes
input string            InpName  = "Vertical line";         // Line name
input color             InpColor = clrRed;                  // Line color
input ENUM_LINE_STYLE   InpStyle = STYLE_DASH;              // Line style
input int               InpWidth = 3;                       // Line width

Buffers of the Vertical line Indicator For MT5

The Vertical line Indicator For MT5 provides 0 buffers.

Main Parts Of The Code

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[])
  {
//---
   MqlDateTime str_to_draw;
   TimeToStruct(TimeCurrent(),str_to_draw);

   if(prev_date==0) // first start
     {
      MqlDateTime str_input;
      TimeToStruct(InpTime,str_input);
      str_to_draw.hour=str_input.hour;
      str_to_draw.min=str_input.min;
      str_to_draw.sec=0;

      prev_date=StructToTime(str_to_draw);
      VLineMove(0,InpName,prev_date);

      return(rates_total);
     }

   MqlDateTime str_prev_date;
   TimeToStruct(prev_date,str_prev_date);

   if(str_to_draw.day==str_prev_date.day) // today the vertical line has already been drawn
      return(rates_total);
   else
     {
      MqlDateTime str_input;
      TimeToStruct(InpTime,str_input);
      str_to_draw.hour=str_input.hour;
      str_to_draw.min=str_input.min;
      str_to_draw.sec=0;

      prev_date=StructToTime(str_to_draw);
      VLineMove(0,InpName,prev_date);
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- protection against unauthorized deletion
   if(ObjectFind(0,InpName) lt 0)
     {
      prev_date=0;
      VLineCreate(0,InpName,0,0.0,InpColor,InpStyle,InpWidth);
     }
  }
//+------------------------------------------------------------------+ 
//| Create the vertical line                                         | 
//+------------------------------------------------------------------+ 
bool VLineCreate(const long            chart_ID=0,        // chart s ID 
                 const string          name="VLine",      // line name 
                 const int             sub_window=0,      // subwindow index 
                 datetime              time=0,            // line time 
                 const color           clr=clrRed,        // line color 
                 const ENUM_LINE_STYLE style=STYLE_SOLID, // line style 
                 const int             width=1/*,           // line width 
                 const bool            back=false,        // in the background 
                 const bool            selection=true,    // highlight to move 
                 const bool            ray=true,          // line s continuation down 
                 const bool            hidden=true,       // hidden in the object list 
                 const long            z_order=0*/) // priority for mouse click 
  {
//--- if the line time is not set, draw it via the last bar 
   if(!time)
      time=TimeCurrent();
//--- reset the error value 
   ResetLastError();
//--- create a vertical line 
   if(!ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0))
     {
      Print(__FUNCTION__,
            ": failed to create a vertical line! Error code = ",GetLastError());
      return(false);
     }
//--- set line color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set line display style 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set line width 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Move the vertical line                                           | 
//+------------------------------------------------------------------+ 
bool VLineMove(const long   chart_ID=0,   // chart s ID 
               const string name="VLine", // line name 
               datetime     time=0)       // line time 
  {
//--- if line time is not set, move the line to the last bar 
   if(!time)
      time=TimeCurrent();
//--- reset the error value 
   ResetLastError();
//--- move the vertical line 
   if(!ObjectMove(chart_ID,name,0,time,0))
     {
      Print(__FUNCTION__,
            ": failed to move the vertical line! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Delete the vertical line                                         | 
//+------------------------------------------------------------------+ 
bool VLineDelete(const long   chart_ID=0,   // chart s ID 
                 const string name="VLine") // line name 
  {
//--- reset the error value 
   ResetLastError();
//--- delete the vertical line 
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete the vertical line! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+

 

About Me

I'm Mike Semlitsch the owner of PerfectTrendSystem.com. My trading career started in 2007. Since 2013 I have helped thousands of traders to take their trading to the next level. Many of them are now constantly profitable traders. 

The following performance was achieved by me while trading live in front of hundreds of my clients:

Connect With Me:  

This FREE Indicator Can Transform
Your Trading!

FREE Indicator + Telegram Group


Request the Ultimate Double Top/Bottom Indicator which is used by 10,000+ traders.

Results From 5 Months!
This service starts soon! Be the first who get's notified when it begins!