Vertical line Indicator For MT5
Table Of Contents:
- Vertical line Indicator For MT5
- Установка Vertical line Indicator For MT5
- Параметры Vertical line Indicator For MT5
- Буферы Vertical line Indicator For MT5
- Основные части кодекса
Индикатор Vertical line Indicator For MT5 рисует вертикальную линию в определенное время фактического дня. Если день изменится, то будет проведена новая линия для фактического дня. Вы можете использовать эту линию для нескольких целей, таких как предупреждение о предстоящих новостях или любое другое использование, когда вам нужно увидеть определенное время на графике (вспомните выходные).
Установка Vertical line Indicator For MT5
После того, как вы загрузили индикатор через форму выше, вам необходимо распаковать zip-файл. Затем вам нужно скопировать файл Vertical_line.mq5 в папку MQL5Indicators вашей установки MT5 . После этого перезапустите MT5, и вы сможете увидеть индикатор в списке индикаторов.
Параметры Vertical line Indicator For MT5
Vertical line Indicator For MT5 имеет параметры 5 для настройки.
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
Буферы Vertical line Indicator For MT5
Vertical line Indicator For MT5 предоставляет буферы 0 .
Основные части кодекса
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); } //+------------------------------------------------------------------+