Gracias de nuevo, ahora la línea es como una línea, agradable de ver. Sólo se necesitaObjectDelete(0, nombre);; de lo contrario, una vez dibujada la línea no se vuelve a dibujar. Lo mismo en mql4, se me olvidó.
Qué tontería. El objeto gráfico dibujado se mueve suavemente. El ejemplo se da en la ayuda de cada objeto (para la línea horizontalOBJ_HLINE).
También puedes cambiar cualquier propiedad a un objeto ya dibujado: color, estilo, olor...
Se hace manualmente, no lo discuto. Pero el Asesor Experto traza líneas de tendencia por puntos DeMark. Con la función ObjectDelete(0, nombre);, cuando los puntos cambian, se elimina la antigua línea de tendencia y se dibuja una nueva. Sin esta función, las primeras líneas dibujadas ya no se redibujan. Esto no es una tontería, es un hecho.
Manualmente, no discuto. El Asesor Experto, en cambio, traza líneas de tendencia por puntos DeMark. Con la función ObjectDelete(0, nombre);, cuando los puntos cambian, se elimina la antigua línea de tendencia y se dibuja una nueva. Sin esta función, las primeras líneas dibujadas ya no se redibujan. Esto no es una tontería, es un hecho.
¡Lee la ayuda, por el amor de Dios! Y ejecuta el ejemplo.
He leído la referencia. Sólo tú estás indignado y yo escribo desde la práctica. Otra cosa es utilizar ChartRedraw() en lugar de ObjectDelet(), no lo discuto y lo comprobaré. Esto es lo único que hay que señalar refiriéndose al ejemplo.
He leído el informe. Sólo tú te indignas con las palabras y yo escribo desde la práctica. Otra cosa es usar ChartRedraw() en lugar de ObjectDelet(), no lo discuto y lo compruebo. Esto es lo único que hay que señalar refiriéndose al ejemplo.
La gente suele pedir consejo en este hilo y cuando lo recibe, lo escucha. Como mínimo, lee la ayuda y aplica los ejemplos. Por favor, si no quieres escuchar a los demás, no preguntes nada.
Un ejemplo de cómo se puede cambiar cualquier propiedad del objeto gráfico"Línea horizontal" sobre la marcha - no es necesario borrar el objeto para hacerlo, sólo hay que cambiar la propiedad.
Código:
//+------------------------------------------------------------------+//| OBJ_HLINE change properties on the fly.mq5 |//| Copyright 2021, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//--- input parametersinputstring InpName="HLine"; // Line name//--- an array for storing colors contains 14 elementscolor colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrWhiteSmoke,clrCyan,clrMediumPurple
};
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create timerEventSetTimer(1);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy timerEventKillTimer();
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//--- the number of colorsint size=ArraySize(colors);
//--- get a random valueint number=MathRand();
//--- get an index in the col[] array as a remainder of the integer devisionint i=number%size;
//--- set line colorObjectSetInteger(ChartID(),InpName,OBJPROP_COLOR,colors[i]);
ChartRedraw();
}
//+------------------------------------------------------------------+
Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Gracias, pero dejaré mi variante, funciona. Aunque lo probaré en lugar de ObjectDelete(0, nombre);.
Una decisión completamente equivocada. La eliminación de un objeto gráfico y la actualización de un gráfico no se sustituyen entre sí.
Mi ejemplo comprueba primero si hay un objeto, en concreto, una tendencia con el nombre tfyu, que es el nombre en la disposición del teclado ruso)). Entonces, si no existe, se dibuja la tendencia. Si el intento de dibujo no tiene éxito, se muestra el mensaje y se sale de la función con el retorno false.
Todo lo que viene después, independientemente de si la tendencia ya está presente o acaba de ser dibujada, se le asignan los parámetros especificados, los precios en tiempo y coordenadas, el tipo, el grosor y cualquier otra cosa que se pueda añadir. Después, el gráfico se actualiza y la función devuelve true.
En términos de velocidad de ejecución, será menos costoso comprobar la presencia de la tendencia que borrarla y dibujar una nueva.
Pero... la decisión final es tuya y si te gusta rascarte la oreja izquierda con el dedito derecho, no tengo derecho a impedírtelo.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Gracias de nuevo, ahora la línea es como una línea, agradable de ver. Sólo se necesitaObjectDelete(0, nombre);; de lo contrario, una vez dibujada la línea no se vuelve a dibujar. Lo mismo en mql4, se me olvidó.
Lo habría hecho
Qué tontería. El objeto gráfico dibujado se mueve suavemente. El ejemplo se da en la ayuda de cada objeto (para la línea horizontalOBJ_HLINE).
También puedes cambiar cualquier propiedad a un objeto ya dibujado: color, estilo, olor...Se hace manualmente, no lo discuto. Pero el Asesor Experto traza líneas de tendencia por puntos DeMark. Con la función ObjectDelete(0, nombre);, cuando los puntos cambian, se elimina la antigua línea de tendencia y se dibuja una nueva. Sin esta función, las primeras líneas dibujadas ya no se redibujan. Esto no es una tontería, es un hecho.
Manualmente, no discuto. El Asesor Experto, en cambio, traza líneas de tendencia por puntos DeMark. Con la función ObjectDelete(0, nombre);, cuando los puntos cambian, se elimina la antigua línea de tendencia y se dibuja una nueva. Sin esta función, las primeras líneas dibujadas ya no se redibujan. Esto no es una tontería, es un hecho.
¿Por qué no lees la ayuda? Y ejecuta el ejemplo.
Yo lo haría.
Gracias, pero dejaré mi variante, funciona. Aunque lo probaré en lugar de ObjectDelete(0, nombre);.
ChartRedraw();¡Lee la ayuda, por el amor de Dios! Y ejecuta el ejemplo.
He leído la referencia. Sólo tú estás indignado y yo escribo desde la práctica. Otra cosa es utilizar ChartRedraw() en lugar de ObjectDelet(), no lo discuto y lo comprobaré. Esto es lo único que hay que señalar refiriéndose al ejemplo.
He leído el informe. Sólo tú te indignas con las palabras y yo escribo desde la práctica. Otra cosa es usar ChartRedraw() en lugar de ObjectDelet(), no lo discuto y lo compruebo. Esto es lo único que hay que señalar refiriéndose al ejemplo.
La gente suele pedir consejo en este hilo y cuando lo recibe, lo escucha. Como mínimo, lee la ayuda y aplica los ejemplos. Por favor, si no quieres escuchar a los demás, no preguntes nada.
Un ejemplo de cómo se puede cambiar cualquier propiedad del objeto gráfico"Línea horizontal" sobre la marcha - no es necesario borrar el objeto para hacerlo, sólo hay que cambiar la propiedad.
Código:
Gracias, pero dejaré mi variante, funciona. Aunque lo probaré en lugar de ObjectDelete(0, nombre);.
Una decisión completamente equivocada. La eliminación de un objeto gráfico y la actualización de un gráfico no se sustituyen entre sí.
Mi ejemplo comprueba primero si hay un objeto, en concreto, una tendencia con el nombre tfyu, que es el nombre en la disposición del teclado ruso)). Entonces, si no existe, se dibuja la tendencia. Si el intento de dibujo no tiene éxito, se muestra el mensaje y se sale de la función con el retorno false.
Todo lo que viene después, independientemente de si la tendencia ya está presente o acaba de ser dibujada, se le asignan los parámetros especificados, los precios en tiempo y coordenadas, el tipo, el grosor y cualquier otra cosa que se pueda añadir. Después, el gráfico se actualiza y la función devuelve true.
En términos de velocidad de ejecución, será menos costoso comprobar la presencia de la tendencia que borrarla y dibujar una nueva.
Pero... la decisión final es tuya y si te gusta rascarte la oreja izquierda con el dedito derecho, no tengo derecho a impedírtelo.
Y volvemos a dibujar la línea de tendencia. Si necesitas un código.
Un código muy malo.
Yo haría esto.
Yo habría hecho esto: