Programación en MQL5 (VI)

Trading Meetings  » Tutoriales »  Programación en MQL5 (VI)
Programación en MQL5 - 6. Caso práctico completo
0 Comments 18:59

 
 

¡Bienvenido al Tutorial de MQL5!
Este material está diseñado para traders y desarrolladores que ya tienen nociones básicas de programación (variables, bucles, condicionales, etc.). Aunque repasaremos los comandos y estructuras principales de MQL5, el enfoque está en aplicar conceptos prácticos para desarrollar Expert Advisors (EAs), indicadores y scripts.

Si eres completamente nuevo en programación, te recomendamos:

  1. Consultar la documentación oficial de MQL5 para comprender los fundamentos del lenguaje.
  2. Practicar con los 60+ ejercicios y ejemplos resueltos de este tutorial, que van desde lo básico hasta lo avanzado.
  3. Empezar con proyectos simples (como indicadores básicos o scripts de alertas) antes de abordar EAs complejos.

Este tutorial no solo te enseñará a codificar, sino que también te guiará en la implementación de estrategias reales, gestión de riesgos y optimización. ¡Manos a la obra!

¡Esperamos que disfrutes este tutorial y que te conviertas en un experto en MQL5! 🚀

Sumario:

 
   
 

En este capítulo, aprenderemos a desarrollar un Expert Advisor (EA) completo desde cero. Elegiremos una estrategia comercial conocida, la implementaremos paso a paso en MQL5 y realizaremos pruebas en tiempo real para ajustar su rendimiento. Este proceso incluye análisis, codificación, pruebas y optimización.


Estrategia Seleccionada: Cruce de Medias Móviles

La estrategia de cruce de medias móviles es una de las más populares entre los traders. Su lógica es simple:

  • Compra cuando la media móvil rápida cruza por encima de la media móvil lenta.
  • Vende cuando la media móvil rápida cruza por debajo de la media móvil lenta.

Ventajas:

  • Fácil de implementar.
  • Funciona bien en mercados con tendencias claras.

Desventajas:

  • Puede generar señales falsas en mercados laterales.
  • Requiere ajustes para diferentes símbolos y temporalidades.

Parámetros Clave:

  • FastPeriod : Período de la media móvil rápida (por ejemplo, 10).
  • SlowPeriod : Período de la media móvil lenta (por ejemplo, 50).
  • Stop Loss y Take Profit : Niveles de gestión de riesgo.

A continuación, desarrollaremos el EA siguiendo estos pasos:

  1. Definición de Parámetros de Entrada
    • Configuramos los períodos de las medias móviles y los niveles de stop loss/take profit.
  2. Cálculo de las Medias Móviles
    • Usamos la función iMA() para calcular las medias móviles rápida y lenta.
  3. Lógica de Apertura de Posiciones
    • Implementamos condiciones para abrir posiciones de compra o venta basadas en cruces.
  4. Gestión de Riesgos
    • Añadimos stop loss y take profit para proteger nuestras operaciones.
  5. Control de Posiciones Abiertas
    • Evitamos abrir múltiples posiciones simultáneas.

Código Completo del EA


Explicación del Código

  1. Parámetros de Entrada:
    • Los parámetros como FastPeriod, SlowPeriod, StopLossPips y TakeProfitPips permiten personalizar la estrategia.
  2. Cálculo de Medias Móviles:
    • La función iMA() calcula las medias móviles rápida y lenta usando los precios de cierre.
  3. Condiciones de Cruce:
    • Si la media móvil rápida cruza por encima de la lenta, se abre una posición de compra.
    • Si cruza por debajo, se abre una posición de venta.
  4. Gestión de Riesgos:
    • Los niveles de stop loss y take profit se calculan en función de los pips configurados.
  5. Control de Posiciones:
    • La variable tradeAllowed asegura que no se abran múltiples posiciones simultáneas.

Pruebas en Cuenta Demo

