Programación en MQL5 (IV)

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

 
 

¡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 crear indicadores personalizados en MQL5. Los indicadores personalizados son herramientas poderosas que te permiten visualizar datos calculados directamente en el gráfico o en una ventana separada. También exploraremos cómo integrar estos indicadores en un Expert Advisor (EA) y usar buffers para almacenar datos.


Un indicador básico es aquel que realiza cálculos simples y dibuja una línea en el gráfico o en una ventana separada. A continuación, crearemos un indicador que dibuje una línea promedio móvil simple (SMA) en el gráfico principal.

Ejemplo Práctico: Indicador SMA Personalizado


Explicación del Código

  1. Propiedades del Indicador:
    • #property indicator_chart_window: El indicador se dibuja en la ventana del gráfico principal.
    • #property indicator_buffers 1: Declaramos un buffer para almacenar los valores del indicador.
    • #property indicator_color1 Blue: La línea del indicador será de color azul.
  2. Parámetros de Entrada:
    • MAPeriod: Define el período de la media móvil simple.
  3. Buffers:
    • smaBuffer[]: Almacena los valores calculados de la SMA.
  4. Función OnInit:
    • Asignamos el buffer smaBuffer al índice 0 usando SetIndexBuffer.
    • Configuramos el nombre del indicador con IndicatorShortName.
  5. Función OnCalculate:
    • Calculamos la SMA para cada barra usando un bucle.
    • Guardamos los valores en el buffer smaBuffer.

Resultado Esperado

Cuando adjuntes este indicador al gráfico, verás una línea azul que representa la media móvil simple (SMA) basada en el período especificado (por ejemplo, 14). Esta línea se actualizará dinámicamente con cada tick.


Los indicadores personalizados pueden ser utilizados en un EA para generar señales de trading. A continuación, mostramos cómo integrar el indicador SMA Personalizado en un EA.

Ejemplo Práctico: EA que Usa el Indicador SMA


Explicación del Código

  1. Uso de iCustom:
    • iCustom permite acceder a los valores de un indicador personalizado.
    • En este caso, obtenemos los valores del indicador SMA_Personalizado para los períodos rápido y lento.
  2. Lógica del EA:
    • El EA abre posiciones largas cuando el SMA rápido cruza por encima del lento y posiciones cortas cuando cruza por debajo.
    • Cierra las posiciones si las medias móviles cruzan en sentido contrario.

Los buffers son fundamentales para almacenar y gestionar datos en indicadores personalizados. Permiten que los valores calculados se mantengan disponibles para su uso en el gráfico o en otros programas como EAs.

Ejemplo Práctico: Uso de Buffers en un Indicador

El código del indicador SMA Personalizado ya utiliza un buffer (smaBuffer[]) para almacenar los valores calculados. Aquí explicamos cómo funciona:

  1. Declaración del Buffer:
    • double smaBuffer[]; declara un array para almacenar los valores del indicador.
  2. Asignación del Buffer:
    • SetIndexBuffer(0, smaBuffer); vincula el buffer al índice 0 del indicador.
  3. Almacenamiento de Datos:
    • En la función OnCalculate, los valores calculados se almacenan en el buffer:mql
  1. Visualización en el Gráfico:
    • Los valores en el buffer se dibujan automáticamente en el gráfico gracias a las propiedades del indicador.

Interactividad: Ejercicios Prácticos

Ver solución:

Explicación del Código

  1. Propiedades del Indicador:
    • #property indicator_buffers 2: Declaramos dos buffers porque necesitamos almacenar los valores de dos medias móviles (rápida y lenta).
    • #property indicator_color1 Blue: La primera línea (SMA rápido) será azul.
    • #property indicator_color2 Red: La segunda línea (SMA lento) será roja.
  2. Parámetros de Entrada:
    • FastMAPeriod: Define el período del SMA rápido.
    • SlowMAPeriod: Define el período del SMA lento.
  3. Buffers:
    • fastMABuffer[]: Almacena los valores calculados del SMA rápido.
    • slowMABuffer[]: Almacena los valores calculados del SMA lento.
  4. Función OnInit:
    • Asignamos los buffers a sus respectivos índices:
      • SetIndexBuffer(0, fastMABuffer) vincula el primer buffer al índice 0.
      • SetIndexBuffer(1, slowMABuffer) vincula el segundo buffer al índice 1.
    • Configuramos un nombre corto para el indicador que incluye ambos períodos.
  5. Función OnCalculate:
    • Calculamos el SMA rápido y lo almacenamos en fastMABuffer.
    • Calculamos el SMA lento y lo almacenamos en slowMABuffer.
    • Ambos cálculos se realizan en bucles separados para evitar confusiones.

Resultado Esperado

Cuando adjuntes este indicador al gráfico, verás dos líneas:

  • Una línea azul que representa el SMA rápido (por ejemplo, período 10).
  • Una línea roja que representa el SMA lento (por ejemplo, período 50).

Estas líneas se actualizarán dinámicamente con cada tick, permitiéndote visualizar claramente el cruce entre ambas medias móviles.


Interpretación del Cambio

Este ejercicio amplía el indicador original para incluir dos líneas en lugar de una. Esto es útil porque:

  • Facilita la visualización de cruces entre medias móviles rápidas y lentas.
  • Proporciona una base sólida para generar señales de trading (por ejemplo, compra cuando el SMA rápido cruza por encima del lento, venta cuando cruza por debajo).

