Programación en MQL5 (III)

Trading Meetings  » Tutoriales »  Programación en MQL5 (III)
Programación en MQL5 - 3. Construcción de Estrategias Automatizadas
0 Comments 20:49

 
 

En este capítulo, aprenderemos cómo configurar y ejecutar pruebas de backtesting en MQL5, interpretar los resultados clave como rendimiento, drawdown y ratio Sharpe, y optimizar los parámetros de un Expert Advisor (EA) mediante pruebas automatizadas. Estas habilidades son esenciales para evaluar la efectividad de una estrategia antes de operar en tiempo real.


El Strategy Tester de MetaTrader 5 es una herramienta poderosa que permite simular estrategias en datos históricos. Aquí te mostramos cómo configurarlo correctamente:

Pasos para Configurar el Backtesting

  1. Abrir el Strategy Tester:
    • En MetaTrader 5, haz clic en View > Strategy Tester o presiona Ctrl + R.
    • Asegúrate de que el EA que deseas probar esté adjunto al gráfico.
  2. Seleccionar el Símbolo y el Período:
    • En el panel izquierdo del Strategy Tester, selecciona el símbolo (por ejemplo, EURUSD) y la temporalidad (por ejemplo, H1).
  3. Configurar el Modelo de Ejecución:
    • Elige el modelo de ejecución:
      • Every tick : Simula cada tick histórico. Es el más preciso pero consume más recursos.
      • 1 minute OHLC : Usa los precios de apertura, máximo, mínimo y cierre por minuto. Es más rápido pero menos preciso.
    • Recomendación: Usa Every tick para resultados más confiables.
  4. Definir el Intervalo de Datos:
    • Selecciona el rango de fechas para el backtesting. Por ejemplo, desde 2020.01.01 hasta 2023.01.01.
  5. Configurar el Modo de Prueba:
    • Elige entre:
      • Backtesting : Simula la estrategia en datos históricos.
      • Optimización : Ajusta automáticamente los parámetros para encontrar los valores óptimos.
  6. Iniciar el Backtesting:
    • Haz clic en Start para comenzar la simulación.

Ejemplo Práctico: Configuración del Backtesting

Supongamos que queremos probar un EA basado en medias móviles en el símbolo EURUSD con datos históricos desde 2020.01.01 hasta 2023.01.01. Configuramos el Strategy Tester como sigue:

  • Símbolo: EURUSD
  • Período: H1
  • Modelo de Ejecución: Every tick
  • Intervalo de Datos: 2020.01.01 - 2023.01.01
  • Modo de Prueba: Backtesting

Una vez configurado, iniciamos la prueba y observamos los resultados.


Después de ejecutar el backtesting, el Strategy Tester genera un informe detallado. A continuación, explicamos los indicadores clave:

  1. Rendimiento Total:
    • Representa la ganancia neta obtenida durante el período de prueba.
    • Fórmula:
      Rendimiento Total = Ganancias Totales − Pérdidas Totales
  2. Drawdown Máximo:
    • Indica la mayor caída en el balance de la cuenta desde un pico hasta un valle.
    • Un drawdown alto sugiere un mayor riesgo.
    • Fórmula:
      Drawdown Máximo = Balance Inicial / Diferencia entre Pico y Valle​
  3. Ratio Sharpe:
    • Mide el rendimiento ajustado al riesgo. Un valor positivo indica que la estrategia supera el riesgo asumido.
    • Fórmula:
      Ratio Sharpe = (Rendimiento Promedio − Tasa Libre de Riesgo)​ / Desviación Estándar de los Retornos​

Ejemplo Práctico: Interpretación de Resultados
Supongamos que el informe del backtesting muestra lo siguiente:

  • Rendimiento Total: +15%
  • Drawdown Máximo: 8%
  • Ratio Sharpe: 1.2

Interpretación:

  • La estrategia generó un rendimiento positivo del 15%, lo cual es bueno.
  • El drawdown máximo del 8% sugiere un nivel moderado de riesgo.
  • El ratio Sharpe de 1.2 indica que la estrategia tiene un buen equilibrio entre rendimiento y riesgo.

