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

 
 

¡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, crearemos un Expert Advisor (EA) básico utilizando una estrategia técnica simple: el cruce de medias móviles. Este EA abrirá y cerrará posiciones automáticamente basándose en señales generadas por esta estrategia. Además, implementaremos una gestión de riesgos básica para calcular el tamaño de la posición y establecer niveles adecuados de stop loss y take profit.


El cruce de medias móviles es una estrategia popular que genera señales de compra cuando la media móvil rápida cruza por encima de la lenta, y señales de venta cuando la media móvil rápida cruza por debajo de la lenta.

Ejemplo Práctico: Implementación del Cruce de Medias Móviles

Explicación del Código

  1. Parámetros de Entrada:
    • FastMAPeriod y SlowMAPeriod: Períodos para las medias móviles rápida y lenta.
    • RiskPercentage: Porcentaje de saldo de la cuenta que se arriesga por operación.
    • StopLossPips y TakeProfitPips: Distancias para stop loss y take profit en pips.
  2. Cálculo de Medias Móviles:
    • Usamos la función iMA para calcular las medias móviles rápidas y lentas.
  3. Generación de Señales:
    • Si la media móvil rápida (fastMA) cruza por encima de la lenta (slowMA), generamos una señal de compra.
    • Si la media móvil rápida cruza por debajo de la lenta, generamos una señal de venta.
  4. Gestión de Posiciones:
    • Si no hay posiciones abiertas, intentamos abrir una posición según la señal generada.
    • Si ya hay una posición abierta, la cerramos si las medias móviles cruzan en sentido contrario.
  5. Gestión de Riesgos:
    • La función CalculateLotSize calcula el tamaño de lote basado en el porcentaje de riesgo y el stop loss en pips.
    • Ajustamos el stop loss y take profit dinámicamente según el precio actual.

Las señales de compra y venta se generan automáticamente mediante el cruce de medias móviles. El EA abre posiciones largas o cortas dependiendo de la dirección del cruce.


La gestión de riesgos es crucial para proteger tu capital. En este EA, implementamos las siguientes prácticas:

  1. Cálculo del Tamaño de Lote:
    • Calculamos el tamaño de lote basándonos en el porcentaje de riesgo y el stop loss en pips. Esto asegura que nunca arriesgues más del porcentaje especificado por operación.
  2. Stop Loss y Take Profit:
    • Establecemos niveles fijos de stop loss y take profit para limitar pérdidas y asegurar ganancias.

Interactividad: Ejercicios Prácticos

Ver solución:

Explicación del Código

  1. Cambio de Medias Móviles Simples a Exponenciales:
    • En el cálculo de las medias móviles, hemos reemplazado MODE_SMA por MODE_EMA en las llamadas a la función iMA. Esto cambia el tipo de media móvil utilizada de simple (SMA) a exponencial (EMA).
    • Las medias móviles exponenciales dan más peso a los datos recientes, lo que puede hacer que el EA sea más sensible a cambios recientes en el precio.
  2. Impacto en el Comportamiento del EA:
    • Al usar medias móviles exponenciales, las señales de cruce pueden generarse más rápidamente en comparación con las medias móviles simples. Esto puede resultar en entradas y salidas más rápidas del mercado.
    • Sin embargo, también puede aumentar el riesgo de falsos cruces debido a la mayor sensibilidad a movimientos de precios pequeños.
  3. Comentarios Adicionales:
    • El resto del código permanece igual, ya que la lógica de gestión de posiciones y riesgos no depende del tipo de media móvil utilizado.

Resultado Esperado

Cuando ejecutes este EA modificado, verás mensajes similares a los siguientes en la ventana de resultados:

  • Si se genera una señal de compra:
  • Si se genera una señal de venta:
  • Si se cierra una posición debido a un cruce inverso:

Caso Práctico

Este tipo de modificación es útil para traders que prefieren estrategias más reactivas al movimiento reciente del precio. Las medias móviles exponenciales son ideales para mercados volátiles o cuando se busca capturar tendencias emergentes rápidamente.

