Discusión sobre el artículo "Distribuciones Estadísticas en MQL5: tomando lo mejor de R" - página 4
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¡¿Qué cojones?! Los objetivos de la biblia matemática son claros.
No entiendo algo
¿Cuál es el resultado de llamar a la función especificada en MQL? ¿Un escalar? ¿Un vector?Esto es lo que tenemos en R
n <- 2000
>
> k <- seq(0, n, by = 20)
>
> dbinom(k, n, pi/10, log = TRUE)
[1] -754.219687 -660.247472 -592.126636 -534.532344 -483.881605
[6] -438.460449 -397.256529 -359.600217 -325.015561 -293.146935
[11] -263.718651 -236.510862 -211.344286 -188.070044 -166.562645
[16] -146.714976 -128.434635 -111.641185 -96.264050 -82.240889
[21] -69.516303 -58.040813 -47.770020 -38.663934 -30.686405
[26] -23.804662 -17.988917 -13.212041 -9.449276 -6.678001
[31] -4.877524 -4.028903 -4.114796 -5.119322 -7.027950
> a<-dbinom(k, n, pi/10, log = TRUE)> str(a)
num [1:101] -754 -660 -592 -535 -484 ...
Es decir, llamando a la función en R se obtiene un vector que se puede dibujar con el método universal plot
> plot(a)
Pon el archivo actualizado en /Include/Math/Stat, por favor.
Añade una función sobrecargada para el vector + un parámetro log_mode adicional.
Aquí tienes un análogo de tus cálculos, igualando completamente los resultados con R:
Conclusión:
Ahora estamos trabajando en añadir operaciones vectoriales para estar lo más cerca posible en sintaxis a R.
Por supuesto, vamos a añadir un montón de nuevas pruebas unitarias a la entrega.
Por cierto, las afirmaciones sobre la optimización a toda velocidad de las bibliotecas matemáticas en R son muy exageradas.
Este es el resultado de escribir código de cabeza y la sobrecarga salvaje del sistema debido al trabajo con objetos/entidades dinámicas. A diferencia de R, MQL5 opera con arrays claramente tipados y compila código en x64 nativo. Esto le da una gran ventaja y le permite ganar incluso contra implementaciones DLL de funciones en R.
He aquí una prueba basada en el ejemplo anterior: R 3.3.1 x64
La triple ejecución mostró un tiempo mínimo de 20 microsegundos.
La misma prueba en MQL5:
MQL5 cuenta el doble de rápido: 10 microsegundos frente a 20 microsegundos en R.
Calculado en i7-4930k, Windows 10 x64, MetaTrader 5 x64, sin virtualizaciones y sin carga externa.
Por cierto, las afirmaciones sobre la optimización a toda velocidad de las bibliotecas matemáticas en R son muy exageradas.
Este es el resultado de escribir código de cabeza y la sobrecarga salvaje del sistema debido al trabajo con objetos/entidades dinámicas. A diferencia de R, MQL5 opera con arrays claramente tipados y compila código en x64 nativo. Esto le da una gran ventaja y le permite ganar incluso contra implementaciones DLL de funciones en R.
He aquí una prueba basada en el ejemplo anterior: R 3.3.1 x64
La triple ejecución mostró un tiempo mínimo de 20 microsegundos.
La misma prueba en MQL5:
MQL5 cuenta el doble de rápido: 10 microsegundos frente a 20 microsegundos en R.
Calculado en i7-4930k, Windows 10 x64, MetaTrader 5 x64, sin virtualizaciones y sin carga externa.
Por cierto, las afirmaciones sobre la optimización a toda velocidad de las bibliotecas matemáticas en R son muy exageradas.
Este es el resultado de escribir código de cabeza y la sobrecarga salvaje del sistema debido al trabajo con objetos/entidades dinámicas. A diferencia de R, MQL5 opera con arrays claramente tipados y compila código en x64 nativo. Esto le da una gran ventaja y le permite ganar incluso contra implementaciones DLL de funciones en R.
He aquí una prueba basada en el ejemplo anterior: R 3.3.1 x64
La triple ejecución mostró un tiempo mínimo de 20 microsegundos.
La misma prueba en MQL5:
MQL5 cuenta el doble de rápido: 10 microsegundos frente a 20 microsegundos en R.
Cálculo en i7-4930k, Windows 10 x64, MetaTrader 5 x64, sin virtualizaciones y sin carga externa.
y tengo un error((
'vars' - conversión de parámetros no permitida
y tengo un error((
'vars' - conversión de parámetros no permitida
Usted necesita tomar el archivo actualizado de https://www.mql5.com/ru/forum/97153/page4#comment_2882502.
La función anulada para los vectores se ha añadido allí.
Usted necesita tomar el archivo actualizado de https://www.mql5.com/ru/forum/97153/page4#comment_2882502
Hay una función redefinida para vectores.
Si, gracias. funciona asi. a mi me funcionaba asi. tengo que decirte de entrada que yo ejecuto MT desde bajo vyne, 32bit. por eso supongo cual sera la respuesta - 64bit es mas rapido))) para evitar confusiones - R tambien es 32bit.
Sí, gracias. funciona así. funcionó para mí así. tengo que decir que estoy corriendo MT de bajo wyne, 32bit. así que lo que será la respuesta, puedo adivinar - 64bit es más rápido))))
Eso no es serio.
Bajo wyne, e incluso 32 bits. Para 32 bits MT5 utiliza un viejo compilador similar a MT4. 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 docenas de veces más lento que en MetaTrader 5 de 64 bits.
¡Felicidades! Una victoria limpia, en ambas hojas.
el cálculo es dos veces más rápido que un cálculo R similar con compilación (la primera pasada de R es byte/or jit compilación, por lo que tiene max>1.5 avg y min~=avg) ?
bueno, logro... :-)
cálculo dos veces más rápido que el mismo cálculo de R con compilación (la primera pasada de R es compilación byte/or jit, por lo que tiene max>1.5 avg y min~=avg) ?
bueno, logro... :-)
R tomó el tiempo mínimo sobre muchas pasadas, no la primera pasada y el tiempo máximo.
Así que no, el "arranque en frío" no lo explica aquí. E incluso en un entorno donde todo el código de la librería está en una DLL. No hay prácticamente nada que calentar.
Pero lo que sí lo explica:
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 adaptarse a él.