La optimización automática permite ajustar los parámetros de un EA para maximizar su rendimiento. Esto se hace mediante el modo de optimización del Strategy Tester.

Pasos para Optimizar Parámetros

  1. Definir Parámetros a Optimizar:
    • En el código del EA, usa la palabra clave input para definir los parámetros ajustables. Por ejemplo:
  1. Configurar el Modo de Optimización:
    • En el Strategy Tester, selecciona Optimization en lugar de Backtesting.
    • Define los rangos y pasos para cada parámetro. Por ejemplo:
      • FastMAPeriod: De 5 a 20, paso 1.
      • SlowMAPeriod: De 30 a 100, paso 5.
  2. Elegir el Criterio de Optimización:
    • Selecciona un criterio como Profit Factor, Sharpe Ratio o Max Drawdown.
  3. Iniciar la Optimización:
    • Haz clic en Start para ejecutar la optimización. El Strategy Tester probará todas las combinaciones posibles dentro de los rangos definidos.

Ejemplo Práctico: Optimización de Parámetros

Supongamos que queremos optimizar los períodos de las medias móviles (FastMAPeriod y SlowMAPeriod). Configuramos la optimización como sigue:

  • FastMAPeriod: De 5 a 20, paso 1.
  • SlowMAPeriod: De 30 a 100, paso 5.
  • Criterio de Optimización: Profit Factor.

Después de ejecutar la optimización, el Strategy Tester muestra las mejores combinaciones de parámetros. Por ejemplo:

  • Mejor Combinación:
    • FastMAPeriod = 12
    • SlowMAPeriod = 50
    • Profit Factor: 1.8

Interpretación:

  • Esta combinación de parámetros maximiza el factor de ganancia, lo que sugiere que es la más efectiva.

Interactividad: Ejercicios Prácticos

Ver solución:

Este es un EA simple que abre posiciones largas cuando el precio sube por encima de una media móvil y cierra las posiciones cuando el precio cae por debajo de la misma. Es solo un ejemplo para ilustrar cómo configurar el Strategy Tester.


Explicación del Código

  1. Parámetros de Entrada:
    • MAPeriod: Define el período de la media móvil.
    • LotSize: Define el tamaño de lote para las operaciones.
  2. Lógica del EA:
    • El EA calcula una media móvil simple (iMA) y abre una posición larga si el precio de cierre (Close[0]) está por encima de la media móvil.
    • Cierra la posición si el precio de cierre cae por debajo de la media móvil.
  3. Funciones Principales:
    • OpenBuyPosition: Abre una posición larga con stop loss y take profit predefinidos.
    • CloseOpenPosition: Cierra todas las posiciones abiertas.
  4. Comentarios:
    • Los comentarios explican cada paso del código para facilitar su comprensión.

Configuración del Strategy Tester

  1. Paso 1: Adjuntar el EA al Gráfico
    • Guarda el archivo .mq5 del EA en la carpeta Experts de tu terminal MetaTrader 5.
    • Adjunta el EA al gráfico de GBPUSD.
  2. Paso 2: Configurar el Strategy Tester
    • Abre el Strategy Tester (Ctrl + R).
    • Configura los siguientes parámetros:
      • Símbolo: GBPUSD
      • Período: H1 (u otro temporalidad según tus necesidades)
      • Modelo de Ejecución: Every tick (para mayor precisión)
      • Intervalo de Datos: Desde 2019.01.01 hasta 2022.01.01
      • Modo de Prueba: Backtesting
  3. Paso 3: Ejecutar el Backtesting
    • Haz clic en Start para iniciar el backtesting.

Análisis de Resultados

Una vez completado el backtesting, el Strategy Tester generará un informe con los siguientes resultados clave:

  1. Rendimiento Total:
    • Observa el campo Net Profit en el informe. Por ejemplo:
  1. Drawdown Máximo:
    • Observa el campo Maximal Drawdown en el informe. Por ejemplo:
  1. Interpretación:
    • Si el rendimiento total es positivo y el drawdown máximo es bajo (por ejemplo, menos del 10%), la estrategia puede ser prometedora.
    • Un drawdown alto sugiere que la estrategia es arriesgada y podría requerir ajustes.

Resultado Esperado

