MQL5 Wizard es una herramienta que te permite generar automáticamente el código de tus Asesores Expertos. Si quieres profundizar en la creación de Asesores Expertos listos, te recomiendo leer Creando Asesores Expertos Listos en MQL5 Wizard.
En este artículo, nos enfocaremos en una estrategia que utiliza el cruce de precios con el indicador de Media Móvil. Esta estrategia se denomina "Señales basadas en el cruce de precios con MA" cuando generamos el EA automáticamente en MQL5 Wizard.
Las señales de trading son las siguientes:
- Compra: cruce ascendente del precio con la Media Móvil.
- Venta: cruce descendente del precio con la Media Móvil.
- El chequeo del aumento/disminución de la MA se utiliza para filtrar señales falsas.
Esta estrategia está implementada en la clase CSignalMA de las clases de Estrategia de Trading de la Biblioteca Estándar de MQL5 (que se encuentra en MQL5\Include\Expert\Signal\SignalMA.mqh).

Figura 1. Señales de trading basadas en el cruce de precios con Media Móvil
Señales de Trading
La estrategia de trading se implementa en la clase CSignalMA, que tiene algunos métodos protegidos para simplificar el acceso a los indicadores y los valores de precio:
double MA(int ind) // devuelve el valor de la media móvil de la barra double Open(int ind) // devuelve el precio de apertura de la barra double Close(int ind) // devuelve el precio de cierre de la barra double StateMA(int ind) // devuelve valor positivo si la media aumenta y negativo si disminuye double StateOpen(int ind) // devuelve la diferencia entre el precio de apertura y la media móvil double StateClose(int ind) // devuelve la diferencia entre el precio de cierre y la media móvil
1. Abrir posición larga
Las condiciones para abrir una posición larga (cruce de precio con la MA y chequeo del aumento de la MA) son:
- Open(1)<MA(1): el precio de apertura es menor que la media móvil;
- Close(1)>MA(1): el precio de cierre es mayor que la media móvil;
- MA(1)>MA(2): verificar el aumento de la media móvil (para filtrar señales falsas).
//+------------------------------------------------------------------+ //| Verifica las condiciones para abrir posición larga (compra) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- el precio ha cruzado hacia arriba la MA y la MA está en aumento return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Cerrar posición larga
Las condiciones para cerrar una posición larga (cruce de precio con la MA y chequeo de la disminución de la MA) son:
- Open(1)>MA(1): el precio de apertura es mayor que la media móvil;
- Close(1)<MA(1): el precio de cierre es menor que la media móvil;
- MA(1)<MA(2): verificar la disminución de la media móvil (para filtrar señales falsas).
//+------------------------------------------------------------------+ //| Verifica las condiciones para cerrar posición larga | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- el precio ha cruzado la media móvil hacia abajo y la media móvil está en disminución return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. Abrir posición corta
Las condiciones para abrir una posición corta son las mismas que las condiciones de cierre de la posición larga.
//+------------------------------------------------------------------+ //| Verifica las condiciones para abrir posición corta (venta) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- el precio ha cruzado la media móvil hacia arriba y la media móvil está en disminución return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. Cerrar posición corta
Las condiciones para cerrar una posición corta son las mismas que las condiciones de apertura de la posición larga.
//+------------------------------------------------------------------+ //| Verifica las condiciones para cerrar posición corta | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- el precio ha cruzado la media móvil hacia arriba y la media móvil está en aumento return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
Creando Asesor Experto con MQL5 Wizard
Para crear un robot de trading basado en esta estrategia, debes seleccionar las propiedades de señal como "Señales basadas en el cruce de precios con MA" en la opción de "Creación de Asesores Expertos Listos" en MQL5 Wizard:

Figura 2. Elige "Señales basadas en el cruce de precios con MA" en MQL5 Wizard
A continuación, deberás especificar el algoritmo de trailing stop que necesites y el sistema de gestión de dinero y riesgo. El código del Asesor Experto se generará automáticamente, podrás compilarlo y probarlo en el Tester de Estrategias del terminal cliente de MetaTrader 5.
Resultados de las Pruebas
Veamos el backtesting del Asesor Experto con datos históricos (EUR/USD H1, período personalizado: 01.01.2010 - 05.01.2011, MA_period=12, MA_Shift=0).
En la creación del Asesor Experto utilizamos un volumen fijo (Trading con Lote Fijo, 0.1), y no se utilizó algoritmo de Trailing Stop (Sin Trailing).

Figura 3. Resultados de backtesting históricos del Asesor Experto, basado en el cruce de precios con MA
Adjuntos: El archivo SignalMA.mqh con la clase CSignalMA (incluida en la Biblioteca Estándar de MQL5) se encuentra en la carpeta MQL5\Include\Expert\Signal. El archivo crossoverma.mq5 contiene el código del Asesor Experto creado utilizando MQL5 Wizard.
Publicaciones relacionadas
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas de la Mañana/Atardecer y CCI
- Cómo Crear un Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas y Estocástico
- Señales de Trading con MQL5: Patrones de Estrellas y MFI
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Harami y Estocástico
- Crea tu Asesor Experto con MQL5: Señales de Bullish Harami/Bearish Harami y RSI