Programación en MQL5 (II)

Trading Meetings  » Tutoriales »  Programación en MQL5 (II)
Programación en MQL5 - 2. Fundamentos de programación
0 Comments 13:43

 
 

En este capítulo, exploraremos cómo trabajar con múltiples símbolos y obtener información sobre la cuenta en MQL5. Estos conceptos son fundamentales para desarrollar estrategias que operen en varios instrumentos financieros y adapten sus parámetros según las características del broker.


Cuando trabajamos con múltiples símbolos, es importante poder acceder a todos los instrumentos disponibles en el mercado y obtener información específica sobre cada uno. Las funciones SymbolsTotal() y SymbolName() nos permiten listar y consultar los símbolos disponibles.

Ejemplo Práctico: Listado de Todos los Símbolos Disponibles

A continuación, mostramos cómo listar todos los símbolos disponibles en el terminal:

Explicación del código:

  • Usamos SymbolsTotal(true) para obtener el número total de símbolos disponibles, incluidos los ocultos.
  • Iteramos sobre cada símbolo usando un bucle for y obtenemos su nombre con SymbolName(i, true).
  • Mostramos una lista de todos los símbolos disponibles en la ventana de resultados.

Al trabajar con diferentes brokers, es crucial normalizar precios y lotes para evitar errores al enviar órdenes. Los brokers pueden tener diferentes reglas para el tamaño mínimo de lote, incremento de lote y precisión de precios.

Ejemplo Práctico: Normalización de Precios y Lotes

A continuación, mostramos cómo normalizar un precio y un volumen para un símbolo específico:

Explicación del código:

  • Usamos SymbolInfoInteger(symbol, SYMBOL_DIGITS) para obtener la precisión del precio del símbolo.
  • Usamos SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP) para obtener el paso mínimo de lote del símbolo.
  • Normalizamos el precio usando NormalizeDouble y ajustamos el volumen al paso de lote utilizando MathCeil.

Las funciones AccountInfoInteger() y AccountInfoDouble() permiten obtener información detallada sobre la cuenta, como el saldo, margen libre, apalancamiento y otros parámetros importantes.

Ejemplo Práctico: Obtención de Información de la Cuenta

A continuación, mostramos cómo obtener y mostrar información clave sobre la cuenta:

Explicación del código:

  • Usamos AccountInfoInteger, AccountInfoDouble y AccountInfoString para obtener diferentes parámetros de la cuenta.
  • Mostramos la información en la ventana de resultados con formato legible.

Interactividad: Ejercicios Prácticos

Ver solución:

Explicación del Código

  1. Obtención del Número Total de Símbolos:
    • Usamos SymbolsTotal(true) para obtener el número total de símbolos disponibles en el terminal, incluidos los ocultos.
  2. Filtrado de Pares de Divisas (Forex):
    • Iteramos sobre todos los símbolos utilizando un bucle for.
    • Para cada símbolo, verificamos si pertenece al grupo Forex usando la función SymbolInfoInteger(symbol, SYMBOL_TRADE_CALC_MODE). Esta función devuelve el modo de cálculo de trading del símbolo.
    • Si el modo de cálculo es TRADE_CALC_MODE_FOREX, significa que el símbolo es un par de divisas.
  3. Mostrar los Pares de Divisas:
    • Si un símbolo cumple con la condición de ser un par de divisas, lo mostramos en la ventana de resultados.

Resultado Esperado

Cuando ejecutes este script, verás un mensaje similar al siguiente en la ventana de resultados:

Si no hay símbolos disponibles o no se encuentran pares de divisas, se mostrará un mensaje como este:


Caso Práctico

Este tipo de script puede ser útil para traders que desean automatizar estrategias específicas para pares de divisas. Al filtrar solo los símbolos relevantes, puedes:

  • Reducir el tiempo de procesamiento al trabajar con menos instrumentos.
  • Implementar estrategias de trading exclusivamente para Forex sin preocuparte por otros tipos de instrumentos (como acciones o criptomonedas).

¡Espero que este ejemplo te sea útil para entender cómo filtrar y trabajar con símbolos específicos en MQL5!

Ver solución:

