Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

MQL5 Wizard - Señales de trading basadas en el cruce del precio con el Indicador de Media Móvil - Asesor Experto para MetaTrader 5

Visualizaciones:
2452
Ranking:
(33)
Publicado:
2014.01.14 12:02
Actualizado:
2016.11.22 07:33
signalma.mqh (12.33 KB) ver
crossoverma.mq5 (6.09 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

MQL5 Wizard permite crear el código de Asesores Expertos automáticamente. Vea Crear Asesores Expertos listos para usar con el MQL5 Wizard para más detalles.

Aquí vamos a considerar la estrategia basada en el cruce del precio con el indicador de Media Móvil. La estrategia llamada "Signals based on price crossover with MA" (al crear el Asesor Experto automáticamente con el MQL5 Wizard).

Señales de trading:

  • Compra: cruce ascendente del precio con la media móvil.
  • Venta: cruce descendente del precio con la media móvil.
  • La comprobación del incremento/decremento de la media móvil se usará para filtrar señales falsas.

Esta estrategia se implementa en la clase CSignalMA de las Clases de Estrategia de Trading de la biblioteca estándar MQL5 (ubicada en MQL5\Include\Expert\Signal\SignalMA.mqh).

Figura 1. Señales de trading basadas en el cruce del precio con la media móvil

Figura 1. Señales de trading basadas en el cruce del precio con la media móvil

Señales de Trade

La estrategia de trading se implementa en la clase CSignalMA, contiene algunos métodos protected para simplificar el acceso a los valores de indicadores y precios:

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 un 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
Los valores de precios y de indicadores de la barra 0 (incompleta) pueden variar, por lo que es necesario llevar a cabo la comprobación de las condiciones de trading utilizando los datos de las barras completas (formadas).

1. Apertura de una posición larga

Condiciones para abrir posiciones largas (cruce del precio con MA y comprobación del aumento de la MA), MA=Media Móvil:

  • Open(1)<MA(1): precio de apertura es inferior a la media móvil;
  • Close(1)>MA(1): precio de cierre es superior a la media móvil;
  • MA(1)>MA(2): Comprueba aumento de la media móvil (para filtrar las señales falsas).
//+------------------------------------------------------------------+
//| Comprueba condiciones de apertura de posición larga (compra)     |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- precio ha cruzado de manera ascendente la MA y la MA aumenta
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }

2. Cierre de posición larga

Condiciones para cerrar posición larga (cruce del precio con la MA y comprobación de la disminución de la MA), MA=Media Móvil:

  • Open(1)>MA(1): precio de apertura es superior a la media móvil;
  • Close(1)<MA(1): precio de cierre es inferior a la media móvil;
  • MA(1)<MA(2): comprueba el descenso de media móvil (para filtrar las señales falsas).
//+------------------------------------------------------------------+
//| Comprueba condiciones de cierre de posición larga                |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseLong(double& price)
  {
   price=0.0;
//--- precio ha cruzado de manera descendente la MA y la MA disminuye
  return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


3. Apertura de posición corta

Las condiciones para abrir una posición corta son las mismas que las condiciones de cierre de una posición larga.

//+------------------------------------------------------------------+
//| Comprueba condiciones de apertura de posición corta (venta)      |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- precio ha cruzado de manera descendente la MA y la MA disminuye 
   return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


4. Cierre de posición corta

Las condiciones para cerrar una posición corta son las mismas que las condiciones de apertura de una posición larga.

//+------------------------------------------------------------------+
//| Comprueba condiciones de cierre de posición corta                |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseShort(double& price)
  {
   price=0.0;
//--- precio ha cruzado de manera ascendente la MA y la MA aumenta
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }
//+------------------------------------------------------------------+

Creando el Asesor Experto con el MQL5 Wizard

Para crear un robot de trading basado en esta estrategia debe seleccionar "Signals based on price crossover with MA" para las propiedades de señal del Expert Advisor en la opción "Expert Advisor (generate)" de MQL5 Wizard:

Figura 2. Seleccionar "Signals based on price crossover with MA" en MQL5 Wizard

Figura 2. Seleccionar "Signals based on price crossover with MA" en MQL5 Wizard

Lo próximo que debe especificar es el algoritmo necesario para trailing stop y el sistema de gestión de capital. El código del Asesor Experto será creado automáticamente, puede compilarlo y verificarlo en el Probador de Estrategias del terminal de cliente MetaTrader 5.


Resultados de las pruebas

Vamos a considerar una simulación del asesor experto con datos históricos (EURUSD H1, periodo personalizado: 2010.01.01-2011.01.05, MA_Period = 12, MA_Shift = 0).

En la creación del Asesor Experto se seleccionó una gestión de capital con volumen fijo de 0.1 lotes (Trading with fixed trade volume, 0.1), y sin algoritmo de Trailing Stop (Trailing Stop not used).

Cruce con la media móvil

Figura 3. Resultados de la simulación histórica del Asesor Experto, basada en el cruce del precio con la MA (Media Móvil)

Adjuntos: El fichero SignalMA.mqh con la clase CSignalMA (incluida en la biblioteca estándar MQL5) se encuentra en la carpeta MQL5\Include\Expert\Signal. El fichero crossoverma.mq5 contiene el código, del Asesor Experto, creado con MQL5 Wizard.

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/248

Plantilla para Asesor Experto Plantilla para Asesor Experto

Este código es una plantilla para un Asesor Experto, fue escrito por Valery Mazurenko (notused) para el ATC-2010.

Ticks Ticks

Ejemplo de un gráfico de ticks.

MQL5 Wizard - Señales de trading basadas en tres medias móviles (3EMA) MQL5 Wizard - Señales de trading basadas en tres medias móviles (3EMA)

Vamos a examinar las señales de trading basadas en tres medias móviles. El código del Asesor Experto basado en esta estrategia se puede generar automáticamente mediante el Asistente para MQL5 (MQL5 Wizard).

MQL5 Wizard - Señales de trading basadas en el cruce del precio con la Media Móvil y confirmadas por ADX MQL5 Wizard - Señales de trading basadas en el cruce del precio con la Media Móvil y confirmadas por ADX

Vamos a examinar las señales de trading basadas en el cruce del precio con el indicador de media móvil y confirmadas con ADX. El código del Asesor Experto basado en esta estrategia se puede generar automáticamente mediante el Asistente para MQL5 (MQL5 Wizard).