//+------------------------------------------------------------------+//| Vline.mq4 |//| Copyright 2019, MarcovdHeijden, MetaQuotes Software Corp. |//| https://www.mql5.com/en/users/thecreator1/news |//+------------------------------------------------------------------+#property copyright"Copyright 2019, MarcovdHeijden, MetaQuotes Software Corp."#property link"https://www.mql5.com/en/users/thecreator1/news"#property version"1.00"#property strict//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- assemble time parameterdatetime time=Time[0]+50*PeriodSeconds();
//--- create v line
VLineCreate(0,"V-Line-"+TimeToString(time,TIME_DATE),0,time);
//---
}
//+------------------------------------------------------------------+ //| Create the vertical line | //+------------------------------------------------------------------+ bool VLineCreate(constlong chart_ID=0,// chart's ID conststring name="VLine", // line name constint sub_window=0, // subwindow index datetime _time=0,// line time constcolor clr=clrRed, // line color constENUM_LINE_STYLE style=STYLE_SOLID, // line style constint width=1, // line width constbool back=false, // in the background constbool selection=false,// highlight to move constbool ray=true, // line's continuation down constbool hidden=true, // hidden in the object list constlong 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);
//--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the line by mouse //--- when creating a graphical object using ObjectCreate function, the object cannot be //--- highlighted and moved by default. Inside this method, selection parameter //--- is true by default making it possible to highlight and move the object ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- enable (true) or disable (false) the mode of displaying the line in the chart subwindows ObjectSetInteger(chart_ID,name,OBJPROP_RAY,ray);
//--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution return(true);
}
//+------------------------------------------------------------------+ //| Move the vertical line | //+------------------------------------------------------------------+ bool VLineMove(constlong chart_ID=0,// chart's ID conststring 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(constlong chart_ID=0,// chart's ID conststring 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);
}
//+------------------------------------------------------------------+
The function creates an object with the specified name, type, and the initial coordinates in the specified chart subwindow. During creation up to 30 coordinates can be specified. The function returns true if the command has been successfully added to the queue of the specified chart, or false otherwise. If an object has already been created, an...
// InputDateTime= is the time you want to use to draw the VLine
datetime TimeVLineFile = (datetime) ObjectGetInteger(0, InputDateTime, OBJPROP_TIME1);
MqlDateTime str1;
TimeToStruct(TimeVLineFile ,str1);
int Year = str1.year;
int Month = str1.mon;
int Day = str1.day;
int Hour = str1.hour;
int Minutes = str1.min;
int Seconds = str1.sec;
string VLineDateFormat= str1.year+"."+str1.mon+"."+str1.day+" "+ str1.hour+":" + str1.min;
ObjectCreate(0, "L3", OBJ_VLINE, 0, StringToTime(VLineDateFormat), High[0]);
Marcoさん、ありがとうございます。
D'形式で時間を設定し、その情報をアラートとして表示したところ、矢印の時間と一致することが確認できました。
Vラインはまだ現在のキャンドルに作成されます。
これは私が使用したコードです。
関連トピックはこちらです: https://www.mql5.com/en/forum/233876
私はシフトを知っていたので、私はすでにチャート上のVラインを持っている、彼らはシフトを使用して、Vラインを描いたリンクのトピックで
以前の投稿で、VPS再起動時や週末、MT4再起動時に作成したVラインが消えてしまうと書きましたが、もし消えてしまった場合、後で再作成しようとVラインの日付を保存しています。
MT4には、テキストの日付からVラインを作成する機能はないようです。
以前の投稿で、VPS再起動時や週末、MT4再起動時に作成したVラインが消失することがあると書きましたが、消失した場合、後で再作成するためにVラインの日付を保存しています。
もし、.NETで保存しているのであれば、.NETで保存した日付のままでも、Vラインは作成できます。
ここで、Vラインを再作成するために、TimeExit_SymSymbolから 秒数を分割する必要はありません。この作業は、秒数を考慮していないため、ObjectCreate()自体で行わ れます。
このように、コードを単純化することができます。
早速スクリプトを試してみましたが、確かに未来への一線を画していますね。
早速スクリプトを試してみましたが、確かに未来への一線を画していますね。
親愛なるマルコ。
あなたは、現在のバーに関連するシフトを使用しています。これは、私が私のチャートのVラインを作成するために使用したのと同じ方法ですが、問題はシフトを知らずに、現在の時間/バーを 参照せずにVラインを作成することです。
VPSの再起動や週末にVラインを失うことがあるので、私が見つけた唯一のオプションは、チャート上のラインの時間/日付を保存し、それらを再度作成しようとする理由です、シフトを保存すると、バーの進行と週末のバーがあるようにあまり役立ちません .
MT4(https://www.mql5.com/en/docs/objects/objectcreate)によると、V-Lineは時間/日付のみを使用して作成することができます。私はそれがどこにも見たことがないと私は運なしで疲れたので、私はその方法を見たいと思います。
ようやく、その方法がわかりました。
もし誰かが時刻と日付だけを使ってV-Lineを描きたいのなら、以下のコードを使ってください。
ようやく、その方法がわかりました。
もし、誰かが時間/日付だけを使用してV-Lineを描画したい場合は、次のコードを使用します。
私の以前の投稿を見ると、秒を削除 しようとしましたが、うまくいきませんでした。しかし、変換後のコードはうまくいきました。
私は、あなたのバージョンのコードが好きです。シンプルでエレガントで、うまく機能します。