Explicación del Código

  1. Obtención del Margen Libre y Total:
    • Usamos AccountInfoDouble(ACCOUNT_FREEMARGIN) para obtener el margen libre disponible en la cuenta.
    • Usamos AccountInfoDouble(ACCOUNT_MARGIN) para obtener el margen total (que incluye tanto el margen utilizado como el libre).
  2. Cálculo del Margen Utilizado:
    • El margen utilizado se calcula restando el margen libre del margen total:
      usedMargin = totalMargin - freeMargin.
  3. Cálculo del Porcentaje de Margen Utilizado:
    • Calculamos el porcentaje de margen utilizado dividiendo el margen utilizado entre el margen total y multiplicando por 100:
      usedMarginPercentage = (usedMargin / totalMargin) * 100.
  4. Validación para Evitar Divisiones por Cero:
    • Antes de realizar el cálculo, verificamos que el margen total sea mayor que cero para evitar errores matemáticos.
  5. Mostrar Resultados:
    • Mostramos el margen libre, el margen total, el margen utilizado y el porcentaje de margen utilizado en la ventana de resultados con una precisión de dos decimales.

Resultado Esperado

Cuando ejecutes este script, verás un mensaje similar al siguiente en la ventana de resultados:

Si el margen total es cero, se mostrará un mensaje como este:


Caso Práctico

Este tipo de script es útil para traders que desean monitorear su uso de margen y gestionar mejor sus riesgos. Al conocer el porcentaje de margen utilizado, puedes:

  • Evaluar si estás cerca del nivel de margen de llamada (margin call).
  • Ajustar el tamaño de tus posiciones para evitar ser liquidado.
  • Implementar estrategias automáticas que cierren posiciones si el margen utilizado supera cierto umbral.

¡Espero que este ejemplo te sea útil para entender cómo trabajar con información de la cuenta en MQL5!

Ver solución:

Explicación del Código

  1. Verificación del Símbolo:
    • Usamos SymbolExists(symbol) para asegurarnos de que el símbolo (EURUSD en este caso) esté disponible en el mercado.
  2. Cálculo del Margen Requerido:
    • Definimos una función CalculateRequiredMargin que calcula el margen necesario para abrir una posición basándose en:
      • El tamaño del contrato (SYMBOL_TRADE_CONTRACT_SIZE).
      • La tasa de margen inicial (SYMBOL_MARGIN_INITIAL).
      • El precio actual de compra (SYMBOL_ASK).
    • La fórmula utilizada es: Margen requerido=(Taman˜o de lote×Taman˜o del contrato×Precio)×Tasa de margen.
  3. Comparación del Saldo con el Margen Requerido:
    • Obtenemos el saldo actual de la cuenta usando AccountInfoDouble(ACCOUNT_BALANCE).
    • Comparamos el saldo con el margen requerido:
      • Si el saldo es mayor o igual al margen requerido, mostramos un mensaje indicando que hay suficiente saldo.
      • Si el saldo es menor, mostramos un mensaje indicando que no hay suficiente saldo.
  4. Mostrar Resultados:
    • Mostramos tanto el saldo actual como el margen requerido en la ventana de resultados para que el trader pueda tomar decisiones informadas.

Resultado Esperado

Cuando ejecutes este script, verás un mensaje similar al siguiente en la ventana de resultados:

  • Si hay suficiente saldo:
  • Si no hay suficiente saldo:

Caso Práctico

Este tipo de script es extremadamente útil para traders que desean automatizar la gestión de riesgos y evitar errores al enviar órdenes con saldo insuficiente. Algunas aplicaciones prácticas incluyen:

  • Prevenir el envío de órdenes que podrían causar una llamada de margen.
  • Ajustar automáticamente el tamaño de lote según el saldo disponible.
  • Implementar estrategias de trading que solo operen cuando el saldo sea suficiente.

¡Espero que este ejemplo te sea útil para entender cómo trabajar con información financiera y tomar decisiones basadas en datos reales en MQL5!


En el próximo capítulo, profundizaremos en la creación de indicadores personalizados, lo que nos permitirá implementar análisis técnicos avanzados.

¡Sigue practicando y perfeccionando tus habilidades en MQL5!

 
 


Deja una respuesta