Programación en MQL5 (IV)

Trading Meetings  » Tutoriales »  Programación en MQL5 (IV)
Programación en MQL5 - 4. Temas Intermedios
0 Comments 20:26

 
 

En este capítulo, profundizaremos en técnicas avanzadas de gestión de riesgos en MQL5. Aprenderemos a calcular el tamaño de posición basado en el capital o el stop loss, implementar reglas de gestión de dinero y utilizar estrategias como la lotería fraccionada y escalonada. También exploraremos cómo integrar estas técnicas en tus Expert Advisors (EAs) para maximizar la eficiencia y minimizar los riesgos.


El cálculo del tamaño de posición es una parte fundamental de la gestión de riesgos. Puedes basar el tamaño de la posición en el capital disponible o en la distancia del stop loss. A continuación, te mostramos cómo implementar ambos métodos.

Ejemplo Práctico: Cálculo del Tamaño de Posición


Explicación del Código

  1. Cálculo Basado en Capital:
    • Usa el saldo de la cuenta y el porcentaje de riesgo para determinar cuánto capital puedes arriesgar.
    • Divide el monto a arriesgar entre el valor del tick y el tamaño del contrato para calcular el tamaño de lote.
  2. Cálculo Basado en Stop Loss:
    • Usa la distancia del stop loss en pips para calcular cuánto arriesgas por punto.
    • Ajusta el tamaño de lote para que el riesgo total no exceda el porcentaje especificado.
  3. Uso en un EA:
    • Puedes usar cualquiera de estas funciones en un EA para calcular dinámicamente el tamaño de posición antes de abrir una operación.

La gestión de dinero es crucial para proteger tu capital y maximizar las ganancias. A continuación, exploramos dos estrategias populares: Martingale y Anti-Martingale.

  • Descripción: Incrementa el tamaño de la posición después de una pérdida para recuperar el capital perdido.
  • Riesgo: Puede llevar a grandes pérdidas si la racha negativa continúa.
  • Descripción: Incrementa el tamaño de la posición después de una ganancia para capitalizar las rachas positivas.
  • Ventaja: Reduce el riesgo al no aumentar el tamaño de lote durante rachas negativas.

Interpretación de las Estrategias

  • Martingale: Es agresivo y puede ser peligroso si no se gestiona adecuadamente. Se recomienda usarlo con precaución y siempre con un stop loss estricto.
  • Anti-Martingale: Es más conservador y adecuado para traders que buscan proteger su capital mientras aprovechan rachas positivas.

Las estrategias de lotería fraccionada y escalonada permiten gestionar el riesgo dividiendo la posición en partes más pequeñas.

  • Descripción: Divide el capital en fracciones para abrir múltiples posiciones más pequeñas en lugar de una sola grande.
  • Ventaja: Reduce el impacto de una sola operación fallida.
  • Descripción: Abre posiciones adicionales a medida que el mercado se mueve en tu favor.
  • Ventaja: Maximiza las ganancias en tendencias fuertes.

Interactividad: Ejercicios Prácticos

Ver solución:

A continuación, te proporciono el código modificado para calcular el tamaño de lote incluyendo un multiplicador basado en la volatilidad del mercado . La volatilidad se calcula utilizando el Average True Range (ATR) , que es un indicador comúnmente utilizado para medir la volatilidad.


Código Modificado: Cálculo del Tamaño de Lote con Multiplicador de Volatilidad


