//+------------------------------------------------------------------+//| 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-Line을 생성하는 데 사용한 것과 동일한 방법이지만 문제는 시프트를 모르고현재 시간/막대 를 참조하지 않고 V-Line을 생성하는 것입니다. , 문제는 시간/날짜 만 아는 V-Line을 만드는 것입니다.
VPS가 다시 시작될 때와 주말에 다른 시간에 때때로 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...
도움을 주신 Marco에게 감사합니다. 어떤 이유로 작동합니다.
D' 형식으로 시간을 구성한 다음 해당 정보를 경고로 표시했지만 화살표 시간과 일치하는 것을 볼 수 있습니다.
V-Line은 여전히 현재 촛불에 생성됩니다 .. 스크린 샷 참조
이것은 내가 사용한 코드입니다
다음은 관련 주제입니다. https://www.mql5.com/en/forum/233876
나는 shift를 알고 있었기 때문에 차트에 이미 v-lines가 있습니다. 링크의 주제에서 shift를 사용하여 v-lines를 그렸습니다.
이전 게시물에서 VPS가 다시 시작될 때 또는 주말 동안 또는 때때로 MT4를 재부팅할 때 생성한 v-라인이 손실된다고 언급했습니다. 그래서 v-라인이 손실된 경우 나중에 다시 생성하기 위해 v-라인의 날짜를 저장합니다. .
MT4에는 텍스트 날짜에서 v-라인을 생성하는 기능이 없거나 아무도 아직 어떻게 완료되었는지 파악하지 못한 것 같습니다.
이전 게시물에서 VPS가 다시 시작될 때 또는 주말 동안 또는 때때로 MT4를 재부팅할 때 생성한 v-라인이 손실된다고 언급했습니다. 그래서 v-라인이 손실된 경우 나중에 다시 생성하기 위해 v-라인의 날짜를 저장합니다. .
날짜를 다음과 같이 저장한 경우:
여기에서 v-라인을 재생성하기 위해 TimeExit_SymSymbol에서 초 숫자를 분할할 필요가 없습니다. 작업은 ObjectCreate() 자체에 의해 수행됩니다. 왜냐하면 몇 초를 고려하지 않기 때문입니다.
다음과 같이 코드를 단순화할 수 있습니다.
글쎄, 나는 재빨리 스크립트를 시도했고 그것은 확실히 미래로 선을 그었다.
글쎄, 나는 재빨리 스크립트를 시도했고 그것은 확실히 미래로 선을 그었다.
친애하는 마르코,
현재 막대와 관련된 시프트를 사용하고 있습니다. 이는 제가 차트의 V-Line을 생성하는 데 사용한 것과 동일한 방법이지만 문제는 시프트를 모르고현재 시간/막대 를 참조하지 않고 V-Line을 생성하는 것입니다. , 문제는 시간/날짜 만 아는 V-Line을 만드는 것입니다.
VPS가 다시 시작될 때와 주말에 다른 시간에 때때로 v-라인을 잃기 때문에 내가 찾은 유일한 옵션은 차트에 있는 라인의 시간/날짜를 저장한 다음 다시 생성하여 저장하는 것입니다. 막대가 진행되고 주말 막대가 있기 때문에 교대는 도움이 되지 않습니다.
MT4( https://www.mql5.com/en/docs/objects/objectcreate )에 따르면 V-Line은 시간/날짜만 사용하여 생성할 수 있습니다. 어디든지 난 운이 없어 지쳤어
마침내 나는 그것이 어떻게 이루어 졌는지 알아 냈습니다.
누군가가 시간/날짜만을 사용하여 V-Line을 그리고 싶다면 코드가 있습니다.
마침내 나는 그것이 어떻게 이루어 졌는지 알아 냈습니다.
누군가가 시간/날짜만 사용하여 V-Line을 그리기를 원하는 경우 코드가 있습니다.
내 이전 게시물을 보면 초를 제거 하는 데 지쳤지만 작동하지 않았다는 것을 알 수 있습니다. 그러나 변환 후 코드가 작동하면 무엇이 잘못되었는지 확실하지 않습니다.
귀하의 코드 버전이 간단하고 우아하며 잘 작동합니다. 감사합니다.