MQL5 Wizard es una herramienta increíble que permite generar automáticamente el código de Asesores Expertos. Si quieres profundizar en el tema, no te pierdas Cómo crear Asesores Expertos listos en MQL5 Wizard.
En esta ocasión, vamos a explorar una estrategia basada en el cruce de dos Medias Móviles Exponenciales suavizadas (EMA rápida y EMA lenta). Esta estrategia se conoce como “Señales basadas en el cruce de dos EMAs” al crear un Asesor Experto automáticamente en MQL5 Wizard.
Señales de Trading
- Compra: la EMA rápida cruza hacia arriba la EMA lenta
- Venta: la EMA rápida cruza hacia abajo la EMA lenta
Esta estrategia está implementada en la clase CSignalCrossEMA.

Figura 1. Señales de trading basadas en el cruce de dos EMAs
Señales de Trading
La estrategia de trading está implementada en la clase CSignalCrossEMA, que tiene algunos métodos protegidos para simplificar el acceso a los valores de los indicadores:
double FastEMA(int ind) // retorna el valor de la media móvil rápida de la barra double SlowEMA(int ind) // retorna el valor de la media móvil lenta de la barra double StateEMA(int ind) // retorna la diferencia entre las medias móviles rápida y lenta de la barra
1. Abrir posición larga
Las condiciones para abrir una posición larga son:
- StateEMA(1) > 0 y StateEMA(2) < 0: la EMA rápida ha cruzado hacia arriba la EMA lenta en la última barra completada.
//+------------------------------------------------------------------+ //| Comprueba las condiciones para abrir posición larga (compra) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
2. Cerrar posición larga
Las condiciones para cerrar una posición larga son:
- StateEMA(1) < 0 y StateEMA(2) > 0: la EMA rápida ha cruzado hacia abajo la EMA lenta en la última barra completada.
//+------------------------------------------------------------------+ //| Comprueba las condiciones para cerrar posición larga | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseLong(double& price) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; //--- return(true); }
3. Abrir posición corta
Las condiciones para abrir una posición corta son las mismas que las de cierre de la posición larga.
//+------------------------------------------------------------------+ //| Comprueba las condiciones para abrir posición corta (venta) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
4. Cerrar posición corta
Las condiciones para cerrar una posición corta son las mismas que las de apertura de la posición larga.
//+------------------------------------------------------------------+ //| Comprueba las condiciones para cerrar posición corta | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseShort(double& price) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; //--- return(true); }
Creando un Asesor Experto usando MQL5 Wizard
Para crear un robot de trading basado en esta estrategia, debes elegir las propiedades de la señal como “Señales basadas en el cruce de dos EMAs” en la opción de “Creando Asesores Expertos listos” de MQL5 Wizard:

Figura 2. Elegir 'Señales basadas en el cruce de dos EMAs' en MQL5 Wizard
Después, debes especificar el algoritmo de trailing stop necesario 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 de MetaTrader 5.
Además, las clases de la biblioteca estándar contienen “Señales basadas en el cruce de dos MA”, implementadas en la clase CSignalCrossMA. La idea de trading es similar, pero proporciona muchas características adicionales (especificar tipos, desplazamientos, métodos de promediado y uso de niveles de Take Profit y Stop Loss).

Figura 3. 'Señales basadas en el cruce de dos MA' en MQL5 Wizard
Resultados de Pruebas
Analicemos el backtesting del Asesor Experto en datos históricos (EURUSD H1, período de prueba: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).
En la creación del Asesor Experto utilizamos un volumen fijo (Trading con Lote Fijo, 0.1), no se utilizó el algoritmo de Trailing Stop (No se utilizó Trailing).

Figura 4. Resultados de backtesting históricos del Asesor Experto basado en el cruce de dos EMAs
Anexos: El archivo SignalCrossEMA.mqh con la clase CSignalCrossEMA debe ser colocado en el directorio de datos del terminal en terminal_data_folder\MQL5\Include\Expert\Signal.
El archivo crossover_2ema.mq5 contiene el código del Asesor Experto creado usando MQL5 Wizard.
Publicaciones relacionadas
- Promedio Móvil: Asesor Experto para MetaTrader 5
- Señales de Trading con Patrón Hammer/Hanging Man y Estocástico en MetaTrader 5
- Señales de Trading con MQL5: Patrones de Estrellas y MFI
- 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