Antes de usar el EA en una cuenta real, es crucial realizar pruebas exhaustivas en una cuenta demo. Sigue estos pasos:

  1. Configuración del Entorno:
    • Usa MetaTrader 5 con datos históricos precisos.
    • Asegúrate de que el EA esté vinculado al gráfico correcto.
  2. Simulación de Condiciones Reales:
    • Activa el modo «Ticks generados a partir de datos reales» en el simulador.
    • Ejecuta el EA en diferentes temporalidades (M15, H1, etc.) y símbolos (EURUSD, GBPUSD, etc.).
  3. Análisis de Resultados:
    • Evalúa métricas clave como ganancia/pérdida neta, drawdown máximo y ratio de acierto.
    • Identifica patrones de fallos (por ejemplo, señales falsas en mercados laterales).
  4. Ajustes Finales:
    • Modifica los parámetros (por ejemplo, aumenta el período de la media móvil lenta para reducir señales falsas).
    • Ajusta los niveles de stop loss y take profit según el comportamiento del mercado.

Gráficos e Imágenes

Incluye gráficos que muestren:

  • Ejemplos de cruces de medias móviles en el gráfico.
  • Resultados de backtesting (ganancias, drawdown, etc.).
  • Comparación de rendimiento antes y después de los ajustes.

Interactividad: Ejercicios Prácticos

Ver solución:

A continuación, te proporciono el código modificado del EA original para incluir un filtro adicional basado en el RSI . Este filtro ayuda a evitar señales falsas al asegurarse de que las condiciones de sobrecompra (RSI > 70) o sobreventa (RSI < 30) respalden las señales de cruce de medias móviles.


Explicación del Código

  1. Parámetros Adicionales para el RSI:
    • RSIPeriod: Define el período del indicador RSI (por defecto, 14).
    • OverboughtLevel y OversoldLevel: Establecen los umbrales de sobrecompra (70) y sobreventa (30).
  2. Cálculo del RSI:
    • La función iRSI() calcula el valor actual del RSI usando los precios de cierre.
  3. Filtro RSI Aplicado:
    • Para abrir una posición de compra:
      • Se requiere que la media móvil rápida cruce por encima de la lenta y que el RSI esté por debajo del nivel de sobreventa (rsiValue < OversoldLevel).
    • Para abrir una posición de venta:
      • Se requiere que la media móvil rápida cruce por debajo de la lenta y que el RSI esté por encima del nivel de sobrecompra (rsiValue > OverboughtLevel).
  4. Evitar Señales Falsas:
    • El filtro RSI reduce el riesgo de señales falsas en mercados laterales, donde los cruces de medias móviles pueden ser poco confiables.

Resultado Esperado

Con este filtro adicional, el EA ahora solo abrirá posiciones cuando:

  • Las condiciones de cruce de medias móviles coincidan con las lecturas del RSI.
  • Esto mejora la precisión de las señales y reduce operaciones innecesarias.

Ejemplo de salida en la ventana de resultados:


Interpretación del Cambio

Este ejercicio mejora el EA original al añadir un filtro RSI que valida las señales de cruce de medias móviles. Esto es útil porque:

  • Reduce el número de señales falsas, especialmente en mercados laterales.
  • Aumenta la probabilidad de éxito al combinar múltiples indicadores técnicos.
  • Proporciona un enfoque más robusto para la toma de decisiones automatizadas.

Casos Prácticos

Este EA modificado puede ser utilizado para:

  • Implementar estrategias de trading más avanzadas que combinen múltiples indicadores.
  • Mejorar la precisión de las señales en diferentes símbolos y temporalidades.
  • Probar cómo los filtros adicionales afectan el rendimiento general del sistema.

¡Espero que esta solución te ayude a entender cómo mejorar tus EAs con filtros adicionales en MQL5!


Ver solución:

