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

 
Renat Fatkhullin:

¿Cuál es el problema de pensar en ello y mejorarlo drásticamente?

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

Y ahora se ofrece, no para pensar, sino para crear una nueva herramienta de vanguardia que se llevará a cabo diciendo "MT5 es más lento".


No entiendo nada. Sugiero, una vez más, si fxsaber tiene el tiempo y el deseo:

1. Hacer una biblioteca para MT5 (opcional para MT4), que desactive las funciones innecesarias (por ahora, los gráficos) en el modo probador/optimizador

2. Para ello, envuelva estas costosas funciones en defines y, dependiendo del modo de funcionamiento, habilítelas o deshabilítelas

No hay necesidad de ser tan emocional al respecto, nadie está atacando a MT5.

 
fxsaber:

Existe una herramienta universal que permite medir el rendimiento del código en el probador con una línea. Conseguimos 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 sola 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.

Por favor, escriba una FAQ sobre cómo conseguirlo. Por favor, tenga todos sus pensamientos en un solo lugar. Los pondremos en tu blog, en otros sitios, puede que haga un videoclip en youtube y lo ponga en el canal MQ. Sin duda tienes una gran experiencia en este tipo de cosas sistémicas, ¡compartámosla por el bien común!
 
Alexey Volchanskiy:
Por favor, escriba una FAQ sobre cómo conseguirlo. Que todos los pensamientos estén en un solo lugar.

Hay un hilo genial sólo para eso. Tal vez alguien dedique mucho tiempo y esfuerzo a recopilar una sección de preguntas frecuentes basada en los numerosos mensajes de este hilo.


Y para el rendimiento, siempre uso la misma receta - TesterBenchmark + profiler. Y, por supuesto, encontrar un equilibrio razonable entre las características del probador y el comercio real. Así es como se escribe MT4Orders. El programa está orientado al trabajo rápido en el probador y al trabajo ideal en la cuenta real. Para ello debemos entender que hay algunas comprobaciones (a veces costosas) en el mismo probador que no son necesarias para el comercio real. Esto supone un gran ahorro. Y el almacenamiento en caché del mismo historial, etc. Es decir, es necesario escribir bibliotecas que a veces tienen en sus entrañas lógicas diferentes para el probador y el real. Trade.mqh, por desgracia, no es una biblioteca de este tipo.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2017.02.24
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
fxsaber:

Hay un hilo genial sólo para eso. Tal vez alguien dedique mucho tiempo y esfuerzo a recopilar una sección de preguntas frecuentes basada en los numerosos mensajes de este hilo.


Y para el rendimiento, siempre uso la misma receta - TesterBenchmark + profiler. Y, por supuesto, encontrar un equilibrio razonable entre las características del probador y el comercio real. Así es como se escribe MT4Orders. El programa está orientado al trabajo rápido en el probador y al trabajo ideal en la cuenta real. Para ello debemos entender que hay algunas comprobaciones (a veces costosas) en el mismo probador que no son necesarias para el comercio real. Esto supone un gran ahorro. Y el almacenamiento en caché del mismo historial, etc. Es decir, es necesario escribir bibliotecas que a veces tienen en sus entrañas lógicas diferentes para el probador y el real. Trade.mqh, por desgracia, no es una biblioteca de este tipo.

A eso es a lo que quería llegar en mis posts anteriores. Hacer un FAQ en la rama anterior es la tarea a lo sumo. Tomemos la humilde tarea de hacer un FAQ sobre la aceleración de la optimización. Sólo tienes que escribir tus pensamientos, si hay algún código, añádelo. Intentaré resumirlo, repasarlo y luego nos pondremos de acuerdo y lo publicaremos. Haré el clip, tengo mucha experiencia, no hay problema.
 
Alexey Volchanskiy:
Tomemos una tarea modesta: hacer un FAQ sobre la aceleración de la optimización.

El altruismo es a veces algo bueno. Pero el tiempo no me pertenece, pertenece a la Familia.

Se comparten códigos y recetas humildes. Esto parece suficiente.

No poseo ningún secreto.

 
fxsaber:

Y lo hace correctamente. Tiene tanto sentido como no hacer un ChartRedraw después de cambiar las propiedades de un objeto. Para utilizar la terminología

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

Sí, pero si tengo un lienzo pequeño, digamos 130x80 píxeles, que es menos del 1% del total de la ventana y necesito dar salida a la información actual en él. Así que en MT4 puedo hacerlo sin redibujar toda la pantalla con Update(false), pero en MT5 tengo que redibujar toda la pantalla cada vez. Y es un par de órdenes de magnitud más intensivo en recursos. Y esto no es una prueba, sino un tema de trabajo.
 
Nikolai Semko:
Sí, pero si tengo un lienzo pequeño, digamos 130x80 píxeles, que es menos del 1% de la ventana total, y necesito mostrar información actual en él. Así que en MT4 puedo hacerlo sin redibujar toda la pantalla con Update(false), pero en MT5 tengo que redibujar toda la pantalla cada vez. Y es un par de órdenes de magnitud más intensivo en recursos. Y esto no es una prueba, sino un tema de trabajo.

Estoy seguro de que la pantalla nunca se redibuja parcialmente al realizar un kanvas o cualquier otra acción.

 
fxsaber:

El altruismo es a veces algo bueno. Pero el tiempo no me pertenece, pertenece a la Familia.

Se comparten códigos y recetas humildes. Esto parece suficiente.

No tengo ningún secreto.


¡La modestia es genial! Yo también soy una persona modesta. El altruismo es para la difunta Madre Teresa en la mayoría de los casos. Aunque, a veces, las raíces de esta mala enfermedad -el altruismo- también brotan en mí )))

 
fxsaber:

Estoy seguro de que la pantalla nunca se redibuja parcialmente al realizar un kanvas o cualquier otra acción.


Sí, me equivoqué. Me equivoqué al decir queResourceCreate sin ChartRedraw en MT4 redibuja el lienzo cada vez. Lo hace sólo de vez en cuando, mientras que MT5 no lo hace en absoluto.

Sí, claro que soy tonto. A nivel de hardware, el contexto de la pantalla no puede cambiar sólo una parte de la pantalla, sino toda la pantalla.
Lo entendí cuando introduje un pequeño retraso Sleep(10):

Archivos adjuntos: