Discusión sobre el artículo "Diagramas horizontales en los gráficos de MеtaTrader 5"

 

Artículo publicado Diagramas horizontales en los gráficos de MеtaTrader 5:

El desarrollador a veces se enfrenta a las tareas relacionadas con el dibujado de los diagramas horizontales en el gráfico del terminal, aunque eso no ocurre con frecuencia. ¿De qué tipo de tareas se trata? Se trata de los indicadores de distribución de los volúmenes para un determinado período. Además, son las tares de distribución del precio, diferentes versiones de la profundidad del mercado (Market Depth), etc. En este artículo se consideran las cuestiones de la creación y gestión de los diagramas en los gráficos, como de los arrays de las primitivas gráficas.

  1. Puede haber varios diagramas (habitualmente, es así).
  2. La mayoría de los diagramas que nos interesan son columnas.
  3. Las columnas del histograma tienen la posición horizontal.

Es un ejemplo bastante bien conocido de este tipo de diagramas:



Aquí tenemos otro ejemplo. Los mismos diagramas dibujadas con otras primitivas gráficas.


En este caso, es un indicador de distribución de volúmenes de ticks por días. Este ejemplo muestra bien claro qué tipo de tareas tenía que realizar el desarrollador:

  • Crear varios objetos gráficos, atribuyéndoles los nombres únicos y colocándolos en el gráfico.
  • Escalar y desplazar los objetos si es necesario.
  • Eliminarlos del gráfico al finalizar el trabajo del indicador.

Vamos a recordar otra vez que hay varios diagramas, lo que en adelante nos dará la oportunidad de hablar de un array de diagramas.

Otro ejemplo clave:

Autor: Andrei Novichkov

 

¿Por qué se les ocurrió colocar el archivo include en el directorio con indicadores y no en la carpeta Include?

#include "HDiagsE.mqh"

¿y no en la carpeta Include?


Al descargar del sitio, el archivo incluido se abre en la carpeta Include - tuve que reemplazar la línea en el indicador de

#include "HDiagsE.mqh"

a

#include <HDiagsE.mqh>
 
Vladimir Karputov:

Para que los principiantes no se molestan con los directorios, pero acaba de lanzar todos los archivos en la carpeta con el indicador. Como se puede ver, el archivo no proporciona la estructura de las carpetas de desembalaje.

 
Alexey Kozitsyn:

Para que los principiantes no se molestan con los directorios, pero sólo tirar todos los archivos en la carpeta con el indicador. Como se puede ver, el archivo no proporciona la estructura de desempaquetar carpetas.

Así es como los principiantes quedarán atrapados en él. Por pasos: haga clic en el archivo incluido - se descarga y se muestra en la parte inferior del navegador - haga clic en el archivo descargado - el archivo se abre en MetaEditor (y MetaEditor ya ha colocado el archivo incluido en el directorio include correcto).

 
Vladimir Karputov:

Así es exactamente como los novatos se verán atrapados en esto. Por pasos: haga clic en el archivo incluido - se descarga y se muestra en la parte inferior del navegador - haga clic en el archivo descargado - el archivo se abre en MetaEditor (y MetaEditor ya ha colocado el archivo incluido en el directorio include correcto).

¿Realmente crees que de la forma en que tú descargas, todos los demás descargan? Yo, por ejemplo, descargué primero el archivo, luego abrí el archivo indicador y vi que el archivo include está entre comillas. Y el meta-editor no puso nada en ningún sitio.

En general, un diálogo inútil. Se puede hacer de las dos maneras, no es algo que haya que discutir.

 
En general, el artículo es bueno, sobre todo será útil para los principiantes, la idea se da a conocer más que claro, pero dio a conocer la importancia, por supuesto, para mí nada nuevo no se abrió, aunque mucho quería( tal hizo ... ¡Pero aún así gracias por el artículo!
 

Para ser honesto, me gustaría ver una aplicación diferente. Absolutamente todo:

1. No hay implementación de dibujar histogramas en el lienzo (respectivamente, no hay comparación de la velocidad de actualización de gráficos en el lienzo y gráficos a partir de primitivas gráficas). Aunque, lógicamente, si escribes sobre histogramas horizontales en gráficos MT5, al menos deberías apuntar a este método de dibujo;

2. ¿Por qué hablas sólo de volúmenes de ticks? A mí, por ejemplo, me gustaría mucho aplicar tu indicador para volúmenes reales, ¡pero parece que no puedo hacerlo!?

3. Según tengo entendido, todos los gráficos se construyen con la vinculación "precio/tiempo". No se menciona la vinculación de píxeles. Y la implementación de histogramas sobre esa base;

4. Hay una pregunta sobre esta frase: "Antes se mencionó de pasada que para calcular el número de niveles se utilizará un método mejor que simplemente dividir el intervalo de precios en un número determinado de niveles". ¿Por qué es mejor? 1, 10 и 100? Por qué no dejar que el propio usuario fije el número de niveles?

5. Sobre el temporizador:

  • El parámetro iTimer contiene la frecuencia de activación del temporizador. Cuando se dispara, se comprueba la creación de nuevas velas y se realizan las acciones necesarias. Podríamos poner aquí el resultado de la llamada PeriodSeconds(SourcePeriod). Sin embargo, el valor por defecto es de un segundo, lo que se hace para determinar con mayor precisión el momento en que aparecen nuevas velas.

¿Por qué iniciar un temporizador y gastar recursos adicionales para determinar el momento de aparición de una nueva vela? Puede (y debe) hacerse en OnCalculate(). Y sin llamar a la función IsNewCandle() cada segundo (además, es muy pesada);

6. Al desplazar el gráfico con el diagrama, salen artefactos:


7. No se menciona que todo esto funcionará en builds nuevos (posteriores a 1881) porque se usan nuevas funciones i;

8. El código no está comentado en absoluto - una falta de respeto total a aquellos que intentarán modificar tu código por sí mismos. Si usted acaba de abrir los archivos sin un artículo - que tomará mucho tiempo para entender todo;

9. Al compilar los archivos de indicadores - aparece una advertencia. Los usuarios pueden tener preguntas;

10. "No olvide que los indicadores adjuntos están destinados a la demostración, la formación y no se puede utilizar en el comercio real." - característica interesante. Al final. Por qué no se puede aplicar?

11. "En particular, se debe prestar atención al hecho de que no debe haber artefactos en el marco de tiempo utilizado como fuente de datos." - También me gustaría escuchar alguna aclaración sobre este punto. De qué "artefactos" estamos hablando;

12. Casi se me olvida lo más importante. ¿Cómo se garantiza la corrección de los datos recogidos? No se utiliza CopyTicks(). Entonces, ¿cómo se realiza la validación de la corrección de los niveles construidos?

Y esto, estoy seguro, no es toda la lista de problemas.

En general, en mi humilde opinión, es una implementación fallida para un artículo tutorial. Será difícil para los principiantes, mientras que los experimentados escribirán la suya propia más rápido (y mejor).

 

Intentaré responder a todas a la vez ))