En este ejercicio, realizaremos un backtest del EA desarrollado en el Capítulo 18 (con o sin el filtro RSI) en diferentes temporalidades (por ejemplo, M5, M15, H1) y compararemos los resultados. A continuación, te explico cómo realizar el proceso paso a paso, junto con un análisis de los resultados.


Paso 1: Configuración del Entorno

Antes de realizar el backtest, asegúrate de tener lo siguiente:

  1. Datos Históricos Precisos:
    • Descarga datos históricos de alta calidad para el símbolo que deseas probar (por ejemplo, EURUSD).
    • Usa el menú Herramientas > Historia del Centro en MetaTrader 5 para descargar datos completos.
  2. Configuración del Simulador:
    • Abre la ventana de Estrategia Tester (Ctrl + R).
    • Selecciona el EA que deseas probar.
    • Configura las siguientes opciones:
      • Modelo: «Ticks generados a partir de datos reales».
      • Símbolo: El activo que deseas probar (por ejemplo, EURUSD).
      • Temporalidad: Comienza con M5, luego prueba M15 y H1.
  3. Parámetros del EA:
    • Usa los mismos parámetros para todas las pruebas para garantizar una comparación justa. Por ejemplo:
      • FastPeriod = 10
      • SlowPeriod = 50
      • StopLossPips = 50
      • TakeProfitPips = 100
      • Si usas el filtro RSI, configura:
        • RSIPeriod = 14
        • OverboughtLevel = 70
        • OversoldLevel = 30

Paso 2: Realización del Backtest

Realiza el backtest en las siguientes temporalidades:

  1. M5 (5 minutos):
    • Intervalo de tiempo: Últimos 6 meses.
    • Resultados esperados: Mayor número de operaciones debido a la mayor frecuencia de señales.
  2. M15 (15 minutos):
    • Intervalo de tiempo: Últimos 6 meses.
    • Resultados esperados: Menor número de operaciones que en M5, pero posiblemente mayor precisión.
  3. H1 (1 hora):
    • Intervalo de tiempo: Últimos 6 meses.
    • Resultados esperados: Menor número de operaciones, pero señales más confiables debido a la tendencia más clara.

Paso 3: Análisis de Resultados

Después de realizar el backtest, compara los resultados en función de las siguientes métricas clave:

  1. Número Total de Operaciones:
    • Cuántas operaciones se abrieron en cada temporalidad.
  2. Ganancia/Pérdida Neta:
    • La diferencia entre las ganancias y pérdidas totales.
  3. Ratio de Acierto:
    • Porcentaje de operaciones ganadoras.
  4. Drawdown Máximo:
    • La mayor pérdida consecutiva experimentada durante el período de prueba.
  5. Factor de Recuperación:
    • Indica cuán rápido el EA recupera pérdidas.

Resultados Esperados (Ejemplo)


Interpretación de los Resultados

  1. M5 (5 minutos):
    • Ventajas: Mayor número de operaciones, lo que puede generar más oportunidades de ganancia.
    • Desventajas: Mayor ruido en los datos, lo que puede llevar a más señales falsas y un drawdown más alto.
  2. M15 (15 minutos):
    • Ventajas: Equilibrio entre frecuencia de señales y precisión. Menor drawdown que en M5.
    • Desventajas: Menor número de operaciones que en M5.
  3. H1 (1 hora):
    • Ventajas: Señales más confiables debido a la tendencia más clara. Drawdown más bajo.
    • Desventajas: Menor número de operaciones, lo que limita el potencial de ganancias.

Gráficos e Imágenes

Incluye gráficos para visualizar los resultados:

  1. Gráfico de Ganancia/Pérdida por Temporalidad:
    • Un gráfico de barras que muestre la ganancia neta en M5, M15 y H1.
  2. Curva de Equity:
    • Una curva de equity para cada temporalidad, mostrando cómo evoluciona el saldo de la cuenta.
  3. Comparación de Métricas:
    • Una tabla o gráfico comparativo de métricas como ratio de acierto y drawdown máximo.

