desert:
こんにちは。
インジケーターでグラフィカルなオブジェクトを使うのは初めてです。毎日同じ時間「22:00」に縦線を引きたいのですが、解決策をご教示いただけないでしょうか?
ありがとうございます。
VLineの代わりにCyclesを使用してください。
Lukeさん、ありがとうございます。
for (int shift22=0; shift22<Bars && TimeHour(Time[shift22])!=22; shift22++){} VLine("2200", Time[shift22] %3600, Red); // %3600 needed for M30 and lower =================================== void vLine(string name, datetime T0, color clr){ #define WINDOW_MAIN 0 if (!Show.Objects) return; /**/ if (ObjectMove( name, 0, T0, 0 )){} else if(!ObjectCreate( name, OBJ_VLINE, WINDOW_MAIN, T0, 0 )) Alert("ObjectCreate(",name,",VLINE) failed: ", GetLastError() ); if (!ObjectSet(name, OBJPROP_COLOR, clr )) // Allow color change Alert("ObjectSet(", name, ",Color) [1] failed: ", GetLastError() ); if (!ObjectSetText(name, TimeToStr(T0, TIME_MINUTES), 10)) Alert("ObjectSetText(",name,") [1] failed: ", GetLastError()); }
こんにちは、皆さん。
私は他のコードで問題を解決することができましたが(本当に私は上で与えられた解決策を適用することができませんでした)、まったくできません。
今、私はすべての前の22:00のローソクのための垂直線を 得るが、私は価格(未来)の右側に来る22:00のローソクに線を必要とする、私はどのようにそれを得ることができますか?
これはコードです。
...
for (shift=NumBars;shift>=0;shift--)。
{
if (TimeHour(Time[shift])== Offset && TimeMinute(Time[shift])==0)
{
if(ObjectFind("Offset "+shift) != 0)
{
ObjectCreate("Offset "+shift, OBJ_VLINE, 0, Time[shift], 0);
ObjectSet("Offset "+shift, OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("Offset "+shift, OBJPROP_COLOR, White); ObjectSet("Offset "+shift, OBJPROP_COLOR, White);
}
}
助けて!
ありがとうございます :)
コードの投稿にはこちらをご利用ください。.読みやすくなります。
desert:
今、私はすべての前の22:00のローソク足の垂直線を得るが、私は価格(未来)の右側に来る22:00のローソク足の線が必要です、私はそれを得ることができたか?
今、私はすべての前の22:00のローソク足の垂直線を得るが、私は価格(未来)の右側に来る22:00のローソク足の線が必要です、私はそれを得ることができたか?
- 次回は、あなたの元の質問をより正確にする。
datetime now = Time[0], bod = now - now % 86400, // Beginning of the day Hr22= bod + 22 * 3600; // 2200 VLine("2200", Hr22, Red);
WHRoeder:
ありがとうございました。
- 次回はもっと正確に質問してください。
はい。
Use ObjectCreate( and OBJ_VLINE
または、例えばこのような機能を 使用します。
//+------------------------------------------------------------------+ //| 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); //--- 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); } //+------------------------------------------------------------------+
ありがとうマルコ、それは動作しませんでした、私は全体のコードを投稿します、あなたは私が正しい日付を持っているが、私はその日に行を作成することができないことをアラートで見ることができます
私が達成しようとしていることは、市場が閉じられ、MT4がブローカーに接続されていないVPSで開かれたとき、情報が失われることがあるので、失われた場合に備えてチャート上に持っている情報を保存することです。
週末前に、チャートの未来のセクション(右端)にある私のラインを維持したいと思います。そうするために、私はチャートにシンボルを作成し、そのシンボルの日付を保存し、その日付を使用してラインを再作成します。
//+------------------------------------------------------------------+ //| TestLines.mq4 | //| Copyright 2019, Alfa | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, Alpha" #property version "1.00" #property strict datetime PreTradeDOT, Symb_Chart_Dates, Exit_SymDOT; string Exit_SymSymbol = "Exit_Sym", ExitLine = "Exit"; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- OnTick(); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //---Object creation ObjectCreate(0, Exit_SymSymbol, OBJ_ARROW_DOWN, 0, Time[0] + Period() * 60 * 40, High[0]); ObjectSet(Exit_SymSymbol, OBJPROP_COLOR, Red); ObjectSet(Exit_SymSymbol, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(Exit_SymSymbol, OBJPROP_WIDTH, 3); ObjectSet(Exit_SymSymbol, OBJPROP_RAY, false); ObjectSet(Exit_SymSymbol, OBJPROP_BACK, True); ObjectSet(Exit_SymSymbol, OBJPROP_NAME, True); ObjectSet(Exit_SymSymbol, OBJPROP_TEXT, True); ObjectSetText(Exit_SymSymbol, "Exit_SymSymbol", 1); datetime TimeExit_SymSymbol = (datetime) ObjectGetInteger(0, Exit_SymSymbol, OBJPROP_TIME1); string TxtExit_SymSymbol = TimeToStr(TimeExit_SymSymbol, TIME_DATE | TIME_SECONDS); //--- if (ObjectFind(0, Exit_SymSymbol) == 0) // Object is found on main screen when its ==0 { Exit_SymDOT = (datetime) ObjectGetInteger(0, Exit_SymSymbol, 0, 0); //Alert(Exit_SymDOT ); SaveDates(); } if (ObjectFind(0, ExitLine) != 0) { ReadDates(); datetime Symb_Dates = StringToTime(StringSubstr(Symb_Chart_Dates, 0, 16)); // OK Alert(Symb_Dates); VLineCreate(0, "VLine", 0, Symb_Dates, clrRed, STYLE_SOLID, 1, false, true, true, true, 0); /* // ObjectCreate(0,ExitLine, OBJ_VLINE, 0, StringToTime(Symb_Dates), Low[0]); ObjectCreate(ExitLine, OBJ_VLINE, 0, StringToTime( Symb_Dates), Low[0]); // ObjectCreate(vLine, OBJ_VLINE, 0, Time[0] + (Symb_Dates-TimeCurrent()) , Low[0]); //ObjectCreate( ExitLine, OBJ_VLINE, 0, Symb_Dates, 0 ); ObjectSet(ExitLine, OBJPROP_COLOR, Orange); ObjectSet(ExitLine, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(ExitLine, OBJPROP_WIDTH, 3); ObjectSet(ExitLine, OBJPROP_RAY, false); ObjectSet(ExitLine, OBJPROP_BACK, True); */ } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //-- Function: ReadSpread //+------------------------------------------------------------------+ void ReadDates() { string fileName = getFileName(1); int file = FileOpen(fileName, FILE_CSV | FILE_READ); //--- This is a protection to avoid low spread and also for the expert //--- if the file has not been created then create a new file Symb_Chart_Dates = (datetime) ObjectGetInteger(0, Exit_SymSymbol, OBJPROP_TIME1, 0); int ShiftEntryBar = 10, TradeExit_SymBar = 30; if (file <= -1) { Exit_SymDOT = Time[0] + Period() * 60 * TradeExit_SymBar; SaveDates(); } //--- If there is a file then save the spreads if (file > 0) { Symb_Chart_Dates = FileReadNumber(file); FileClose(file); } } // //+------------------------------------------------------------------+ //-- Function: saveSpread //+------------------------------------------------------------------+ void SaveDates() { string fileName = getFileName(1); int file = FileOpen(fileName, FILE_CSV | FILE_WRITE); if (file > 0) { FileWrite(file, PreTradeDOT, Symb_Chart_Dates, Exit_SymDOT); FileClose(file); } } //+--------------------------------------------------------------------------------------------------+ //-- Function: getFileName //+--------------------------------------------------------------------------------------------------+ string getFileName(int FileNo) { string filename; //--- The spread file will be used for all time frames if (FileNo == 1) filename = " # " + "Lines" + ".txt"; // spread file return(filename); } //+------------------------------------------------------------------+ //| 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); //--- 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); } //+------------------------------------------------------------------+

取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
こんにちは。
インジケーターでグラフィカルなオブジェクトを使うのは初めてです。毎日同じ時間「22:00」に縦線を 引きたいのですが、解決策をご教示いただけないでしょうか?
ありがとうございます。