Discusión sobre el artículo "Distribuciones Estadísticas en MQL5: tomando lo mejor de R" - página 5

 
Renat Fatkhullin:
  1. Presencia de bibliotecas MQL5 en el código fuente, lo que permite inlinear de forma nativa su código directamente en el lugar de llamada y maximizar el uso del entorno const del lugar llamado.

¿Se incluirán también muchas funciones estándar en las bibliotecas para inlining?

 
Renat Fatkhullin:

Eso no es serio.

Bajo wyne, e incluso 32 bits. Un viejo compilador similar a MT4 se utiliza para 32 bits de MT5. Es un par de decenas de veces más lento que el código de 64 bits, que es creado por un nuevo compilador especialmente para la versión de 64 bits de MT5. Hemos publicado un informe comparando la velocidad de los programas MQL5 de 32 y 64 bits.

Cada programa MQL5 contiene en realidad dos copias del código compilado: 32 bits para los sistemas antiguos en aras de la compatibilidad y 64 bits para los nuevos.

Hemos abandonado por completo el desarrollo de compiladores de 32 bits, ya que no tiene sentido ni futuro.

Es por eso que usted debe utilizar sólo las versiones de 64 bits de MetaTrader 5 si desea obtener el máximo rendimiento.


Por cierto, información para aquellos que se sientan en MT4 - allí también la velocidad de ejecución de código MQL4 es un par de decenas de veces más lento que en MetaTrader 5 de 64 bits.

Inesperadamente ... Para mí, esta es una razón muy seria para finalmente reconsiderar mis hábitos y cambiar a MT5. Anteriormente, no le veía mucho sentido....
 
fxsaber:

¿Se pondrán también muchas funciones estándar en bibliotecas para inlining?

Exacto.

En las próximas versiones lo haremos. Añadiremos fuentes de funciones a los programas sobre la marcha durante la compilación, lo que permitirá al optimizador trabajar con todo su potencial.

Para nosotros es crucial minimizar el número de llamadas al núcleo de la plataforma.

 
Реter Konow:
Inesperadamente ... Para mí es realmente una razón seria para finalmente reconsiderar mis hábitos y cambiar a MT5. Antes no le veía mucho sentido....

Si profundizas en la latencia de los procesos internos de MT4 y MT5, incluyendo el trading, huirás de MT4. Hay un abismo en la calidad y prolijidad de los procesos.

Somos tan fanáticos del rendimiento y la optimización de MT5 por una razón. Es una enorme ventaja tecnológica.

 
Renat Fatkhullin:

R tomó el tiempo mínimo a lo largo de muchos arranques, no el primer arranque y el tiempo máximo.

Así que no, "arranque en frío" no lo explica aquí. E incluso en condiciones cuando todo el código de la biblioteca está en DLL. No hay prácticamente nada que calentar.

Pero lo que sí lo explica:

  1. Ausencia de sobrecarga en objetos dinámicos como en R debido al trabajo con datos dobles puramente tipados.
  2. Un compilador terriblemente eficiente en MQL5. Realmente da miedo mirar el código asm resultante.
  3. Presencia de librerias MQL5 en el codigo fuente, lo que te permite inlinear nativamente su codigo directamente en el lugar de llamada y utilizar al maximo el entorno const del lugar llamado.

    Aquí es donde el compilador tiene un montón de espacio en comparación con las implementaciones no optimizadas en DLLs, que no tienen la oportunidad de aprender el entorno y ajustarse a él.

¿Qué se está midiendo aquí? Me recuerda a los holivares C++ vs Lisp - es simplemente uno a uno, excepto que uno de los "comparadores" es casi ++ y el otro es Schema :-)) Simplemente son cosas fundamentalmente diferentes....
 
Renat Fatkhullin:

Si profundizas en la latencia de los procesos internos de MT4 y MT5, incluido el trading, huirás de MT4. Hay un abismo en la calidad y pulcritud de los procesos.

Somos tan fanáticos del rendimiento y la optimización de MT5 por una razón. Es una enorme ventaja tecnológica.

