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 de las lineas principal y de señal del indicador MACD - Asesor Experto para MetaTrader 5

Visualizaciones:
2923
Ranking:
(34)
Publicado:
2014.01.14 12:24
Actualizado:
2016.11.22 07:33
signalmacd.mqh (10.5 KB) ver
testmacd.mq5 (6.12 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 las señales de trading, basadas en cruce de líneas del indicador MACD. La estrategia llamada "Signals based on crossover of main and signal MACD lines" (al crear el Asesor Experto automáticamente con el MQL5 Wizard).

La línea principal del indicador MACD se calcula como la diferencia entre una EMA rápida y otra lenta. La línea de señal del MACD se calcula como la línea principal, suavizada con un periodo PeriodSignal.

Señales de trading:

  • Compra: cruce ascendente de la linea principal sobre la linea de señal.
  • Venta: cruce descendente de la linea principal sobre la linea de señal.

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

Figura 1. Señales de trading basadas en el cruce de las lineas principal y de señal del indicador MACD

Figura 1. Señales de trading basadas en el cruce de las lineas principal y de señal del indicador MACD


Señales de Trade

La estrategia de trading se implementa en la clase CSignalMACD, contiene algunos métodos protected para simplificar el acceso a los valores del indicador:

double  MainMACD(int ind)      // devuelve el valor de la línea principal del MACD de la barra
double  SignalMACD(int ind)    // devuelve el valor de la línea de señal del MACD de la barra
double  StateMACD(int ind)     // devuelve la diferencia entre las líneas principal y de señal del MACD
int     ExtStateMACD(int ind); // devuelve el número de intervalos desde el cruce de líneas principal y de señal


1. Apertura de una posición larga

Condiciones para abrir posición larga:

  • ExtStateMACD(1)==1; significa que la línea principal ha cruzado de manera ascendente la línea de señal del MACD
//+------------------------------------------------------------------+
//| Comprueba condiciones de apertura de posición larga (compra)     |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==1);
  }


2. Cierre de posición larga

Condiciones para cerrar posición larga:

  • ExtStateMACD(1)==-1; significa que la línea principal ha cruzado de manera descendente la línea de señal del MACD
//+------------------------------------------------------------------+
//| Comprueba condiciones de cierre de posición larga                |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==-1);
  }


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 CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==-1);
  }


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 CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }

Creando el Asesor Experto con el MQL5 Wizard

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

Figura 2. Seleccione "Signals based on crossover of main and signal MACD lines" en MQL5 Wizard

Figura 2. Seleccione "Signals based on crossover of main and signal MACD lines" 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, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).

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

Figura 3. Resultados de las pruebas del Asesor Experto con las señales de trading basadas en el cruce de líneas del MACD

Figura 3. Resultados de las pruebas del Asesor Experto con las señales de trading basadas en el cruce de líneas del MACD


Adjuntos: El fichero SignalMACD.mqh con la clase CSignalMACD (incluida en la biblioteca estándar MQL5) se encuentra en la carpeta MQL5\Include\Expert\Signal. El fichero testmacd.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/262

MQL5 Wizard - Señales de trading basadas en el cruce de dos medias móviles exponenciales suavizadas MQL5 Wizard - Señales de trading basadas en el cruce de dos medias móviles exponenciales suavizadas

Vamos a examinar las señales de trading basadas en el cruce de dos medias móviles exponenciales suavizadas. 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).

MQL5 Wizard - Señales de trading basadas en el cruce de dos EMA con filtro de tiempo intradía MQL5 Wizard - Señales de trading basadas en el cruce de dos EMA con filtro de tiempo intradía

Vamos a examinar las señales de trading basadas en el cruce del precio de dos medias móviles exponenciales suavizadas con filtro de tiempo intradía. El código del Asesor Experto basado en esta estrategia se puede generar automáticamente mediante el Asistente para MQL5 (MQL5 Wizard).

Relleno de Color de Momentum Relleno de Color de Momentum

El Indicador Técnico Momentum mide el cambio de precio de un instrumento financiero en un lapso de tiempo determinado.