¿Cómo puedo hacer que la salida de un gráfico sea en fuente monoespaciada? - página 6

 
Nikolai Semko:

En cambio, con MT4 el panorama es completamente diferente.
Mientras que en MT5 el trabajo de Comment y Canvas es casi el mismo, en MT4 Comment es 1000 veces más rápido. Llego a la conclusión de que en MT5 el comentario se implementa a través del BitMap interno, mientras que en MT4 funciona de manera diferente. La diferencia es impresionante. Creo que voy a mover esta pregunta al foro de bichos.

Explicación detallada aquí: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

El comentario en MT4 es esencialmente falso y no hace que el gráfico se redibuje.

 
Renat Fatkhullin:

Explicación detallada aquí: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

El comentario en MT4 es esencialmente falso y no hace que el gráfico se redibuje.


Y ahora a sacar conclusiones prácticas

1. Estaría bien sustituir la serie de funciones que afectan al rendimiento en las pruebas por sus homólogas #define

2. El 90% de las damas/personas presentes aquí están en definiciones como oinking en las naranjas.

4. Hay un monstruo definido en el foro fxsaber

5. ¿Tal vez pedirle que haga y mantenga una biblioteca de definiciones similares, para que los simples mortales no tengan que pensar en qué modo funciona el programa?

¿Qué opina la comunidad y fxsaber sobre esta sugerencia?

 

Qué tienen que ver las definiciones si la gente no entiende la herramienta y está tratando de probar por velocidad lo que no se puede probar.

Llamar a un comentario para mirarlo es normal.

Llamarlo 1000-10000 veces por segundo es anormal, tanto desde el punto de vista lógico (no se puede mirar) como desde el punto de vista tecnológico, ya que provoca altos costes al no mostrar/redibujar todo el gráfico (no sólo su línea).

Tienes que entender lo que estás haciendo. Que es lo que escribí en detalle en mi respuesta.

 
Renat Fatkhullin:

Qué tienen que ver las definiciones si la gente no entiende la herramienta y está tratando de probar por velocidad lo que no se puede probar.

Llamar a un comentario para mirarlo es normal.

Llamarlo 1000-10000 veces por segundo es anormal, tanto desde el punto de vista lógico (no se puede mirar) como desde el punto de vista tecnológico, ya que provoca altos costes al no mostrar/redibujar todo el gráfico (no sólo su línea).

Tienes que entender lo que estás haciendo. Que es lo que escribí en detalle en mi respuesta.

Y en lugar de eso sugieres "dame un trozo de código para seguir pensando", ignorando las explicaciones de por qué está mal hacerlo así.

Renat, tengo un EA que funciona aquí. Soy un tonto y no sé nada de estos dibujos. Funciona y es genial. Lo someto a prueba y veo la degradación del rendimiento debido a los problemas que he descrito.

¿No tendría sentido hacer una definición que determine en qué modo estamos trabajando? ¿Y en el modo de prueba/optimización no sale nada?

 
Alexey Volchanskiy:

Renat, tengo un EA que funciona aquí. Soy un pringado y no tengo ni idea de estos dibujos. Funciona y es genial. Lo estoy probando y veo una disminución del rendimiento debido a los problemas que he descrito.

¿No tendría sentido hacer una definición que determine en qué modo estamos trabajando? ¿Y en el modo de prueba/optimización no sale nada?


No esperes que la gente lo entienda todo así. Dios no permita que el 20% de la gente de este foro entienda la OOP. Se puede comparar con el conocimiento de un coche. Todos los conducen, pero muy pocos entienden cómo funciona el mismo motor de combustión interna y una fracción del % puede arreglar algo.

Pero todos son sus clientes).

 
Alexey Volchanskiy:

Renat, tengo un EA que funciona aquí. Soy un pringado y no sé nada de estos dibujos. Funciona y es genial. Lo estoy probando y veo una disminución del rendimiento debido a los problemas que he descrito.

¿No tendría sentido hacer una definición que determine en qué modo estamos trabajando? ¿Y en el modo de prueba/optimización no sale nada?