Explicación del Código

  1. Parámetros de Entrada:
    • RiskPercentage: Define el porcentaje del saldo que estás dispuesto a arriesgar en cada operación.
    • StopLossPips: Define la distancia del stop loss en pips.
    • ATRPeriod: Define el período para calcular el Average True Range (ATR), que mide la volatilidad del mercado.
  2. Cálculo del Monto a Arriesgar:
    • El monto a arriesgar se calcula como un porcentaje del saldo de la cuenta (balance).
  3. Cálculo del ATR (Volatilidad):
    • Usamos la función iATR para calcular el ATR actual del símbolo y período seleccionados.
    • El ATR actúa como un multiplicador de volatilidad. Si el mercado es más volátil, el multiplicador será mayor, lo que reduce el tamaño de lote para compensar el mayor riesgo.
  4. Ajuste del Tamaño de Lote:
    • Dividimos el monto a arriesgar entre el producto de la distancia del stop loss, el valor del punto y el multiplicador de volatilidad.
    • Esto asegura que el tamaño de lote sea más pequeño en mercados volátiles y más grande en mercados tranquilos.
  5. Manejo de Errores:
    • Si el ATR es cero (lo cual es improbable pero posible en ciertos casos), usamos un valor predeterminado de 1.0 para evitar divisiones por cero.
  6. Resultado Final:
    • El tamaño de lote se redondea hacia abajo usando MathFloor y se asegura de que no sea menor a 0.01.

Resultado Esperado

Cuando ejecutes este código, el tamaño de lote se ajustará dinámicamente según la volatilidad del mercado:

  • En mercados tranquilos (bajo ATR), el tamaño de lote será mayor porque el riesgo es menor.
  • En mercados volátiles (alto ATR), el tamaño de lote será menor para reducir el riesgo asociado con movimientos bruscos del precio.

Por ejemplo:

  • Si el ATR es bajo (mercado tranquilo), podrías obtener un tamaño de lote de 0.10.
  • Si el ATR es alto (mercado volátil), podrías obtener un tamaño de lote de 0.05.

Interpretación del Cambio

Este ejercicio mejora el cálculo del tamaño de lote al incorporar un multiplicador de volatilidad basado en el ATR. Esto es útil porque:

  • Reduce el riesgo en mercados volátiles, donde los movimientos impredecibles pueden llevar a pérdidas rápidas.
  • Maximiza el uso del capital en mercados tranquilos, donde el riesgo es menor y puedes permitirte posiciones más grandes.

Casos Prácticos

Este tipo de cálculo puede ser utilizado para:

  • Adaptar dinámicamente el tamaño de posición a las condiciones del mercado.
  • Reducir el impacto de eventos volátiles, como noticias económicas o rupturas técnicas.
  • Mejorar la gestión de riesgos en estrategias automatizadas.

¡Espero que este ejemplo te ayude a entender cómo integrar la volatilidad en el cálculo del tamaño de lote en MQL5!


Ver solución:

A continuación, te proporciono el código de una estrategia de gestión de dinero combinada que utiliza tanto Martingale como Anti-Martingale , ajustando el tamaño de la posición según el rendimiento reciente. He añadido comentarios detallados para explicar cada parte del código.



Explicación del Código

  1. Parámetros de Entrada:
    • BaseLotSize: Define el tamaño base de lote para las operaciones.
    • PerformanceLookback: Número de operaciones recientes utilizadas para evaluar el rendimiento.
    • ProfitThreshold: Umbral de ganancia (en %) para activar la estrategia Anti-Martingale.
    • LossThreshold: Umbral de pérdida (en %) para activar la estrategia Martingale.
  2. Cálculo del Rendimiento Reciente:
    • La función CalculateRecentPerformance itera sobre las últimas operaciones cerradas (HistoryDealsTotal) y calcula el rendimiento promedio en porcentaje.
    • El rendimiento se limita a las últimas PerformanceLookback operaciones para enfocarse en el desempeño reciente.
  3. Ajuste del Tamaño de Lote:
    • Si el rendimiento supera el umbral de ganancia (ProfitThreshold), se activa la estrategia Anti-Martingale , incrementando el tamaño de lote en un 50%.
    • Si el rendimiento cae por debajo del umbral de pérdida (LossThreshold), se activa la estrategia Martingale , duplicando el tamaño de lote.
    • Si el rendimiento está dentro del rango neutro, se mantiene el tamaño base de lote.
  4. Apertura de Posiciones:
    • La función OpenPosition abre una nueva posición con el tamaño de lote calculado, utilizando stop loss y take profit predefinidos.