Ahora lo sabré yo. Por supuesto, portar todo el código no será fácil incluso con la suficiente compatibilidad de lenguajes, pero creo que el resultado merecerá la pena. Siempre estoy orientado a una mayor eficiencia y la cuestión de la diferencia de rendimiento y velocidad siempre me ha interesado mucho. Si hubiera conocido antes esta diferencia, hace tiempo que me habría olvidado de la plataforma menos rápida. Gracias por la información.
 
Maxim Kuznetsov:
¿Qué se está midiendo aquí? Me recuerda a los holivares C++ vs Lisp - justo lo mismo, excepto que uno "compara" casi ++ y el otro es Schema sobredimensionado :-) Simplemente son cosas fundamentalmente diferentes.....

Esto es sólo una prueba pura en la práctica y la teoría de la falacia de la posición expresada por algunos comerciantes en el tema https://www.mql5.com/ru/forum/96176/page10 (hubo una mención en alguna parte):

  • en R todas las librerías están optimizadas y son lo más rápidas posible
  • hay muchas optimizaciones en R, incluyendo Intel Threading Building Blocks, etc.


Resultó que esto no es cierto. En la función más simple, resultó ser un drenaje y MQL5 es más eficiente. Por otra parte, he fundamentado por qué es más rápido teóricamente. Además de los resultados prácticos.

Используете ли вы CExpert при создании роботов?
Используете ли вы CExpert при создании роботов?
  • www.mql5.com
Да Нет, пишу класс робота с нуля Нет, у меня есть свой базовый класс робота Нет, я не использую ООП Хочу посмотреть результат...
 
Renat Fatkhullin:

Si profundizas en la latencia de los procesos internos de MT4 y MT5, incluido el trading, huirás de MT4. Hay un abismo en la calidad y pulcritud de los procesos.

El trading queda en cierto modo olvidado

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

Errores, fallos, preguntas

fxsaber, 2016.10.09 09:39 pm

MT5-OrderSend NO está totalmente sincronizado - no hay sincronización con el entorno de negociación. Esto significa que las lecturas de la historia no se corresponden con el estado real de las cosas.

Cualquier tiempo de espera está fuera de lugar. No existe una solución fiable al problema, porque las cuestiones de sincronización deben tratarse a nivel de terminal, no a nivel de servidor.

De hecho, los usuarios de MT5 se han encontrado con lo mismo que los desarrolladores del puente MT4.

Si se envía un OrderSend, hay que RECORDAR (aquí hay una vulnerabilidad potencial) que se ha hecho. Luego ignorar el historial actual (entorno de trading) hasta que llegue el mensaje correspondiente a OnTrade. Una vez que llega, no hay que OLVIDAR NADA.

Cuando no hay datos FORGOTTEN, se puede confiar en la historia, al igual que en MT4.

MT4-OrderSend está TOTALMENTE sincronizado.

Sí y con el resto, mucho más sencillo, como se ve, problemas

 
fxsaber:

De alguna manera se olvida el comercio

Usted confunde los procesos asíncronos con el deseo de ver la sincronización.

La tarea de OrderSend es realizar una solicitud y recibir una confirmación lo más rápidamente posible. Y el sistema lo hace perfectamente.

Pero obtener una transacción/acuerdo completado, ponerlo en el historial y luego dártelo bajo petición - esto es otro proceso y no tiene derecho a ralentizar el trabajo de OrderSend.

Por eso todo es correcto - ejecutas la transacción rápidamente, y luego en un milisegundo (en realidad antes) en el paquete vecino obtienes una actualización del ticket y trabajas con ella.


Y con el resto, mucho más simple, como resultó, también hay problemas

Escribir un compilador y sobre todo implementar las malvadas plantillas de C++ son cosas sencillas????

De todos modos, muchas gracias por la paciencia de A100 - fue muy útil en la captura de errores.


Pero esto es offtopic, si quieres discutir estas cuestiones, hazlo en hilos nativos. Aquí sobre R.
 
Los comentarios no relacionados con este hilo se han movido a "Cómo trabajar correctamente en MT5 con OrderSend".