Vertical line Indicator For MT5
Table Of Contents:
- Vertical line Indicator For MT5
- Installation des Vertical line Indicator For MT5
- Parameter des Vertical line Indicator For MT5
- Puffer des Vertical line Indicator For MT5
- Hauptteile des Codes
Die Vertical line Indicator For MT5 zeichnet eine vertikale Linie zu einer bestimmten Tageszeit. Wenn sich der Tag ändert, wird eine neue Linie für den aktuellen Tag gezogen. Sie können die Zeile für verschiedene Zwecke verwenden, z. B. als Warnung für bevorstehende Nachrichten oder für jede andere Verwendung, bei der Sie eine bestimmte Zeit in der Tabelle anzeigen müssen (denken Sie an Wochenenden).
Installation des Vertical line Indicator For MT5
Nachdem Sie den Indikator über das obige Formular heruntergeladen haben, müssen Sie die Zip-Datei entpacken. Anschließend müssen Sie die Datei Vertical_line.mq5 in den Ordner MQL5Indicators Ihrer MT5 Installation kopieren. Starten Sie danach MT5 neu und Sie können den Indikator in der Liste der Indikatoren sehen.
Parameter des Vertical line Indicator For MT5
Der Vertical line Indicator For MT5 verfügt über 5 zu konfigurierende Parameter.
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
Puffer des Vertical line Indicator For MT5
Der Vertical line Indicator For MT5 stellt 0 Puffer bereit.
Hauptteile des Codes
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); } //+------------------------------------------------------------------+