Já tenho linhas v na tabela desde que conheci o turno, no tópico no link eles desenharam as linhas v usando o turno.
Em meus cargos anteriores mencionei que perdi as linhas v que criei quando o VPS reiniciou ou durante os fins de semana ou às vezes ao reiniciar o MT4 , então guardo as datas das linhas v na tentativa de recriá-las mais tarde se elas fossem perdidas.
Parece que o MT4 não tem a capacidade de criar linhas v a partir de datas de texto ou ninguém descobriu como foi feito ainda.
Em meus cargos anteriores mencionei que perdi as linhas v que criei quando o VPS reiniciou ou durante os fins de semana ou às vezes ao reiniciar o MT4 , então guardo as datas das linhas v na tentativa de recriá-las mais tarde se elas fossem perdidas.
Aqui para recriar as linhas v você não precisa dividir os dígitos de segundos doTimeExit_SymSymbol ...o trabalho é feito pelo próprioObjectCreate(), porque não leva segundos em conta.
Bem, eu tentei rapidamente um roteiro e isso certamente atrai a linha para o futuro.
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Bem, eu tentei rapidamente um roteiro e isso certamente atrai a linha para o futuro.
Caro Marco,
Você está usando o turno relevante para a barra atual, que é o mesmo método que usei para criar as Linhas V para meus gráficos, entretanto o problema é criar a Linha V sem saber o turno e sem se referir à hora/barra atual, o problema é criar as Linhas V sabendo APENAS a hora/data
Como às vezes perco as linhas v quando o VPS reinicia e outras vezes durante o fim de semana, é por isso que a única opção que encontrei foi salvar o tempo/data das linhas no gráfico e depois tentar recriá-las novamente, salvar o turno não vai ajudar muito à medida que as barras progridem e também há as barras de fim de semana.
De acordo com o MT4 (https://www.mql5.com/en/docs/objects/objectcreate) a Linha V pode ser criada usando apenas a hora/data ... Gostaria de ver como ela é feita, pois não a vi em lugar algum e me cansei sem sorte.
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...
aqui está o código se alguém quisesse desenhar a Linha V usando apenas a hora/data
// 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]);
Pegue a estrutura e converta-a de forma a ter um fio (sem os segundos.)
Pegue a corda e converta-a de volta para a data original (sem os segundos.)
Se tudo o que você queria era remover os segundos, é assim que isso é feito:
Se você olhar para meus posts anteriores, verá que eu me cansei de remover os segundos, mas não funcionou, entretanto, após a conversão o código não funcionou com certeza do que estava errado,
Gosto de sua versão do código que é simples, elegante e funciona bem, obrigado
Esta é minha primeira vez utilizando artigos gráficos em um ponteiro. Eu precisaria traçar uma linha vertical normalmente, enquanto isso "22:00", você poderia, por favor, me direcionar para uma resposta?
Muito obrigado Marco pela ajuda, por alguma razão seu trabalho
Configurei a hora no formato D' , depois exibi essa informação como um alerta , que no entanto você pode ver que corresponde aos tempos das setas
a Linha V ainda é criada na vela atual ... ver foto da tela
Este é o código que eu usei
Aqui está um tópico relacionado:https://www.mql5.com/en/forum/233876
Já tenho linhas v na tabela desde que conheci o turno, no tópico no link eles desenharam as linhas v usando o turno.
Em meus cargos anteriores mencionei que perdi as linhas v que criei quando o VPS reiniciou ou durante os fins de semana ou às vezes ao reiniciar o MT4 , então guardo as datas das linhas v na tentativa de recriá-las mais tarde se elas fossem perdidas.
Parece que o MT4 não tem a capacidade de criar linhas v a partir de datas de texto ou ninguém descobriu como foi feito ainda.
Em meus cargos anteriores mencionei que perdi as linhas v que criei quando o VPS reiniciou ou durante os fins de semana ou às vezes ao reiniciar o MT4 , então guardo as datas das linhas v na tentativa de recriá-las mais tarde se elas fossem perdidas.
Se você salvou as datas como :
Aqui para recriar as linhas v você não precisa dividir os dígitos de segundos doTimeExit_SymSymbol ...o trabalho é feito pelo próprioObjectCreate(), porque não leva segundos em conta.
Você pode simplificar seus códigos por:
Bem, eu tentei rapidamente um roteiro e isso certamente atrai a linha para o futuro.
Bem, eu tentei rapidamente um roteiro e isso certamente atrai a linha para o futuro.
Caro Marco,
Você está usando o turno relevante para a barra atual, que é o mesmo método que usei para criar as Linhas V para meus gráficos, entretanto o problema é criar a Linha V sem saber o turno e sem se referir à hora/barra atual, o problema é criar as Linhas V sabendo APENAS a hora/data
Como às vezes perco as linhas v quando o VPS reinicia e outras vezes durante o fim de semana, é por isso que a única opção que encontrei foi salvar o tempo/data das linhas no gráfico e depois tentar recriá-las novamente, salvar o turno não vai ajudar muito à medida que as barras progridem e também há as barras de fim de semana.
De acordo com o MT4 (https://www.mql5.com/en/docs/objects/objectcreate) a Linha V pode ser criada usando apenas a hora/data ... Gostaria de ver como ela é feita, pois não a vi em lugar algum e me cansei sem sorte.
Finalmente descobri como é feito
aqui está o código se alguém quisesse desenhar a Linha V usando apenas a hora/data
Finalmente descobri como é feito
aqui está o código se alguém quisesse desenhar a Linha V usando apenas a hora/data
Se você olhar para meus posts anteriores, verá que eu me cansei de remover os segundos, mas não funcionou, entretanto, após a conversão o código não funcionou com certeza do que estava errado,
Gosto de sua versão do código que é simples, elegante e funciona bem, obrigado