Cuando ejecutes este backtesting, podrías obtener resultados similares a estos:

  • Rendimiento Total: +$2,500
  • Drawdown Máximo: 8.5%
  • Número de Operaciones Ganadoras: 60%
  • Factor de Ganancia: 1.5

Esto indica que la estrategia generó ganancias netas significativas con un nivel moderado de riesgo.


Caso Práctico

Este ejercicio demuestra cómo configurar y ejecutar un backtesting básico en MQL5. Aunque el EA utilizado es simple, puedes aplicar los mismos pasos para probar estrategias más complejas. Además, analizar métricas como el rendimiento total y el drawdown máximo te ayuda a evaluar la viabilidad de una estrategia antes de operar en tiempo real.

¡Espero que este ejemplo te ayude a familiarizarte con el proceso de backtesting en MQL5!

Ver solución:

Este es un EA simple que abre posiciones largas cuando la media móvil rápida cruza por encima de la lenta y posiciones cortas cuando la media móvil rápida cruza por debajo de la lenta.


Explicación del Código

  1. Parámetros de Entrada:
    • FastMAPeriod: Define el período de la media móvil rápida. Este parámetro será optimizado entre 8 y 15.
    • SlowMAPeriod: Define el período de la media móvil lenta. Este parámetro será optimizado entre 40 y 80.
    • LotSize: Define el tamaño de lote para las operaciones.
  2. Lógica del EA:
    • El EA calcula dos medias móviles: una rápida (FastMAPeriod) y una lenta (SlowMAPeriod).
    • Si la media rápida cruza por encima de la lenta, abre una posición larga.
    • Si la media rápida cruza por debajo de la lenta, abre una posición corta.
    • Cierra las posiciones si las medias móviles cruzan en sentido contrario.
  3. Funciones Principales:
    • OpenBuyPosition: Abre una posición larga con stop loss y take profit predefinidos.
    • OpenSellPosition: Abre una posición corta con stop loss y take profit predefinidos.
    • CloseOpenPosition: Cierra todas las posiciones abiertas cuando las condiciones de cierre se cumplen.

Configuración del Strategy Tester para Optimización

  1. Paso 1: Adjuntar el EA al Gráfico
    • Guarda el archivo .mq5 del EA en la carpeta Experts de tu terminal MetaTrader 5.
    • Adjunta el EA al gráfico de EURUSD (u otro símbolo de tu elección).
  2. Paso 2: Configurar el Strategy Tester
    • Abre el Strategy Tester (Ctrl + R).
    • Configura los siguientes parámetros:
      • Símbolo: EURUSD
      • Período: H1 (u otro temporalidad según tus necesidades)
      • Modelo de Ejecución: Every tick (para mayor precisión)
      • Intervalo de Datos: Desde 2019.01.01 hasta 2022.01.01
      • Modo de Prueba: Optimization
  3. Paso 3: Definir los Rangos de Optimización
    • En la pestaña Inputs, selecciona los parámetros a optimizar:
      • FastMAPeriod: De 8 a 15, paso 1.
      • SlowMAPeriod: De 40 a 80, paso 5.
  4. Paso 4: Seleccionar el Criterio de Optimización
    • En la pestaña Optimization, selecciona Sharpe Ratio como criterio de optimización.
  5. Paso 5: Ejecutar la Optimización
    • Haz clic en Start para iniciar la optimización.

Análisis de Resultados

Una vez completada la optimización, el Strategy Tester generará un informe con las mejores combinaciones de parámetros. Por ejemplo:

  • Mejor Combinación:
    • FastMAPeriod = 12
    • SlowMAPeriod = 50
    • Sharpe Ratio: 1.8

Interpretación:

  • Esta combinación de parámetros maximiza el ratio Sharpe, lo que sugiere que la estrategia tiene un buen equilibrio entre rendimiento y riesgo.

Resultado Esperado

Cuando ejecutes esta optimización, podrías obtener resultados similares a estos:

  • Mejor Combinación de Parámetros:
    • FastMAPeriod = 12
    • SlowMAPeriod = 50
  • Sharpe Ratio: 1.8
  • Rendimiento Total: +$3,000
  • Drawdown Máximo: 7.5%

