Discusión sobre el artículo "Desarrollo de asesores expertos autooptimizables en MQL5"

 

Artículo publicado Desarrollo de asesores expertos autooptimizables en MQL5:

Construya asesores expertos que miren hacia delante y se ajusten a cualquier mercado.

El desarrollo de un bot de negociación que pueda ajustarse a las condiciones actuales del mercado es clave para la estabilidad de las estrategias de negociación algorítmica. Nuestro objetivo es ir más allá de la creación de robots estrechamente enfocados y limitados a unos pocos símbolos. Pretendemos diseñar sistemas con capacidad de aprendizaje y adaptación a cualquier símbolo comercial. Esta guía se centra en el uso de MQL5 para desarrollar bots que puedan autooptimizarse a cualquier entorno de trading.

MQL5 es ideal para esta tarea, en contra de algunas creencias. Su API ofrece amplias funciones matriciales y vectoriales que permiten crear modelos compactos de aprendizaje automático. Esta introducción hace hincapié en el uso de MQL5 para construir bots autooptimizables. La programación orientada a objetos reduce la repetición de códigos y mejora la adaptabilidad a distintos plazos y condiciones de mercado.

Optar por las capacidades matriciales y vectoriales de MQL5 frente a alternativas como ONNX y Python tiene ventajas considerables. El uso de un modelo ONNX requeriría instancias de modelo separadas para cada símbolo de negociación y nuevos modelos para cualquier cambio menor de los parámetros, como los ajustes del marco temporal. MQL5, sin embargo, ofrece adaptabilidad sin necesidad de gestionar numerosos modelos para condiciones variables.

Autor: Gamuchirai Zororo Ndawana

 

Muchas gracias por compartir esta información y por tomarse el tiempo de explicarla de una manera muy amena y legible. Excelente.

Saludos,

Antonio

 
Antonio Simon Del Vecchio #:

Muchas gracias por compartir esta información y por tomarse el tiempo de explicarla de una manera muy amena y legible. Excelente.

Saludos,

Antonio

Eres muy amable Antonio, gracias por tus amables palabras.
 
Muchas gracias Gamuchirai, esto es increíble, bien oportuna y relevante en nuestra era de comercio EA.

Eres el mejor :-)
 
Douglas I #:
Muchas gracias Gamuchirai, esto es increíble, bien oportuna y relevante en nuestra era de comercio EA.

Eres el mejor :-)
Gracias Douglas, estoy encantado de ayudar.

Vamos.🔥
 

Gracias por publicar, una vez más un enfoque muy singular. Estoy muy interesado en comprender y aplicar la appraoch. Me viene con tal y explicaciones informativas, es un placer leer y mejora mi comprensión en gran medida . Apreciar el tiempo dedicado a la creación de este

Saludos Neil

 
linfo2 #:

Gracias por publicar, una vez más un enfoque muy singular. Estoy muy interesado en comprender y aplicar la appraoch. Me viene con tal y explicaciones informativas, es un placer leer y mejora mi comprensión en gran medida . Apreciar el tiempo dedicado a la creación de este

Saludos Neil

Gracias, Neil, hay tanta gente que ayuda entre bastidores como Rashid y otros moderadores de contenidos que hacen que todo esto sea posible, que no podríamos agradecérselo a todos. Me alegro de haber aportado valor, ese es siempre el objetivo. De hecho, es el único objetivo.

 
Probando el LinearRegressionEA en un fin de semana obtengo valores indefinidos para los valores m[0] y b[0] en el LinearRegression,mqh, class Predict() metod por lo tanto devuelve undefined -nan, haciendo back testing en Strategy Tester.
Method Trained() ha devuelto true en ese punto.
¿Podría tener algo que ver con estar fuera del horario de negociación?

ACTUALIZACIÓN: Es probable que sea un problema con los datos históricos. Corro en modo 'ticks reales'. Probando backtest en un mes más tarde de los datos que funciona. Voy a ver si puedo añadir algo de código que no deje que los datos indefinidos se cuelen sin ser detectados. Veo que hay algunas comprobaciones ahí para m[0] y d[0] indefinidos pero puede que necesite más. Mañana lo compruebo.



 
Gunnar Forsgren Strategy Tester.
Method Trained() ha devuelto true en ese punto.
¿Podría tener algo que ver con estar fuera del horario de negociación?

