Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 199
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
Comenta entonces, por orden de literalidad, cómo para una distribución continua uniforme la densidad en el punto extremo es positiva y la integral es cero: https://en.wikipedia.org/wiki/Uniform_distribution_(continuo)
Volvamos a la afirmación original sobre los errores de la R en el artículo.
Nuestra opinión se mantiene: hay errores y están causados por el descuido en la aplicación.
La cuestión es que @Quantum es una implementación pura y una comprobación completa del análogo de la biblioteca matemática R en MQL5.
Este no es el razonamiento de un teórico. Y profundiza en la escritura de las pruebas unitarias que proporcionan la garantía de que la biblioteca es correcta.
No hay que asumir a priori que todo es correcto en R. Por el contrario, yo diría que aunque haya una implementación de las funciones en C++, todo es bastante primitivo. Y en términos de velocidad, se puede ver que la biblioteca MQL5 en el código fuente en nuestro compilador gana por 3 veces en promedio.
Nos hemos tomado la molestia de comprobarlo todo y hemos encontrado errores evidentes. Estos errores han sido confirmados:
Mira las fechas de las publicaciones, por favor. Verás cómo el trabajo se desarrolla con el asesoramiento de los científicos.
Además, sería un error no considerar a @Quantum un científico.
¡Querido Renat!
Tengo las siguientes preguntas sobre sus últimos posts, que son cuestiones de principio para mí:
1. A juzgar por la fecha de publicación de su artículo, es el año 2003. Naturalmente, R, al igual que cualquier otro sistema de software, tiene errores y siempre se publica una lista de correcciones tras su lanzamiento. Al mismo tiempo, R siempre ha hecho hincapié en que el bajo nivel de errores debido al número extremadamente grande de usuarios es una virtud de R. Y aquí desde 2003 se ha detectado un error en el algoritmo a nivel de publicación y no se ha arreglado. Esto no está claro para mí.
¿Has hecho una consulta a R sobre este tema?
2. Me gustaría ver el código con el que se comparó el rendimiento de R y MQL5.
Se lo agradezco de antemano.
¡Querido Renat!
Tengo las siguientes preguntas sobre tus últimos posts, que son fundamentales para mí:
1. A juzgar por la fecha de publicación del artículo, se trata de 2003. Naturalmente, R, al igual que cualquier otro sistema de software, tiene errores y siempre se publica una lista de correcciones tras su lanzamiento. Al mismo tiempo, R siempre ha hecho hincapié en el bajo nivel de errores debido al gran número de usuarios como ventaja de R. Y aquí desde 2003 se ha detectado un error en el algoritmo a nivel de publicación y no se ha arreglado. Esto no está claro para mí.
Es elemental y absolutamente claro.
Todo el mundo comete errores, eso es lo que hacen los desarrolladores. Cometemos muchos errores y no nos desanimamos.
Este error en R es sólo por descuido y por confiar en una función básica que estropea las demás. Se corregirá.
¿Has hecho una petición a R sobre este tema?
Hemos realizado pruebas, hemos estudiado todo en detalle mientras escribíamos la biblioteca, hemos comparado constantemente los resultados entre MQL5 - Wolfram Alpha - R, hemos mostrado nuestros resultados y estamos dispuestos a responder por ellos públicamente. Por supuesto, hemos adjuntado tres grandes scripts con pruebas unitarias y un benchmark a nuestro paquete matemático (que está en el código fuente).
Estoy seguro de que @Quantum escribirá un informe de errores en R. El artículo actualizado se publicó hace apenas un par de horas.
Me gustaría ver el código que compara el rendimiento de R y MQL5.
El código del benchmark para MQL5 se puede encontrar en \Scripts\UnitTests\Stat\TestStatBenchmark.mq5 y el código de R se puede encontrar al final del artículo Distribuciones estadísticas en MQL5 - tomar lo mejor de R y hacerlo más rápido, ver "Apéndice. Resultados del cálculo de la línea de tiempo de las funciones estadísticas".
Asegúrese de actualizar a MetaTrader 5 build 1467 conectándose al servidor MetaQuotes-Demo, por favor. En esta versión beta hemos incluido la nueva biblioteca y todos los scripts de prueba.
Esto es elemental y completamente comprensible.
Todo el mundo comete errores, es la naturaleza de los desarrolladores. Cometemos muchos errores y no nos desanimamos.
Este error en R es sólo por el descuido y la confianza en una función básica que arruinó otras. Se corregirá.
Hemos realizado pruebas, hemos estudiado todo en detalle mientras escribíamos la biblioteca, hemos comparado constantemente los resultados entre MQL5 - Wolfram Alpha - R, hemos mostrado nuestros resultados y estamos dispuestos a responder por ellos públicamente. Por supuesto, hemos adjuntado tres grandes scripts con pruebas unitarias y un benchmark a nuestro paquete matemático (que está en el código fuente).
Estoy seguro de que @Quantum escribirá un informe de errores en R. El artículo actualizado se publicó hace apenas un par de horas.
El código del benchmark en MQL5 se puede encontrar en \Scripts\UnitTests\Stat\TestStatBenchmark.mq5 y el código en R se puede encontrar al final del artículo Distribuciones estadísticas en MQL5 - tomar lo mejor de R y hacerlo más rápido en "Apéndice. Resultados del cálculo del tiempo de las funciones estadísticas".
Asegúrese de actualizar a MetaTrader 5 build 1467 conectándose al servidor MetaQuotes-Demo, por favor. En esta versión beta hemos incluido la nueva biblioteca y todos los scripts de prueba.
Todavía no puedo formarme una opinión propia sobre la comparación del rendimiento. Y esto es una cuestión de principios.
La cuestión es que R es un entorno ideal para el desarrollo, un intérprete en una palabra. Pero el código que existe durante el desarrollo es muy diferente del código de trabajo, por el número de líneas muchas veces. Y el código de trabajo, en cambio, es muy breve y muy amplio. Por lo tanto, debemos comparar en cualquier función de los paquetes, que tienen sentido al tomar decisiones de comercio, por ejemplo, randomforest, que utilizan algoritmos computacionalmente capacitados, operaciones de matriz, la carga de todos los núcleos....
PS.
Está utilizando una versión obsoleta de R. Debe tomar la versión 3.3.1 de R (2016-06-21) del sitio web MRAN - Microsofn R Open. Es obligatorio instalar MKL al hacerlo. Microsoft afirmó en la mencionada versión de R que era capaz de aumentar la velocidad de ejecución de algunos paquetes y funciones hasta 50 (!) veces.
Todavía no puedo formarme una opinión sobre la comparación del rendimiento. Y esto es una cuestión de principios.
La cuestión es que R es un entorno ideal para el desarrollo, un intérprete en una palabra. Pero el código que existe durante el desarrollo es muy diferente del código de trabajo, por el número de líneas muchas veces. Y el código de trabajo, en cambio, es muy breve y muy amplio. Por eso debemos comparar en cualquier función de los paquetes, que tienen sentido mientras se toman las decisiones comerciales, por ejemplo, randomforest, que utilizan algoritmos computacionales de gran capacidad, operaciones matriciales, carga de todos los núcleos....
Traducimos metódicamente las características de R a MQL5. Y de tal manera que la esencia de las llamadas de función resulta ser muy similar.
Este es un ejemplo de la correspondencia del artículo:
Uniforme
Intentamos que el código de R sea casi idéntico en tamaño y tiempo a escribirlo en MQL5.
Mañana lanzaremos en beta la biblioteca gráfica y demostraremos trozos de código de igual tamaño en R y MQL5 junto con imágenes.
Dudo que la versión de stock de R pueda acelerar de repente - el código no cambia mucho. Está claro que algunas funciones pueden acelerarse, especialmente las matriciales. Y tu afirmación confirma mi opinión de que el código en R está escrito de forma bastante descuidada en términos de rendimiento.
Si lees el artículo, verás que obtuvimos un aumento de velocidad de hasta 46 veces incluso en funciones básicas sin ningún tipo de multihilo y MKL:
Los cálculos se realizaron en un Intel Core i7-4790, CPU de 3,6 Ghz, 16 GB de RAM, Windows 10 x64. Resultados del tiempo de cálculo en microsegundos
Tiempo de cálculo del PDF (µs)
Tiempo de cálculo del PDF (µs)
R/MQL5
Tiempo de cálculo del CDF (µs)
Tiempo de cálculo del CDF (µs)
R/MQL5
tiempo cuantificado (µs)
tiempo de cálculo de cuantiles (µs)
R/MQL5
tiempo de generación de números aleatorios (µs)
tiempo de generación de números aleatorios (μs)
R/MQL5
Pero la versión especificada se probará, por supuesto. Tanto por velocidad como por rendimiento.
Te equivocas con lo de "respuesta equivocada"
...
Por ejemplo, la documentación de MQL da un ejemplo sobre el arcoseno y afirma que arcoseno(2) = infinito. Esto no es exacto. Exactamente: arcsinus(2) = NaN, es decir, no hay valor numérico, arcsinus(1) = Inf, pero las cotizaciones que faltan durante la negociación = NA, es decir, deberían estar (o podrían estar durante el fin de semana) y no lo están.
Lo escribí con un poco de ironía sobre las respuestas erróneas. Debería haber añadido una cara sonriente... En realidad añadí al final que no es un bug en ambos casos, porque el comportamiento del compilador y del intérprete en áreas de funciones no definidas depende totalmente de la arquitectura del sistema y de los desarrolladores. En ese caso, es mejor devolver la nan en ese caso, por supuesto.
Es decir, no llames a una función con parámetros para los que no está definida y luego compares los resultados con los de otra biblioteca, de lo contrario puedes encontrar cientos de "bugs".
Por cierto, es interesante el ejemplo con arcsinus.
mql -
MathArcsin(1) = MathArcsin(2) = -nan(ind)
Wolfram -
Arcsin(1) = Pi/2
Arcsin(2) = algo complejo. No hay ninguna solución con un resultado válido.
R -
asin(1) = Pi/2
asin(2) = nan (la respuesta es para números reales)
asin(2+0i) = algo complejo, como en wolfram
La wiki dice que asin(1) todavía está definido(https://en.wikipedia.org/wiki/Inverse_trigonometric_functions), puedes escribir un informe de error a servicedesk.
Pero asin(2) es una región indefinible, está bien y coincide en todas partes.
Y de nuevo sobre el último post - la división por 0 en matemáticas simples es imposible, por lo que es lógico que el script mql se cuelgue con error, no hay bugs aquí. Pero es muy extraño ver tanta meticulosidad para precisar los resultados hasta 16 decimales, y devolver nan o inf cuando dividir por cero es imposible por alguna razón. Imho necesita devolver a Inf y no atormentar a los desarrolladores con caídas repentinas de sus scripts.
Para desactivar el control de la división del valor real, utilice el parámetro FpNoZeroCheckOnDivision=1 en la sección [Experts] del archivo metaeditor.ini
Si este parámetro está presente, el siguiente código producirá inf
Por supuesto, la presencia de este parámetro no le salvará de un error de compilación al dividir por una constante 0,0
'0.0' - division by zero in the constant expression s1.mq5 8 12
Renat, ¿fue realmente esta transferencia de algunas funciones de R a mql la sorpresa de la que hablabas?
No.
La sorpresa no tiene sentido, lo haremos todo dentro de MQL5 y MetaTrader 5.
Si este parámetro está presente, el siguiente código dará inf