Resultado Esperado

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

  • Si el rendimiento reciente es positivo (por ejemplo, +15%):
  • Si el rendimiento reciente es negativo (por ejemplo, -10%):
  • Si el rendimiento reciente está dentro del rango neutro:

Interpretación del Cambio

Este ejercicio implementa una estrategia de gestión de dinero combinada que adapta dinámicamente el tamaño de lote según el rendimiento reciente. Esto es útil porque:

  • Anti-Martingale: Capitaliza las rachas positivas al aumentar el tamaño de lote cuando el rendimiento es bueno.
  • Martingale: Intenta recuperar pérdidas al aumentar el tamaño de lote después de una racha negativa.
  • Rango Neutro: Mantiene el tamaño base de lote cuando el rendimiento no es ni demasiado bueno ni demasiado malo, evitando movimientos agresivos innecesarios.

Casos Prácticos

Esta estrategia puede ser utilizada para:

  • Adaptar el tamaño de posición a las condiciones actuales del mercado y al desempeño reciente.
  • Reducir el riesgo durante períodos de incertidumbre al mantener el tamaño base de lote.
  • Maximizar las ganancias durante rachas positivas mientras intenta recuperar pérdidas durante rachas negativas.

¡Espero que este ejemplo te ayude a entender cómo combinar estrategias de gestión de dinero en MQL5!


Ver solución:

A continuación, te proporciono el código de un Expert Advisor (EA) que utiliza la lotería fraccionada para abrir tres posiciones con diferentes niveles de stop loss y take profit . He añadido comentarios detallados para explicar cada parte del código.


Explicación del Código

  1. Parámetros de Entrada:
    • TotalRiskPercentage: Define el porcentaje total del saldo que estás dispuesto a arriesgar en las tres posiciones combinadas.
    • NumberOfPositions: Número de posiciones que se abrirán (en este caso, 3).
    • StopLossPips y TakeProfitPips: Arrays que definen las distancias de stop loss y take profit para cada posición.
  2. Lotería Fraccionada:
    • El riesgo total (TotalRiskPercentage) se divide entre el número de posiciones (NumberOfPositions) para calcular el riesgo por posición.
    • Cada posición tiene un tamaño de lote diferente basado en su distancia de stop loss.
  3. Cálculo del Tamaño de Lote:
    • La función CalculateLotSize calcula el tamaño de lote para cada posición dividiendo el monto a arriesgar entre el valor del punto y el tamaño del contrato.
    • Esto asegura que el riesgo por posición sea proporcional al stop loss.
  4. Apertura de Posiciones:
    • Se abren tres posiciones con diferentes niveles de stop loss y take profit.
    • Cada posición tiene un tamaño de lote ajustado según su nivel de riesgo.
  5. Manejo de Errores:
    • Si una posición no se abre correctamente, se muestra un mensaje de error con el código correspondiente.

Resultado Esperado

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

  • Para la primera posición:
  • Para la segunda posición:
  • Para la tercera posición:

Interpretación del Cambio

Este ejercicio implementa una estrategia de lotería fraccionada , donde el riesgo total se divide en múltiples posiciones con diferentes niveles de stop loss y take profit. Esto es útil porque:

  • Reduce el impacto de una sola operación fallida al distribuir el riesgo en varias posiciones.
  • Permite aprovechar diferentes escenarios de mercado al tener múltiples objetivos de take profit.
  • Mejora la gestión de riesgos al ajustar dinámicamente el tamaño de lote según el stop loss de cada posición.

Casos Prácticos

Esta estrategia puede ser utilizada para:

  • Diversificar el riesgo en mercados volátiles o inciertos.
  • Aprovechar diferentes niveles de soporte y resistencia al configurar múltiples stop loss y take profit.
  • Implementar una gestión de riesgos más robusta en estrategias automatizadas.

¡Espero que este ejemplo te ayude a entender cómo implementar la lotería fraccionada en MQL5!


En el próximo capítulo, exploraremos cómo implementar notificaciones, registros de eventos y alertas visuales en MQL5.

¡Sigue practicando y perfeccionando tus habilidades en MQL5!

 
 


Deja una respuesta