Indicador, Necesita asesoramiento sobre el autocontrol de la DISTANCIA entre textos (MT-4)

 

¡Hola queridos programadores!
Por favor, den su consejo:

Hacemos un Asesor Experto en la forma de un indicador! Su tarea - para buscar un patrón en el gráfico, y sobre las barras para escribir el texto (de varias líneas (!), tales como

línea #1 "nombre de la señal"
línea #2 "% de probabilidad"
línea #3 "icono" (flecha)

El problema es que SI se establece una distancia FIJA entre líneas = por ejemplo 25 pips, todo está bien en m5 ... pero en H1 = las líneas se separan demasiado (este es el problema con el texto fijo (!!!)


Por favor, aconsejar - ¿Cómo podemos hacer "cálculo automático" de la distancia entre líneas cuando el TF cambia o la "altura" del gráfico cuando el gráfico se desplaza ligeramente a la izquierda, o por la altura (????!!!)

..... sólo se me ocurre una cosa:

1) "obtener" la altura actual del gráfico (precio mínimo y máximo) :


2) Precio máximo - Precio mínimo = "altura del gráfico en pips" y siempre lo tomamos como el 100%.

3) en lugar de "distancia fija entre las líneas (25 pips) - especificar la distancia en Porcentaje (por ejemplo, 2% de la altura del gráfico desde el punto 2))


..... habló con un programador - dice == NO MOVER OBJETOS ... bueno, no se puede ....... después de voltear el gráfico == reposicionar el texto de varias líneas para que no se superpongan unas a otras == hay que borrar todo el texto después de voltear el gráfico == borrar todo el texto, y reescribirlo de nuevo, teniendo en cuenta la nueva elevación del gráfico (punto 2) (!)


..... entonces sigo reflexionando == OK, ¿y si = hago el dibujo SOLO en la GUIA DE PANTALLA?

Dice = ok, se escribirán NUEVAS señales Correcto, pero las que quedan = = O vuelven a encajar unas encima de otras, o viceversa = se estiran aún más (arriba y abajo unas de otras) porque "no se pueden mover los objetos ya dibujados, sino que basta con borrarlos, y volver a dibujarlos (!)


Pregunta para usted = ¿Alguien se ha encontrado ya con un ??????? cómo ha resuelto este problema? )))
(para que en cualquier escala y altura del gráfico = el texto multilínea vuelva a tener un interlineado normal (si se mide con una regla visualmente == 3mm a ojo ) ... es decir, el interlineado debe ser DINÁMICO) ????? )))))))))

Simplemente no quiero hacer toda la inscripción en UNA línea, y en un ángulo de 45° (!) , porque es visualmente más conveniente hacer el texto HORIZONTAL, y en 2-3 líneas :)

Por favor, aconsejen (compartan sus experiencias)


Gracias )).

 
Vitaliy Kostrubko:


Estudia este breve código y puede que te ayude. Todo se implementa en Canvas.

Lo bueno de Canvas es que para MT4 y MT5 el código será casi el mismo.

Archivos adjuntos:
 
Vitaliy Kostrubko:

¡Hola, queridos programadores!
Por favor, dé su mejor consejo:

...


Gracias ))

Dibuja en el lienzo:

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
  • www.mql5.com
Стандартная библиотека / Пользовательская графика / CCanvas - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Oops... Nikolai se me adelantó...
 

Estás pensando correctamente.

//подсчитывает количество пунктов цены в одном пикселе
double GetPointsInPixel(long eChartId, int eWindow)
   {
   double eMin=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MIN,eWindow,eMin);
   if(eMin==EMPTY_VALUE) return(0);
   double eMax=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MAX,eWindow,eMax);
   if(eMax==EMPTY_VALUE) return(0);
   long ePixels=-1;
   ChartGetInteger(eChartId,CHART_HEIGHT_IN_PIXELS,eWindow,ePixels);
   if(ePixels<=0) return(0);
   return(double(eMax-eMin)/ePixels);
   }

double eIndent=GetPointsInPixel(eChartId,eWindow);

A continuación, añada o reste este valor al precio requerido, cuando los eventos cambien:

-cambio de plazo,

-Aumento/disminución de un gráfico,

-reducción de la escala de precios.

 
Nikolai Semko:

Estudia este breve código y puede que te ayude. Todo se implementa en Canvas.

Lo bueno de Canvas es que para MT4 y MT5 el código será casi el mismo.

Bien, gracias )

 
Artyom Trishkin:
Oops... Nikolai se me adelantó...

... ))))))Lo principal es que los pensamientos son los mismos ))))
Gracias )))))

 
Aleksei Stepanenko:

Estás pensando correctamente.

double eIndent=GetPointsInPixel(eChartId,eWindow);

A continuación, añada o reste este valor al precio requerido, cuando los eventos cambien:

-cambio de plazo,

-Aumento/disminución de un gráfico,

-reducción/rebaja de la escala de precios.

Gracias ))))))))

 

Vitaliy Kostrubko:

Aleksei Stepanenko:

Estás pensando correctamente.

double eIndent=GetPointsInPixel(eChartId,eWindow);

A continuación, añada o reste este valor al precio requerido, cuando los eventos cambien:

-cambio de plazo,

-Aumento/disminución de un gráfico,

-reducción/rebaja de la escala de precios.

Gracias ))))))))

Y dile a ese lamentable asesor que tiene que empezar a aprender el idioma, no los ejemplos de ****coders.

 
Alexey Viktorov:

Y dile a ese lamentable asesor que tiene que empezar a aprender el idioma, no los ejemplos de ****coders.

Copiar )))))
... El tiempo demuestra, que incluso 10 años de experiencia en programación con una variedad de EAs (diferentes niveles de complejidad) == no es suficiente para conocer todo el campo de la codificación)
porque durante estos 10 años puedes convertirte en un superprofesional en 2/3 de lenguaje de programación... y no se sabe 1/3 del mismo))
así que no hay que ofenderse)) pero depende de ti dominar esta 1/3 parte == es una cuestión individual)).

.... sólo le interesan más los "ALGORITMOS astutos que aportan beneficios... y escribir "caricaturas" no es su interés ...

Pero tu ejemplo se lo enseñaré seguro)).
Gracias ))))

 
Vitaliy Kostrubko:

Tómalo )))))
... El tiempo demuestra que incluso 10 años de experiencia en programación con los más diversos EAs (diferentes niveles de complejidad) == no es suficiente para conocer el área de codificación TOTAL)
porque durante estos 10 años puedes convertirte en un superprofesional en 2/3 de lenguaje de programación... y no se sabe 1/3 del mismo))
así que no hay que ofenderse)) pero depende de ti dominar esta 1/3 parte == es una cuestión individual)).

.... sólo le interesan más los "ALGORITMOS astutos que aportan beneficios... y los "dibujos animados" no son de su interés ...

Pero tu ejemplo se lo enseñaré seguro )).
Gracias ))))

No tienes que referirte a mí. Esa opción, aunque la utilicé, no la expresé. Sólo apoyaba a mi tocayo en su opinión.

Y si un "programador" habla de la imposibilidad de mover un objeto gráfico, no es un programador en absoluto y ni siquiera una parodia de programador, sino simplemente ****coder.