Casos Prácticos

Este tipo de indicador puede ser utilizado para:

  • Identificar tendencias: El SMA lento actúa como un filtro de tendencia, mientras que el SMA rápido detecta cambios rápidos en el precio.
  • Generar señales de trading: Los cruces entre las dos líneas pueden usarse como señales de compra o venta.

¡Espero que este ejemplo te ayude a entender cómo crear indicadores personalizados más avanzados en MQL5!


Ver solución:

Explicación del Código

  1. Parámetros de Entrada:
    • FastMAPeriod y SlowMAPeriod: Definen los períodos del SMA rápido y lento, respectivamente.
    • LotSize: Define el tamaño de lote para las operaciones.
  2. Uso de iCustom:
    • iCustom permite acceder a los valores del indicador personalizado (SMA_Dos_Líneas).
    • El primer valor (0) corresponde al buffer del SMA rápido.
    • El segundo valor (1) corresponde al buffer del SMA lento.
  3. Lógica del EA:
    • Señales de Compra: Si el SMA rápido (fastMA) cruza por encima del SMA lento (slowMA), se abre una posición larga.
    • Señales de Venta: Si el SMA rápido cruza por debajo del SMA lento, se abre una posición corta.
    • Cierre de Posiciones: Si las medias móviles cruzan en sentido contrario, se cierra la posición abierta.
  4. 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.

Resultado Esperado

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

  • Si el SMA rápido cruza por encima del lento:
  • Si el SMA rápido cruza por debajo del lento:
  • Si las medias móviles cruzan en sentido contrario:

Interpretación del Cambio

Este ejercicio integra el indicador personalizado (SMA con Dos Líneas) en un EA para generar señales de trading automáticas. Esto es útil porque:

  • Automatiza la generación de señales basadas en cruces de medias móviles.
  • Reduce la necesidad de análisis manual y minimiza errores humanos.
  • Proporciona una base sólida para desarrollar estrategias de trading más avanzadas.

Casos Prácticos

Este tipo de EA puede ser utilizado para:

  • Operar automáticamente en mercados con tendencias claras.
  • Implementar estrategias de seguimiento de tendencia basadas en cruces de medias móviles.
  • Probar y optimizar parámetros como los períodos de las medias móviles para maximizar el rendimiento.

¡Espero que este ejemplo te ayude a entender cómo integrar indicadores personalizados en EAs y automatizar tus estrategias de trading!


Ver solución:

Explicación del Código

  1. Propiedades del Indicador:
    • #property indicator_buffers 2: Declaramos dos buffers porque necesitamos almacenar los valores de soporte y resistencia.
    • #property indicator_color1 Green: La línea de soporte será verde.
    • #property indicator_color2 Red: La línea de resistencia será roja.
  2. Parámetros de Entrada:
    • LookbackPeriod: Define el número de barras (por ejemplo, 20) utilizadas para calcular los niveles de soporte y resistencia.
  3. Buffers:
    • supportBuffer[]: Almacena los valores calculados del soporte (precio mínimo).
    • resistanceBuffer[]: Almacena los valores calculados de la resistencia (precio máximo).
  4. Función OnInit:
    • Asignamos los buffers a sus respectivos índices:
      • SetIndexBuffer(0, supportBuffer) vincula el primer buffer al índice 0 (soporte).
      • SetIndexBuffer(1, resistanceBuffer) vincula el segundo buffer al índice 1 (resistencia).
    • Configuramos un nombre corto para el indicador que incluye el período de cálculo.
  5. Función OnCalculate:
    • Calculamos el soporte como el precio mínimo (low) de las últimas LookbackPeriod barras.
    • Calculamos la resistencia como el precio máximo (high) de las últimas LookbackPeriod barras.
    • Los valores calculados se almacenan en los buffers correspondientes (supportBuffer y resistanceBuffer).

Resultado Esperado

Cuando adjuntes este indicador al gráfico, verás dos líneas:

  • Una línea verde que representa el nivel de soporte dinámico (basado en el precio mínimo de las últimas 20 barras).
  • Una línea roja que representa el nivel de resistencia dinámico (basado en el precio máximo de las últimas 20 barras).

Estas líneas se actualizarán dinámicamente con cada tick, permitiéndote visualizar claramente los niveles clave de soporte y resistencia.


Interpretación del Cambio

Este ejercicio crea un indicador personalizado que identifica niveles de soporte y resistencia dinámicos. Esto es útil porque:

  • Proporciona una referencia visual clara de los niveles clave donde el precio puede rebotar o romper.
  • Ayuda a identificar zonas de interés para tomar decisiones de trading, como entradas, salidas o colocación de stop loss.

Casos Prácticos

Este tipo de indicador puede ser utilizado para:

  • Identificar niveles clave de soporte y resistencia en tiempo real.
  • Generar señales de trading cuando el precio rompe estos niveles.
  • Complementar otras estrategias de trading, como cruces de medias móviles o patrones de velas.

¡Espero que este ejemplo te ayude a entender cómo crear indicadores personalizados avanzados en MQL5!


En el próximo capítulo, exploraremos cómo implementar y monitorear tus indicadores y EAs en tiempo real.

¡Sigue practicando y perfeccionando tus habilidades en MQL5!

 
 


Deja una respuesta