Muchas gracias Marco por la ayuda, por alguna razón está funcionando
He configurado el tiempo en el formato D', a continuación, muestra que la información como una alerta, que se puede ver coincide con los tiempos de flecha sin embargo
la línea V se sigue creando en la vela actual .. ver captura de pantalla
Este es el código que he utilizado
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);
Ya tengo las v-líneas en el gráfico desde que conocí el desplazamiento , en el tema en el enlace dibujaron las v-líneas usando el desplazamiento
En mis posts anteriores mencioné que perdía las v-lines que creaba cuando el VPS se reiniciaba o durante los fines de semana o a veces al reiniciar MT4 , por lo que guardaba las fechas de las v-lines para intentar volver a crearlas más tarde si se perdían.
Parece que MT4 no tiene la capacidad de crear v-lines a partir de fechas de texto o nadie ha descubierto cómo se hace todavía
En mis posts anteriores he mencionado que pierdo las líneas v que he creado cuando el VPS se reinicia o durante los fines de semana o a veces cuando se reinicia MT4 , por lo que guardo las fechas de las líneas v para intentar volver a crearlas más tarde si se han perdido.
Aquí para recrear las v-lines no necesitas dividir los dígitos de los segundos delTimeExit_SymSymbol ..el trabajo lo hace el propioObjectCreate(),porque no tiene en cuenta los segundos.
Puedes simplificar tus códigos de la siguiente manera:
Bueno, rápidamente probé un script y eso ciertamente dibuja la línea hacia el 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);
}
//+------------------------------------------------------------------+
Bueno, rápidamente probé un script y eso ciertamente dibuja la línea hacia el futuro.
Estimado Marco,
Estás utilizando el desplazamiento correspondiente a la barra actual, que es el mismo método que he utilizado para crear las V-Lines para mis gráficos , sin embargo el problema es crear la V-Line sin conocer el desplazamiento y sin hacer referencia a la hora/barra actual, el problema es crear las V-Lines conociendo la hora/fecha SOLO
Ya que pierdo las v-lines a veces cuando el VPS se reinicia y otras veces durante el fin de semana, es por eso que la única opción que encontré es guardar la hora/fecha de las líneas en el gráfico y luego tratar de volver a crearlas, guardar el turno no ayuda mucho ya que las barras progresan y además están las barras del fin de semana .
según el MT4 (https://www.mql5.com/en/docs/objects/objectcreate) la V-Line se puede crear usando solo la hora/fecha .. me gustaría ver como se hace ya que no lo he visto en ningún sitio y me he cansado sin suerte
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...
aquí está el código por si alguien quiere dibujar una línea V usando sólo la hora/fecha
// 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]);
Tome la estructura y conviértala en una cadena (sin los segundos).
Toma la cadena y conviértela de nuevo en la fecha original (sin los segundos).
Si todo lo que querías era eliminar los segundos, así es como se hace:
Si miras mis posts anteriores verás que intenté quitar los segundos, pero no funcionó, sin embargo después de la conversión el código funcionó no estoy seguro de lo que estaba mal,
Me gusta su versión del código es simple, elegante y funciona bien, gracias
Es la primera vez que utilizo artículos gráficos en un puntero. Necesitaría dibujar una línea vertical ordinaria en el tiempo "22:00", ¿podría por favor dirigirme a una respuesta?
Muchas gracias Marco por la ayuda, por alguna razón está funcionando
He configurado el tiempo en el formato D', a continuación, muestra que la información como una alerta, que se puede ver coincide con los tiempos de flecha sin embargo
la línea V se sigue creando en la vela actual .. ver captura de pantalla
Este es el código que he utilizado
Aquí hay un tema relacionado:https://www.mql5.com/en/forum/233876
Ya tengo las v-líneas en el gráfico desde que conocí el desplazamiento , en el tema en el enlace dibujaron las v-líneas usando el desplazamiento
En mis posts anteriores mencioné que perdía las v-lines que creaba cuando el VPS se reiniciaba o durante los fines de semana o a veces al reiniciar MT4 , por lo que guardaba las fechas de las v-lines para intentar volver a crearlas más tarde si se perdían.
Parece que MT4 no tiene la capacidad de crear v-lines a partir de fechas de texto o nadie ha descubierto cómo se hace todavía
En mis posts anteriores he mencionado que pierdo las líneas v que he creado cuando el VPS se reinicia o durante los fines de semana o a veces cuando se reinicia MT4 , por lo que guardo las fechas de las líneas v para intentar volver a crearlas más tarde si se han perdido.
Si ha guardado las fechas como :
Aquí para recrear las v-lines no necesitas dividir los dígitos de los segundos delTimeExit_SymSymbol ..el trabajo lo hace el propioObjectCreate(),porque no tiene en cuenta los segundos.
Puedes simplificar tus códigos de la siguiente manera:
Bueno, rápidamente probé un script y eso ciertamente dibuja la línea hacia el futuro.
Bueno, rápidamente probé un script y eso ciertamente dibuja la línea hacia el futuro.
Estimado Marco,
Estás utilizando el desplazamiento correspondiente a la barra actual, que es el mismo método que he utilizado para crear las V-Lines para mis gráficos , sin embargo el problema es crear la V-Line sin conocer el desplazamiento y sin hacer referencia a la hora/barra actual, el problema es crear las V-Lines conociendo la hora/fecha SOLO
Ya que pierdo las v-lines a veces cuando el VPS se reinicia y otras veces durante el fin de semana, es por eso que la única opción que encontré es guardar la hora/fecha de las líneas en el gráfico y luego tratar de volver a crearlas, guardar el turno no ayuda mucho ya que las barras progresan y además están las barras del fin de semana .
según el MT4 (https://www.mql5.com/en/docs/objects/objectcreate) la V-Line se puede crear usando solo la hora/fecha .. me gustaría ver como se hace ya que no lo he visto en ningún sitio y me he cansado sin suerte
Por fin he descubierto cómo se hace
aquí está el código por si alguien quiere dibujar una línea V usando sólo la hora/fecha
Finalmente he descubierto cómo se hace
Este es el código por si alguien quiere dibujar una línea V usando sólo la hora/fecha
Si miras mis posts anteriores verás que intenté quitar los segundos, pero no funcionó, sin embargo después de la conversión el código funcionó no estoy seguro de lo que estaba mal,
Me gusta su versión del código es simple, elegante y funciona bien, gracias