Discusión sobre el artículo "¡Visualice esto! La biblioteca gráfica en MQL5 como un análogo de plot en el lenguaje R" - página 6

 
Nikolai Semko #:
En realidad uso varios lienzos ( normalmente no más de 4 )
Siempre hay un término medio. Un extremo es pintar toda la estática y toda la dinámica en un lienzo, el otro extremo es pintar todos los objetos en lienzos separados.
Es importante no olvidar que si usted tiene dos lienzos con la transparencia se superponen entre sí, la CPU, ( tal vez en Win10-11 GPU, pero creo que todavía CPU), se mezclan todos los píxeles de incluso homogénea (transparencia no cero) de fondo.
Aquí podemos tomar prestado de JS la práctica de almacenar en caché el lienzo o una parte de ella para mejorar el rendimiento.
En cuanto a los círculos antialias, ya he publicado una variante de este tipo, que es ideal (en términos de rendimiento) para los círculos con radio inferior a ~ 5 píxeles. Creo que la función se llamaba iDot(), y estaba en el código de 3DStars. Es muy primitiva y corta (unas 10 líneas de código). Para círculos de radio más grande, está lejos de ser óptima en términos de rendimiento. Para radios mayores, la función de alto rendimiento ya supera las 100 líneas de código.
Sí, después de años de establecer nuevas conexiones neuronales en el cerebro sobre lienzo, ahora puedo hacer una biblioteca sobre lienzo a cualquier nivel. Habría tiempo y motivación.
El algoritmo Wu se considera obsoleto.

No pude encontrar una búsqueda de iDot() o 3DStars para ver el código.

Me refería a tener en cuenta todo lo que hay debajo del lienzo, incluyendo el propio gráfico (color de fondo) y el color de sus elementos (barras, líneas ask/bid, etc).

Al mover este lienzo con fondo transparente con elementos semitransparentes dibujados sobre él, todos los píxeles deberían dibujarse correctamente.

Este no es el caso ahora:


 
Nikolai Semko #:

Artem, en realidad no son tareas triviales que requieran nuevas conexiones neuronales. Por ejemplo, en SVG existe el concepto viewBox. Ya he visto un montón de vídeos sobre cómo funciona, leído un montón de documentación, escrito un montón de código, y todavía a veces me quedo perplejo. Todavía no tengo las conexiones neuronales necesarias, aunque varias veces parecía que lo había descifrado todo.

Bueno, seguimos creyendo en ti ;)
 

Foro sobre negociación, sistemas automatizados de negociación y prueba de estrategias de negociación

Discusión del artículo "¡Visualízalo! Biblioteca gráfica en MQL5 como análogo de R"

Anatoli Kazharski, 2023.07.31 17:39

...

Me refería a tener en cuenta todo lo que hay debajo del lienzo, incluyendo el propio gráfico (color de fondo) y el color de sus elementos (barras, líneas ask/bid, etc.).

Al mover este lienzo con fondo transparente con elementos semitransparentes dibujados sobre él, todos los píxeles deberían dibujarse correctamente.

Este no es el caso ahora:


Aquí hay un ejemplo donde un lienzo (con un círculo azul) está encima de otro lienzo (un rectángulo azul con una imagen) y aquí tampoco tiene en cuenta lo que está dibujado en el lienzo de abajo:


 
Anatoli Kazharski #:

No pude encontrar una búsqueda de iDot() o 3DStars para ver el código.

Me refería a tener en cuenta todo lo que hay bajo el lienzo, incluido el propio gráfico (color de fondo) y el color de sus elementos (barras, líneas ask/bid, etc.).

Al mover este lienzo con fondo transparente con elementos semitransparentes dibujados sobre él, todos los píxeles deberían dibujarse correctamente.

Este no es el caso ahora:


https://www.mql5.com/ru/forum/227736/page72#comment_25130501

Aquí también los colores se mezclan con el fondo
https://www.mql5.com/ru/forum/451355/page5#comment_48450810
 
Nikolai Semko #:
h ttps://www.mql5.com/ru/forum/227736/page72#comment_25130501

También en este caso los colores se funden con el fondo
https://www.mql5.com/ru/forum/451355/page5#comment_48450810

¡Gracias! ¡Son ejemplos muy chulos! Así que estaba equivocado.

Todavía no he mirado el código en detalle, pero ¿por qué la transparencia no se dibuja como se espera en el CCanvas por defecto?

 
Anatoli Kazharski #:

Gracias. Son ejemplos muy chulos. Así que me equivoqué.

Todavía no he mirado el código en detalle, pero ¿por qué la transparencia no se dibuja como se espera en el CCanvas por defecto?

Hay muchas cosas mal en él.
Parece que simplemente no lo terminaron porque el programador que estaba trabajando en ello fue despedido. Puede que me equivoque.
 
Nikolai Semko #:
Hay muchas cosas que están mal.
La sensación es que no lo terminaron porque despidieron al programador que estaba a cargo. Podría estar equivocado.

Nikolay, ¿puedes hacer una lista de qué y cómo es deseable cambiar en el CCanvas estándar? En tu opinión. Como es ahora, y como debería ser. Y por qué.

 
Artyom Trishkin #:

Nicholas, ¿puedes hacer una lista de qué y cómo es deseable cambiar en el CCanvas estándar? En tu opinión. Como es ahora, y como debería ser. Y por qué.

Necesitamos una nueva clase con menos funciones que en CCanvas. Es mejor hacer esta clase lo más parecida posible a JS canvas, que no tiene muchas funciones en esencia, para facilitar el aprendizaje y la adopción, ya que toda la TI se está moviendo hacia la web.
pero esto es lo ideal.
Probablemente podría escribir algo como esto yo mismo, pero me llevaría al menos medio año a tiempo completo
aunque personalmente no me gusta todo en JS Canvas, pero para la estandarización sería correcto implementar algo como esto con pequeños cambios para prescindir del análisis sintáctico de cadenas.

ZY pero para el trabajo normal necesito rehacer MT5 modelo de eventos, ya que es simplemente horrible

Se supone que el canvas en MT5 funciona el doble de rápido que el canvas en JS. Pero para esto (para una interfaz sin lag) necesitas cambiar muchas cosas dentro de MT5, cosa que Renat nunca hará.

HTML Canvas Reference
HTML Canvas Reference
  • www.w3schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
 
Nikolai Semko #:

Necesitamos una nueva clase con menos funciones que CCanvas. Es mejor hacer esta clase lo más parecida posible a JS canvas, que no tiene muchas funciones en esencia, para facilitar el aprendizaje y la adopción, ya que toda la TI se está moviendo hacia la web.
pero esto es lo ideal.
Probablemente podría escribir algo como esto yo mismo, pero me llevaría al menos medio año a tiempo completo
aunque personalmente no me gusta todo en JS Canvas, pero para la estandarización sería correcto implementar algo similar con pequeños cambios para prescindir del análisis sintáctico de cadenas.

Pero para el trabajo normal que necesitamos para rehacer MT5 modelo de eventos, ya que es simplemente horrible

Está claro que todo está "bajo el cuchillo", pero aún así la pregunta era un poco diferente. Lo que es deseable cambiar / refinar en la clase existente ...

 
Artyom Trishkin #:

Está claro que todo está "bajo el cuchillo", pero aun así la pregunta era un poco diferente. Qué es deseable cambiar/mejorar en la clase existente...

métodos suaves para darles vida. Ahora creo que incluso hay funciones en CCanvas que no están documentadas.