Esto indica que la estrategia es rentable y tiene un nivel moderado de riesgo.


Caso Práctico

Este ejercicio demuestra cómo optimizar los parámetros de un EA utilizando el Strategy Tester. Al definir rangos para FastMAPeriod y SlowMAPeriod y seleccionar el ratio Sharpe como criterio de optimización, puedes identificar la combinación de parámetros que maximiza el rendimiento ajustado al riesgo. Esto es crucial para desarrollar estrategias robustas y eficientes.

¡Espero que este ejemplo te ayude a entender cómo realizar pruebas automatizadas y optimizar tus EAs en MQL5!

Ver solución:

A continuación, analizamos e interpretamos los resultados proporcionados:


1. Rendimiento Total: +20%

  • Qué significa: El EA generó un rendimiento neto del 20% sobre el capital inicial durante el período de prueba.
  • Interpretación:
    • Este es un resultado positivo, ya que indica que la estrategia fue rentable en el período de backtesting.
    • Sin embargo, es importante evaluar este rendimiento en relación con el riesgo asumido (ver drawdown máximo) y otros indicadores como el ratio Sharpe.

2. Drawdown Máximo: 12%

  • Qué significa: Durante el período de prueba, el balance de la cuenta experimentó una caída máxima del 12% desde un pico hasta un valle.
  • Interpretación:
    • Un drawdown del 12% es moderado. Para muchos traders, un drawdown por debajo del 20% se considera aceptable, pero esto depende de tu tolerancia al riesgo.
    • Si bien el rendimiento total es positivo, un drawdown del 12% sugiere que la estrategia puede ser volátil y podría requerir ajustes para reducir el riesgo.

3. Ratio Sharpe: 0.9

  • Qué significa: El ratio Sharpe mide el rendimiento ajustado al riesgo. Un valor de 0.9 indica que la estrategia genera retornos superiores a la tasa libre de riesgo, pero no de manera excepcional.
  • Interpretación:
    • Un ratio Sharpe mayor a 1 generalmente se considera bueno, ya que indica que la estrategia tiene un buen equilibrio entre rendimiento y riesgo.
    • Un ratio Sharpe de 0.9 está cerca del umbral aceptable, pero podría mejorarse. Esto sugiere que la estrategia tiene un rendimiento decente, pero también asume un nivel de riesgo relativamente alto.

Conclusión General

Basándonos en estos resultados:

  1. Rendimiento vs. Riesgo:
    • La estrategia generó un rendimiento total del 20%, lo cual es positivo.
    • Sin embargo, el drawdown máximo del 12% indica que la estrategia puede ser arriesgada, especialmente si el trader tiene una baja tolerancia al riesgo.
  2. Eficiencia del Riesgo (Ratio Sharpe):
    • El ratio Sharpe de 0.9 sugiere que la estrategia tiene un rendimiento ajustado al riesgo moderado. Aunque no es excelente, tampoco es deficiente.
    • Podrías considerar ajustar los parámetros del EA o implementar mejoras en la gestión de riesgos para aumentar el ratio Sharpe.
  3. Recomendaciones:
    • Mejorar la Gestión de Riesgos: Considera reducir el tamaño de lote o ajustar los niveles de stop loss y take profit para minimizar el drawdown.
    • Optimización: Realiza pruebas adicionales para optimizar los parámetros del EA y mejorar el ratio Sharpe.
    • Validación Adicional: Prueba la estrategia en diferentes períodos de tiempo o símbolos para asegurarte de que los resultados sean consistentes.

Evaluación Final

En resumen:

  • Ventajas: La estrategia es rentable y generó un rendimiento positivo del 20%.
  • Desventajas: El drawdown del 12% y el ratio Sharpe de 0.9 sugieren que la estrategia puede ser arriesgada y no está completamente optimizada.

Si estas métricas son aceptables para tu perfil de riesgo, podrías considerar usar esta estrategia en una cuenta demo para validar su rendimiento en tiempo real antes de operar en una cuenta real.


En el próximo capítulo, exploraremos cómo implementar y monitorear tus EAs en una cuenta real o demo.

¡Sigue practicando y perfeccionando tus habilidades en MQL5!

 
 


Deja una respuesta