Conclusión

El backtest demuestra que la elección de la temporalidad tiene un impacto significativo en el rendimiento del EA:

  • M5: Ideal para traders que buscan muchas operaciones, pero con mayor riesgo.
  • M15: Ofrece un equilibrio entre frecuencia de señales y precisión.
  • H1: Mejor para traders conservadores que priorizan señales confiables y menor drawdown.

Este análisis te permite seleccionar la temporalidad que mejor se adapte a tu estilo de trading y objetivos.


Recomendaciones Finales

  1. Optimización:
    • Prueba diferentes combinaciones de parámetros (por ejemplo, períodos de medias móviles y niveles de RSI) para mejorar el rendimiento en cada temporalidad.
  2. Pruebas en Cuenta Demo:
    • Antes de usar el EA en una cuenta real, realiza pruebas en tiempo real en una cuenta demo para validar los resultados del backtest.
  3. Monitoreo Continuo:
    • Supervisa el rendimiento del EA en diferentes condiciones de mercado para detectar áreas de mejora.

¡Espero que esta solución te ayude a entender cómo realizar y analizar backtests en MQL5!


Ver solución:

A continuación, te proporciono el código modificado del EA para implementar un sistema de gestión de capital dinámico . Este sistema ajusta automáticamente el tamaño del lote en función del saldo de la cuenta y un porcentaje máximo de riesgo predefinido.



Explicación del Código

  1. Parámetro de Riesgo (RiskPercent):
    • Define el porcentaje del saldo de la cuenta que estás dispuesto a arriesgar en cada operación (por ejemplo, 1%).
  2. Cálculo del Tamaño del Lote Dinámico:
    • La función CalculateDynamicLotSize() calcula el tamaño del lote en función del saldo de la cuenta, el riesgo porcentual y el stop loss.
    • Usa el valor de un pip (pipValue) para determinar cuánto representa un pip en términos monetarios.
    • Ajusta el tamaño del lote al mínimo, máximo y paso permitidos por el bróker.
  3. Normalización del Lote:
    • El tamaño del lote se ajusta al paso mínimo (SYMBOL_VOLUME_STEP) y se asegura de que no exceda los límites (SYMBOL_VOLUME_MIN y SYMBOL_VOLUME_MAX).
  4. Apertura de Posiciones:
    • Las funciones OpenBuyPosition() y OpenSellPosition() utilizan el tamaño del lote calculado dinámicamente para abrir posiciones.

Resultado Esperado

Con este sistema de gestión de capital, el EA ajustará automáticamente el tamaño del lote según el saldo de la cuenta y el riesgo definido. Por ejemplo:

  • Si el saldo de la cuenta es $10,000 y el riesgo es 1%, el EA arriesgará $100 por operación.
  • Si el stop loss es de 50 pips y el valor de un pip es $10, el tamaño del lote será:

Ejemplo de salida en la ventana de resultados:


Interpretación del Cambio

Este ejercicio mejora el EA original al añadir un sistema de gestión de capital dinámico. Esto es útil porque:

  • Reduce el riesgo al limitar la exposición en cada operación.
  • Ajusta automáticamente el tamaño del lote según el saldo de la cuenta, lo que facilita su uso en diferentes cuentas y condiciones.
  • Proporciona un enfoque más profesional y seguro para el trading automatizado.

Casos Prácticos

Este EA modificado puede ser utilizado para:

  • Implementar estrategias de trading con un enfoque en la gestión de riesgos.
  • Adaptarse a diferentes tamaños de cuenta sin necesidad de ajustes manuales.
  • Probar cómo la gestión de capital afecta el rendimiento general del sistema.

¡Espero que esta solución te ayude a entender cómo implementar un sistema de gestión de capital dinámico en MQL5!


¡Sigue practicando y perfeccionando tus habilidades en MQL5!

 
 


Deja una respuesta