¿Y cuál es el problema para pensar y mejorar drásticamente todo?

Ya hay alguna librería MQL4-MQL5 en modo "funciona y es genial", por eso hay que rasgarse las vestiduras. La gente lo utiliza seriamente para comparar la velocidad de ambas plataformas.

Y ahora se ofrece, no para pensar, sino para hacer otro producto artesanal que se llevará por ahí diciendo que "la MT5 es más lenta".

 
Renat Fatkhullin:

Ya hay una biblioteca MQL4-MQL5 en modo "funciona y es genial", que hace que te rasgues las vestiduras. La gente lo utiliza seriamente para comparar la velocidad de ambas plataformas.

Esta afirmación no está bien razonada.

 
Alexey Volchanskiy:

¿No es lógico hacer una definición que determine en qué modo estamos trabajando? ¿Y en el modo de prueba/optimización no sale nada?

Existe una herramienta universal que permite medir el rendimiento del código en el probador con una línea. Podemos ver muchas cosas allí. En particular, que una sola ejecución es más lenta que una ejecución de optimización.

Sobre el tema del comentario, los promotores dieron su respuesta. Hasta ahora, yo mismo acelero la optimización en 1,5-2 veces por una línea.

Y la SD me habló de un matiz importante para el rendimiento.


Preocuparse por los microsegundos de ejecución de las funciones es razonable sólo en los modos de optimización. En tiempo real, no hay diferencia. Y el comentario no tiene ningún impacto en el rendimiento del Asesor Experto en tiempo real, aunque sea un orden de magnitud más lento.


Pero es un hecho que casi nadie escribe EAs de tal manera que se ejecuten lo más rápido posible en el probador.

 
Renat Fatkhullin:

Qué tienen que ver las definiciones si la gente no entiende la herramienta y está tratando de probar algo que no puede ser probado por la velocidad.

Renat Fatkhullin:

Ya hay una librería MQL4-MQL5 en modo "funciona y es genial" que hace que te rasgues las vestiduras. La gente lo utiliza seriamente para comparar la velocidad de ambas plataformas.


Y personalmente no me da pena el trabajo realizado. Estospuntos de referencia aparentemente inútiles resultaronno serlo en absoluto.Muchas cosas útiles salieron a la luz gracias a su detallada explicación, y como resultado algunos rompecabezas comenzaron a encajar. No está escrito en ningún otro sitio, así que tengo que sacarlo con pinzas :)).

Por ejemplo, aunque me avergüenza confesarlo, no sabía que la función Update() de Kanvas redibuja toda la ventana independientemente de su tamaño. Pero para entenderlo, sólo tenía que mirar las tripas de CCanvas. Y saber al menos este hecho cambiará la lógica del trabajo y me ahorrará gestos innecesarios en algunas implementaciones relacionadas con los gráficos. Y el comentario no tuvo nada que ver, fue un "sólo para llegar al fondo". Gracias de nuevo.

Lo que no queda claro es que mientras la función Update(false) en MT5 no dibuja nada en la pantalla, la función de MT4 no dibuja toda la ventana, sino sólo el lienzo, lo que significa que la función ResourceCreate en MT5 no dibuja una matriz de píxeles sin ChartRedraw() pero sí lo hace en MT4. Creo que también sería útil en MT5.

 
Nikolai Semko:

ResourceCreate en MT5 no muestra una matriz de píxeles sin ChartRedraw(), pero lo hace en MT4.

Y lo hace correctamente. Es tan lógico como no hacer ChartRedraw después de cambiar las propiedades del objeto. Utilizando la terminología de

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Errores, fallos, preguntas

Renat Fatkhullin, 2017.12.05 02:51

  • MT5 tiene un sistema más correcto de cambio de objetos en el gráfico y hay que entender claramente las consecuencias de mezclar comandos de lectura/escritura
    se recomienda no mezclar los comandos de lectura/escritura, sino hacer una lectura y una escritura masiva por separado.

ChartRedraw debe ser llamado después de la escritura masiva, no después de cada escritura.