Большое спасибо Марко за помощь, по какой-то причине он работает.
Я настроил время в формате D', затем отобразил эту информацию в качестве предупреждения, которое, как вы можете видеть, соответствует времени стрелки, однако
V-Line все еще создается на текущей свече... см. снимок экрана.
Вот код, который я использовал
ObjectDelete(0,"v_line1");
ObjectDelete(0,"v_line2");
datetime TimeExit_SymSymbol = (datetime) ObjectGetInteger(0, Exit_SymSymbol, OBJPROP_TIME1);
MqlDateTime str1;
TimeToStruct(TimeExit_SymSymbol,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 V1DateString= "D'"+str1.year+"."+str1.mon+"."+str1.day+" "+ str1.hour+":" + str1.min+"'";//+":"+str1.sec+"'";ObjectCreate(0, "v_line1", OBJ_VLINE, 0, V1DateString, High[0]);
ObjectCreate(0, "v_line2", OBJ_VLINE, 0, StringToTime(V1DateString), High[0]);
Alert(V1DateString);
У меня уже есть v-линии на графике, так как я знал о сдвиге, в теме по ссылке они нарисовали v-линии, используя сдвиг.
В своих предыдущих сообщениях я упоминал, что теряю созданные v-линии при перезагрузке VPS, во время выходных или иногда при перезагрузке MT4, поэтому я сохраняю даты v-линий, чтобы попытаться создать их позже, если они были потеряны.
Похоже, что MT4 не имеет возможности создавать v-линии из текстовых дат или никто еще не придумал, как это делается.
В своих предыдущих сообщениях я упоминал, что я теряю v-линии, которые я создал при перезагрузке VPS или во время выходных, или иногда при перезагрузке MT4, поэтому я сохраняю даты v-линий, чтобы попытаться восстановить их позже, если они были потеряны.
Здесь для воссоздания v-линий вам не нужно отделять цифры секунд отTimeExit_SymSymbol ...эту работу делает самObjectCreate(), потому что он не учитывает секунды.
Ну, я быстро попробовал скрипт, и это, конечно, подводит черту под будущим.
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Ну, я быстро попробовал сценарий, и это, конечно, подводит черту под будущим.
Уважаемый Марко,
Вы используете сдвиг, относящийся к текущему бару, что является тем же методом, который я использовал для создания V-линий для моих графиков, однако проблема заключается в том, чтобы создать V-линию без знания сдвига и без ссылки на текущее время/бар, проблема заключается в том, чтобы создать V-линию, зная ТОЛЬКО время/дату.
Поскольку я теряю V-линии иногда при перезагрузке VPS, а иногда на выходных, поэтому единственный вариант, который я нашел, это сохранить время/дату линий на графике, а затем попытаться создать их снова, сохранение сдвига не поможет, так как бары прогрессируют, а также есть выходные бары.
Согласно MT4 (https://www.mql5.com/en/docs/objects/objectcreate) V-линия может быть создана только по времени/дате... Я хотел бы увидеть, как это делается, так как я не видел этого нигде, и я устал без удачи.
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...
вот код, если кто-то захочет нарисовать V-линию, используя только время/дату
// 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]);
Это не то, как это делается. Все, что вы сделали, это
Возьмите дату и преобразуйте ее в структуру.
Возьмите структуру и преобразуйте ее в строку (без секунд).
Возьмите строку и преобразуйте ее обратно в исходное время (без секунд).
Если все, что вам нужно, это удалить секунды, вот как это делается:
Если вы посмотрите мои предыдущие сообщения, то увидите, что я пытался удалить секунды, но это не сработало, однако после преобразования код заработал, не знаю, что было не так,
Мне нравится ваша версия кода, она проста, элегантна и хорошо работает, спасибо.
Я впервые использую графические статьи в указателе. Мне нужно нарисовать вертикальную линию в промежутке времени "22:00", не могли бы вы направить меня к ответу?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Большое спасибо Марко за помощь, по какой-то причине он работает.
Я настроил время в формате D', затем отобразил эту информацию в качестве предупреждения, которое, как вы можете видеть, соответствует времени стрелки, однако
V-Line все еще создается на текущей свече... см. снимок экрана.
Вот код, который я использовал
Вот соответствующая тема:https://www.mql5.com/en/forum/233876
У меня уже есть v-линии на графике, так как я знал о сдвиге, в теме по ссылке они нарисовали v-линии, используя сдвиг.
В своих предыдущих сообщениях я упоминал, что теряю созданные v-линии при перезагрузке VPS, во время выходных или иногда при перезагрузке MT4, поэтому я сохраняю даты v-линий, чтобы попытаться создать их позже, если они были потеряны.
Похоже, что MT4 не имеет возможности создавать v-линии из текстовых дат или никто еще не придумал, как это делается.
В своих предыдущих сообщениях я упоминал, что я теряю v-линии, которые я создал при перезагрузке VPS или во время выходных, или иногда при перезагрузке MT4, поэтому я сохраняю даты v-линий, чтобы попытаться восстановить их позже, если они были потеряны.
Если вы сохранили даты как :
Здесь для воссоздания v-линий вам не нужно отделять цифры секунд отTimeExit_SymSymbol ...эту работу делает самObjectCreate(), потому что он не учитывает секунды.
Вы можете упростить свои коды следующим образом:
Ну, я быстро попробовал скрипт, и это, конечно, подводит черту под будущим.
Ну, я быстро попробовал сценарий, и это, конечно, подводит черту под будущим.
Уважаемый Марко,
Вы используете сдвиг, относящийся к текущему бару, что является тем же методом, который я использовал для создания V-линий для моих графиков, однако проблема заключается в том, чтобы создать V-линию без знания сдвига и без ссылки на текущее время/бар, проблема заключается в том, чтобы создать V-линию, зная ТОЛЬКО время/дату.
Поскольку я теряю V-линии иногда при перезагрузке VPS, а иногда на выходных, поэтому единственный вариант, который я нашел, это сохранить время/дату линий на графике, а затем попытаться создать их снова, сохранение сдвига не поможет, так как бары прогрессируют, а также есть выходные бары.
Согласно MT4 (https://www.mql5.com/en/docs/objects/objectcreate) V-линия может быть создана только по времени/дате... Я хотел бы увидеть, как это делается, так как я не видел этого нигде, и я устал без удачи.
Наконец-то я понял, как это делается
вот код, если кто-то захочет нарисовать V-линию, используя только время/дату
Наконец-то я понял, как это делается
Вот код, если кто-то захочет нарисовать V-линию, используя только время/дату
Если вы посмотрите мои предыдущие сообщения, то увидите, что я пытался удалить секунды, но это не сработало, однако после преобразования код заработал, не знаю, что было не так,
Мне нравится ваша версия кода, она проста, элегантна и хорошо работает, спасибо.