¡Espero que este ejemplo te ayude a entender cómo adaptar el tipo de indicador técnico en un EA para ajustarlo a tus necesidades!

Ver solución:

Explicación del Código

  1. Parámetro MaxSpreadPips:
    • Se ha añadido un nuevo parámetro de entrada llamado MaxSpreadPips que define el máximo spread permitido (en este caso, 2 pips).
  2. Cálculo del Spread Actual:
    • En la función OnTick, calculamos el spread actual usando la diferencia entre el precio de compra (SYMBOL_ASK) y el precio de venta (SYMBOL_BID). Dividimos esta diferencia por Point() para convertirla en pips.
  3. Condición de Filtro de Spread:
    • Antes de generar señales de compra o venta, verificamos si el spread actual es menor al máximo permitido (MaxSpreadPips).
    • Si el spread es demasiado alto, mostramos un mensaje indicando que no se abrirá ninguna posición debido al spread elevado.
  4. Impacto en el Comportamiento del EA:
    • Esta condición evita abrir posiciones en momentos de alta volatilidad o liquidez reducida, donde el spread puede ser excesivo y aumentar los costos de trading.
    • Esto mejora la eficiencia del EA al asegurarse de que solo opera en condiciones favorables.

Resultado Esperado

Cuando ejecutes este EA modificado, verás mensajes similares a los siguientes en la ventana de resultados:

  • Si el spread es bajo y se genera una señal de compra:
  • Si el spread es alto:
  • Si se cierra una posición debido a un cruce inverso:

Caso Práctico

Este tipo de filtro es especialmente útil para traders que operan en mercados con spreads variables, como Forex. Al evitar abrir posiciones cuando el spread es alto, reduces los costos iniciales de trading y minimizas el impacto negativo de la falta de liquidez en tus operaciones.

¡Espero que este ejemplo te ayude a entender cómo implementar filtros adicionales para mejorar la robustez de tu EA!

Ver solución:

Explicación del Código

  1. Parámetro TrailingStopPips:
    • Se ha añadido un nuevo parámetro de entrada llamado TrailingStopPips que define la distancia mínima entre el precio actual y el stop loss dinámico.
  2. Función AdjustTrailingStop:
    • Esta función recorre todas las posiciones abiertas y ajusta el stop loss dinámicamente según el movimiento del precio.
    • Para posiciones largas (BUY), el nuevo stop loss se calcula como el precio actual menos la distancia del trailing stop.
    • Para posiciones cortas (SELL), el nuevo stop loss se calcula como el precio actual más la distancia del trailing stop.
  3. Condición de Mejora del Stop Loss:
    • El stop loss solo se ajusta si el nuevo nivel mejora el stop loss actual (es decir, si está más cerca del precio de entrada).
    • Esto asegura que el stop loss nunca retroceda, lo que podría aumentar el riesgo innecesariamente.
  4. Impacto en el Comportamiento del EA:
    • El trailing stop protege las ganancias al mover el stop loss hacia el precio actual a medida que este se mueve en dirección favorable.
    • Esto permite que las posiciones permanezcan abiertas mientras el mercado sigue una tendencia, pero cierra automáticamente la posición si el mercado retrocede.

Resultado Esperado

Cuando ejecutes este EA modificado, verás mensajes similares a los siguientes en la ventana de resultados:

  • Si el trailing stop se ajusta:
  • Si no se puede ajustar el trailing stop:
  • Si se abre una posición:

Caso Práctico

El trailing stop es una herramienta poderosa para proteger ganancias y minimizar pérdidas en mercados volátiles. Al ajustar dinámicamente el stop loss, puedes seguir una tendencia mientras reduces el riesgo de reversión repentina del mercado.

¡Espero que este ejemplo te ayude a entender cómo implementar un trailing stop en tu EA!


En el próximo capítulo, exploraremos cómo optimizar y mejorar este EA mediante pruebas y ajustes finos.

¡Sigue practicando y perfeccionando tus habilidades en MQL5!

 
 


Deja una respuesta