ACTUALIZACIÓN: Es probable que sea un problema con los datos históricos. Corro en modo 'ticks reales'. Probando backtest en un mes más tarde de los datos que funciona. Voy a ver si puedo añadir algo de código que no deje que los datos indefinidos se cuelen sin ser detectados. Veo que hay algunas comprobaciones ahí para m[0] y d[0] indefinidos pero puede que necesite más. Mañana lo compruebo.



Mi observación sobre el backtest de 'cada tick' se resolvió exportando explícitamente los archivos de datos del historial de Ticks y Barras desde la lista de Símbolos y guardándolos en una ruta de archivo donde el probador los referenciará.
Los archivos necesitan cubrir el rango de días para los que se realizan las pruebas. Esto puede ser conveniente para un caso de uso en el que un periodo del pasado se utiliza repetidamente para mejorar una estrategia.
Por defecto el probador descarga estos datos de la red en cada ejecución de prueba y aparentemente a veces esto no es fiable. Mantener estos datos localmente parece funcionar mejor.
Por lo general, la primera vez tratando de tener el probador de referencia a nivel local hay algunas acrobacias ruta de archivo hasta llegar a conocer la ruta correcta,
para la ilustración en mi caso la ruta de Windows es "C:\Usuarios\<nombre de usuario>\Appdata\Roaming\MetaQuotes\Terminal\Common\Files".
Este post proporciona pistas: https://www.mql5.com/en/forum/367098#comment_21816898

Where to locate files for Strategy tester to find them
Where to locate files for Strategy tester to find them
  • 2021.04.12
  • Anthony Eric Gillon Dawson
  • www.mql5.com
MT5 has a very bizarre way of handling files...
 
Gunnar Forsgren Strategy Tester.
Method Trained() ha devuelto true en ese punto.
¿Podría tener algo que ver con estar fuera del horario de negociación?

ACTUALIZACIÓN: Es probable que sea un problema con los datos históricos. Corro en modo 'ticks reales'. Probando backtest en un mes más tarde de los datos que funciona. Voy a ver si puedo añadir algo de código que no deje que los datos indefinidos se cuelen sin ser detectados. Veo que hay algunas comprobaciones ahí para m[0] y d[0] indefinidos pero puede que necesite más. Mañana lo compruebo.



Me encanta tu enfoque proactivo. Tienes razón, hay varias excepciones que pueden surgir al intentar obtener datos históricos. Por ejemplo, si se intenta cambiar de marco temporal en medio de una sesión de negociación, puede volver a observarse el problema "-nan".


Había un equilibrio inherente entre mantener el mensaje fácil de seguir y solucionar todos los errores que observé. Si hubiera optado por esto último, el código habría sido necesariamente más complejo y no tan fácil de seguir como lo es ahora. Así que decidí mantenerlo fácil de seguir, con la intención de que pudieras ampliarlo rápidamente.

Tu solución parece muy prometedora, ¿qué tal está resultando?

 
Gunnar Forsgren #:

Mi observación sobre el backtest de 'cada tick' se resolvió exportando explícitamente los archivos de datos del historial de Ticks y Barras desde la lista de Símbolos y guardándolos en una ruta de archivo donde el probador los referenciará.
Los archivos necesitan cubrir el rango de días para los que se realizan las pruebas. Esto puede ser conveniente para un caso de uso en el que un periodo del pasado se utiliza repetidamente para mejorar una estrategia.
Por defecto el probador descarga estos datos de la red en cada ejecución de prueba y aparentemente a veces esto no es fiable. Mantener estos datos localmente parece funcionar mejor.
Por lo general, la primera vez tratando de tener el probador de referencia a nivel local hay algunas acrobacias ruta de archivo hasta llegar a conocer la ruta correcta,
para la ilustración en mi caso la ruta de Windows es "C:\Usuarios\<nombre de usuario>\Appdata\Roaming\MetaQuotes\Terminal\Common\Files".
Este post proporciona pistas: https://www.mql5.com/en/forum/367098#comment_21816898

Sí, efectivamente, tener los datos localmente es una gran mejora. Al tener los datos localmente ponemos la mesa para ir más allá de modificar los coeficientes de nuestra regresión lineal, también podríamos optimizar los parámetros de nuestros indicadores técnicos sobre la marcha. Has dado en el clavo.

Gracias por compartir el enlace. Ya encontraré tiempo para revisarlo.