Discusión sobre el artículo "LifeHack para tráders: preparando "comida rápida" a partir de indicadores" - página 13

 
Vladimir Karputov:

- tenías un buen código y una descripción de los resultados de la medición.

No tuve la oportunidad de mirar el código

 

llamar a los indicadores en el modo MQL4, la velocidad es menor en un 40%.

Estilo MQL5

i = 0 Pass = 0 OnTester = 7.679 s.: Count = 9986677, 1300517.9 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755
i = 1 Pass = 1 OnTester = 7.645 s.: Count = 9986677, 1306301.8 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755


Estilo MQL4 (sin caché)

i = 0 Pass = 0 OnTester = 14.117 s.: Count = 9986677, 707422.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755
i = 1 Pass = 1 OnTester = 14.067 s.: Count = 9986677, 709936.5 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755


Estilo MQL4(con caché)

i = 0 Pass = 0 OnTester = 10.077 s.: Count = 9986677, 991036.7 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755
i = 1 Pass = 1 OnTester = 10.104 s.: Count = 9986677, 988388.5 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755

La variante con caché es un 32% más lenta que la variante MQL5-style. En cuanto a la variante sin caché, no se ha podido obtener el 40% mencionado. Como antes, es el doble de lenta. Pero la coincidencia en términos de beneficio es indudable.

 

Lo siento, pero ni siquiera entiendo por qué este artículo se le permitió ser publicado por Metaquotes.

Las principales ventajas de la manija del indicador en mql5 es la capacidad de obtener varios valores de un búfer, se descarta por completo. ¡Y que para proporcionar un código que será en gran medida menos eficiente la mayor parte del tiempo ! Ni siquiera estoy sobre la mala práctica de codificación que consiste en no comprobar el valor devuelto de una función.

Este artículo es inútil o incluso peor. No se sorprenda de que la gente quiere seguir utilizando mql4.

 
Alain Verleyen:

Lo siento, pero ni siquiera entiendo por qué Metaquotes permitió la publicación de este artículo.

Las principales ventajas de la manija del indicador en mql5 es la capacidad de obtener varios valores de un búfer, se descarta por completo. ¡Y que para proporcionar un código que será en gran medida menos eficiente la mayor parte del tiempo ! Ni siquiera estoy acerca de la mala práctica de codificación que consiste en no comprobar el valor devuelto de una función.

Este artículo es inútil o incluso peor. No te sorprendas de que la gente quiera seguir usando mql4.

No creo que tengas razón. Este articulo en primer lugar ayuda a programadores aficionados no tan educados y flexibles a entender el manejo de los indicadores en mql5 comparado con mql4 y les muestra en segundo lugar una manera de como pueden usar los indicadores de la misma manera que estan acostumbrados en MQL4.
 

Si ejecuto un simple iVolume en un bucle, sobre todos los instrumentos disponibles, en MQL5, a continuación, la plataforma sólo se congela, las llamadas masivas copybuffer actuar como un ataque DDoS en el sistema operativo, que acaba de viajes, mientras que si hago este mismo proceso en MQL4, se ejecuta sin problemas como un paquete de mantequilla fundida caliente.

En la misma máquina, y que me dice más de lo que necesito saber.

Combine eso con todas las señales y el ruido procedente de la comunidad que me dice que mis conclusiones eran correctas todo el tiempo.

 
Marcar sólo
 

El problema es: ¿por qué tengo que copiar el búfer cada vez que tengo que leer el valor del indicador? El buffer está ahí, ya calculado, ¿por qué no puedo acceder a su valor directamente?

Esto no tiene sentido.

Sólo debería tener acceso directo al búfer del indicador, copiarlo una y otra vez sólo degradará el rendimiento.

Realmente no entiendo por qué Metaquotes ha seguido esta forma de trabajar.

CopyBuffer(...) vs buffer[i] ?

 
ludoz:

El problema es: ¿por qué tengo que copiar el búfer cada vez que tengo que leer el valor del indicador? El búfer está ahí, ya calculado, ¿por qué no puedo acceder a su valor directamente?

Esto no tiene sentido.

Sólo debería tener acceso directo al búfer del indicador, copiarlo una y otra vez sólo degradará el rendimiento.

Realmente no entiendo por qué Metaquotes ha seguido esta forma de trabajo.

¿CopiarBuffer(...) vs buffer[i] ?

Porque eso no es tan sencillo. El indicador se ejecuta en un hilo y un EA en otro hilo (y puedes tener varios indicadores/varios EAs). Si te estás quejando de un procedimiento tan simple como handle/CopyBuffer, no quieres proceder con una aplicación multihilo, créeme.

mql5 proporciona soluciones genéricas, capaces de manejar la mayoría de las situaciones "normales". Si tienes un problema específico en tu proyecto, siempre hay una solución.

 
Ahora es MQL5, pero la mayoría de la gente sigue usando mt4.