Inicio Trading Sistemático Publicación

Cómo Crear Señales de Trading con MQL5: Estrategia de Crossover de Precio y Media Móvil

Archivos adjuntos
248.zip (3.15 KB, Descargar 0 veces)

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

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
Es importante tener en cuenta que los valores de precio e indicador de la barra 0 (no completada) pueden cambiar, por lo que es necesario realizar la comprobación de las condiciones de trading utilizando los datos de las barras completadas.

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

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).

Crossover con Media Móvil

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

Comentarios (0)