Por supuesto, es poco probable que el artículo ofrezca algo fundamentalmente nuevo a los desarrolladores experimentados. El código propuesto, según mi leal saber y entender, automatiza un proceso muy tedioso de construcción de este tipo de diagramas. Decidí hacerlo después de cansarme de detectar todo tipo de errores con desbordamientos de rango, etc.

Podría haber puesto el archivo de inclusión en include, pero decidí no saturar esta carpeta, porque todo el mundo quiere poner archivos de inclusión allí).

En cuanto a canvas. No lo hice porque no puedo decir nada nuevo al respecto. He escrito un montón de artículos muy útiles sobre el dibujo sobre lienzo antes que yo. He llegado a la conclusión de que este aspecto ya ha sido suficientemente cubierto.

Se toman como ejemplo los volúmenes de ticks. Para el código es importante pasar un par de arrays y eso es todo. Por ejemplo, voy a utilizar este código para hacer un tumbler para una serie de crypto exchanges.

Por que no hay pixel binding. Eso es sólo el lado del lienzo de las cosas. Y por qué no hay lienzo, he respondido.

Por qué el código no está comentado. ERA comentado, pero para su uso en conjunción con Doxygen. Tuve que quitarlo. Y hubiera tenido que comentarlo en inglés, el código no se traduce automáticamente, y no se me da bien. Usar google no es la mejor opción, ¿qué va a traducir?

¿Por qué no se permite elegir el número de niveles? No es de lo que trata el artículo. Eso es lo que dice el artículo. El artículo trata sobre dibujar y gestionar arrays de primitivas gráficas, no sobre escribir indicadores. El desarrollador decidirá cómo obtener los datos iniciales. En el artículo considero esta tarea como secundaria y, por lo tanto, menos importante. Un indicador funcional que utilice este código estará pronto en el mercado, pero no aquí.

Los indicadores de entrenamiento no pueden aplicarse en el trading real porque dependen del estado de la fuente de datos. En los indicadores de entrenamiento, se supone que la fuente de datos está en perfectas condiciones. En la vida, esto no es así. En la vida hay agujeros en los plazos, y en ellos pensaba cuando escribí sobre los "artefactos". Nunca adjunto a mis artículos indicadores que puedan utilizarse para el trading real, porque lo considero incorrecto.

Aquí no utilizo CopyTick y lo considero innecesario. Tal vez tendría sentido dibujar un gráfico súper preciso en un lienzo, pero en este caso, cuando se utiliza un redondeo bastante serio, no es necesario.

 
Andrei Novichkov:

Intentaré responder a todas a la vez ))

Resulta que has escrito una "cosa abstracta" que funciona de forma aproximada, e incluso en un entorno que no existe en la práctica. No hay palabras.

Y el renderizado, como he señalado más arriba - torcido. Muy buenas relaciones públicas para sus productos.

 
Alexey Kozitsyn:

Así que escribiste una "cosa abstracta" que funciona de forma aproximada, e incluso en un entorno que no existe en la práctica. Me he quedado sin palabras.

Y el renderizado, como he señalado más arriba, está torcido. Muy buenas relaciones públicas para sus productos.

No, no funciona.

Y si no hay palabras, no necesitas escribir. Desde luego no sabes de lo que escribes.

 
Andrei Novichkov:

No, no funciona.

Y si no hay palabras, no tienes que escribir. Desde luego no entiendes del todo sobre lo que escribes.

Ese es el fin. A lo mejor no lo entiendo del todo, es que bajo un título tan grande me gustaría ver mucho más de lo que es. Buena suerte.