Inicio Trading Sistemático Publicación

Cómo Crear un Asesor Experto en MetaTrader 5 Usando MQL5 Wizard con Cruce de EMAs

Archivos adjuntos
261.zip (2.85 KB, Descargar 0 veces)

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

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

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

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

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

Comentarios (0)