Mira cómo descargar robots gratis
¡Búscanos en Twitter!
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

Asistente MQL5 - Señales de Trade basadas en Morning/Evening Stars + CCI - Asesor Experto para MetaTrader 5

Visualizaciones:
1855
Ranking:
(22)
Publicado:
2014.01.10 13:24
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
acms_es_cci.mqh (7.97 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

El Asistente MQL5 permite crear EAs listos para usar basados en clases de la Librería Estándar entregadas junto con el terminal de cliente (para los detalles véase Creación de EAS listos para usar del asistente MQL5). Permite comprobar rápidamente tus ideas de trade, y todo lo que necesitas es crear tu propia clase de señales de trading. La estructura de esta clase y ejemplos pueden encontrarse en el artículo Asistente MQL5: Cómo Crear un Módulo de Trading.

La idea genérica es la siguiente: la clase de señales de trading se deriva de CExpertSignal, seguidamente, es necesario reemplazar los métodos virtuales LongCondition() y ShortCondition() por sus propios métodos.

Hay un libro "Estrategias de los mejores traders" (en ruso), donde se consideran muchas estrategias de trading, y nos centraremos en los patrones de velas de reversión, confirmados por los osciladores estocástico, RSI , CCIy MFI.

La mejor manera es crear la clase separada, derivada de CExpertSignal para el control de la formación de patrones de vela. Para la confirmación de las señales de trade, generados por los patrones de vela, es suficiente escribir la clase, derivada del CCandlePattern y añadir las características necesarias (por ejemplo, confirmación de osciladores).

Aquí vamos a considerar las señales, basadas en patrones de velas de reversión "Morning Star/Evening Star" (Morning Doji Star/Evening Doji Star), confirmados por el indicador CCI . El módulo de señales de trade se basa en la clase CCandlePattern , es un simple ejemplo de su uso para creación de señales de trade con los patrones de velas.


1.Patrones de velas de reversión "Morning Star" and "Evening Star"

1.1. Morning Star

Este patrón indica la reversión de la tendencia bajista, consta de tres velas (Fig. 1). Después de una larga y negra vela hay una vela (el color no es importante) con un cuerpo pequeño, que se encuentra fuera del cuerpo de la vela negra. El cuerpo pequeño de la vela significa que las fortalezas de los toros y los osos son iguales y el mercado está listo para cambiar la tendencia.

La tercera vela del patrón es la vela alcista, su cuerpo no coincidía con el cuerpo de la segunda vela y el precio de cierre se encuentra dentro del cuerpo de la primera vela (bajista). La vela resultante del modelo también se traza en la figura 1.

En el caso de que la segunda vela fuera doji-como-vela, el modelo es denominado "Morning Doji Star".

Fig. 1. Patrones de velas "Morning Star" y "Morning Doji Star"

Fig. 1. Patrones de velas "Morning Star" y "Morning Doji Star"

La identificación del patrón "Morning Star" se implementa en los métodos CheckPatternMorningStar() y CheckPatternMorningDoji() de la clase CCandlePattern:

//+------------------------------------------------------------------+
//| Comprobar la formación del patrón "Morning Star"                 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- Morning Star
   if((Open(3)-Close(3)>AvgBody(1))             && // vela bajista, tiene el cuerpo más grande que la media del cuerpo de la vela
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // la segunda vela tiene cuerpo pequeño (inferior a la mitad de la media del cuerpo)
      (Close(2)<Close(3))                       && // el cierre de la segunda vela es inferior cierre de la primera
      (Open(2)<Open(3))                         && // la apertura de la segunda vela es inferior a la apretura de la primera
      (Close(1)>MidOpenClose(3)))                  // el cierre de la última vela terminada es más alto que el centro de la primera 
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Comprobación de la formación del patrón "Morning Doji Star"      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningDoji()
  {
//--- Morning Doji Star
   if((Open(3)-Close(3)>AvgBody(1)) && // vela bajista con el cuerpo mayor que la media del cuerpo de la vela 
      (AvgBody(2)<AvgBody(1)*0.1)   && // la segunda vela tiene un cuerpo muy pequeño (doji) 
      (Close(2)<Close(3))           && // el cierre de la segunda vela es inferior cierre de la primera
      (Open(2)<Open(3))             && // la apertura de la segunda vela es inferior la apertura de la primera
      (Open(1)>Close(2))            && // gap al alza en la última vela completada
      (Close(1)>Close(2)))             // el cierre de la última vela terminada es mayor que el cierre de la segunda
      return(true);
//---
   return(false);
  }

Los métodos CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) y CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) de la clase CCandlePattern se utilizan para controlar la formación de patrones de vela Morning Star" y "Morning Doji Star".


1.2. Evening Star

Este patrón indica la reversión de la tendencia alcista, consta de tres velas (Fig. 2). Después de un larga y blanca vela hay una vela (el color no es importante) con un cuerpo pequeño, que se encuentra fuera del cuerpo de la vela blanca. El cuerpo pequeño de la vela significa que las fortalezas de los toros y los osos son iguales y el mercado está listo para cambiar la tendencia.

La tercera vela del patrón es la vela bajista, su cuerpo no coincide con el cuerpo de la segunda vela y el precio de cierre se encuentra dentro del cuerpo de la primera vela (alcista). La vela resultante del modelo también se traza en la figura 2.

Si la segunda vela es doji-como-vela, el modelo es denominado "Evening Doji Star".

Fig. 2. Patrones de velas "Evening Star" y "Evening Doji Star"

Fig. 2. Patrones de velas "Evening Star" y "Evening Doji Star"

Aquí están los métodos para la identificación de patrones "Evening Star" y "Evening Doji Star":

//+------------------------------------------------------------------+
//| Comprobación de la formación de patrones "Evening Star"          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- Evening Star
   if((Close(3)-Open(3)>AvgBody(1))             && // vela alcista con el cuerpo más alto que la media del cuerpo 
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // la segunda vela tiene un cuerpo pequeño (menos de la mitad de la media)
      (Close(2)>Close(3))                       && // el cierre de la segunda vela es más alto que el cierre de la primera
      (Open(2)>Open(3))                         && // la apertura de la segunda vela es mayor que la apertura de la primera
      (Close(1)<MidOpenClose(3)))                  // el cierre de la última vela terminada es más bajo que el centro de la primera 
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Comprobación de la formación de patrones "Evening Doji Star"     |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningDoji()
  {
//--- Evening Doji Star
   if((Close(3)-Open(3)>AvgBody(1)) && // bullish candle with body higher than average 
      (AvgBody(2)<AvgBody(1)*0.1)   && // la segunda vela tiene un cuerpo muy pequeño (doji) 
      (Close(2)>Close(3))           && // el cierre de la segunda vela es más alto que el cierre de la primera
      (Open(2)>Open(3))             && // la apertura de la segunda vela es mayor que la apertura de la primera
      (Open(1)<Close(2))            && // gap a la baja en la última vela completada
      (Close(1)<Close(2)))             // el cierre de la última vela terminada es más bajo que el cierre de la segunda 
      return(true);
//---
   return(false);
  }

Los métodos CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) y CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) de la clase CCandlePattern se utilizan para controlar la formación de patrones de vela "Evening Star" y "Evening Doji Star".


2. Señales de trade, confirmadas por el indicador CCI

Las señales de trading para abrir posiciones largas o cortas debe ser confirmadas por el indicador CCI . El valor del CCI debe ser mayor/menor que los niveles críticos (-50 para la posición larga y 50 para posición corta).

El cierre de posiciones abiertas depende de los valores del CCI. Se puede hacer en 2 casos:

  1. Si la línea CCI ha alcanzado el nivel crítico opuesto (80 para la posición larga y -80 para posición corta
  2. Si no está confirmada la señal de reversión (cuando el CCI alcanza los siguientes niveles: -80 para la posición larga y 80 para la posición corta)

Fig. 3. Patrón de "Evening Star", confirmado por indicador CCI

Fig. 3. Patrón de "Evening Star", confirmado por indicador CCI


  • int CMS_ES_CCI::LongCondition() - comprueba las condiciones para abrir posición larga (regresa de 80) y el cierre de la posición corta (regresa de 40);
  • int CMS_ES_CCI::ShortCondition() - comprueba las condiciones para abrir posición corta (regresa de 80) y el cierre de la posición larga (regresa de 40).

2.1. Apertura de posición larga/cierre de posición corta

  1. La formación del patron "Morning Star" debe ser confirmada por indicador CCI : CCI(1) < -50 (el valor de la CCI de la última barra completa debe ser inferior a -50).

  2. La posición corta debe estar cerrada si el indicador CCI ha cruzado hacia arriba del nivel crítico -80 o cruzado hacia abajo al nivel 80.

//+-----------------------------------------------------------------------+
//| Comprobaciones de condiciones para la entrada y salida del mercado    |
//| 1) Entrada en el mercado (apertura de posición larga, resultado=80)   |
//| 2) Salida del mercado (cierre de posición corta, resultado=40)        |
//+-----------------------------------------------------------------------+
int CMS_ES_CCI::LongCondition()
  {
   int result=0;
//--- idx se puede utilizar para determinar el modo de trabajo del EA
//--- idx=0 - en este caso el EA comprueba las condiciones de trade en cada tick
//--- idx=1 - en este caso el EA comprueba las condiciones de trade solo en las barras nuevas
   int idx   =StartIndex();
//--- ccomprobación de condiciones de apertura de posición larga
//--- formación del patrón  Morning Star y CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (CCI(1)<-50))
     result=80;
//--- comprobando las condiciones para cierre de posición corta
//--- cruce de líneas de señal de niveles de sobrecompra / sobreventa (por debajo de  -80, por debajo de -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     result=40;
//--- devuelve resultado
   return(result);
  }

2.2. Apertura de corta/cierre de posición larga

  1. La formación del patron "Evening Star" debe ser confirmado por indicador CCI : CCI(1) > 50 (el valor del indicador CCI de la última barra completa debe ser mayor que 50).

  2. La posición larga debe estar cerrada si el indicador CCI ha cruzado hacia abajo el -80 u 80 niveles.

//+----------------------------------------------------------------------+
//| Comprobaciones de condiciones para la entrada y salida del mercado   |
//| 1) Entrada en el mercado (apertura de posición corta, resultado=80)  |
//| 2) Salida del mercado (cierre de posición larga, resultado=40)       |
//+----------------------------------------------------------------------+
int CMS_ES_CCI::ShortCondition()
  {
   int result=0;
//--- idx se puede utilizar para determinar el modo de trabajo del EA
//--- idx=0 - en este caso el EA comprueba las condiciones de trade en cada tick
//--- idx=1 - en este caso el EA comprueba las condiciones de trade solo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de condiciones de apertura de posición corta
//--- formación del patrón Evening Star y CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (CCI(1)>50))
     result=80;
//--- comprobando las condiciones para cierre de posición larga
//--- cruce de líneas de señal de niveles de sobrecompra / sobreventa (por debajo de -80, por debajo de 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- devuelve resultado
   return(result);
  }


2.3. Creación del EA utilizando el Asistente MQL5

Para usar la clase CMS_ES_CCI no incluida en las clases de la Librería Estándar, es necesario descargar el archivo acms_es_cci.mqh (ver anexos) y guardarlo en client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Lo mismo debe hacerse con el archivo candlepatterns.mqh. Usarlo en el asistente MQL5 después de reiniciar el MetaEditor.

Para crear un EA lanzar el Asistente MQL5:

Fig. 4. Creación del EA utilizando el Asistente MQL5

Fig. 4. Creación del EA utilizando el Asistente MQL5

Vamos a especificar el nombre del EA:

Fig. 5. Propiedades generales del EA

Fig. 5. Propiedades generales del EA

Después de esto tenemos que seleccionar los módulos de señales de trade utilizadas.

Fig. 6. Propiedades de la señal del EA

Fig. 6. Propiedades de la señal del EA

En nuestro caso utilizamos sólo un módulo de señales de trade.

Añadiendo el módulo "Señales basadas en Morning/Evening Stars confirmadas por el CCI" de las señales de trading:

Fig. 7. Propiedades de la señal del EA

Fig. 7. Propiedades de la señal del EA

Módulo de señales de trade añadido:

Fig. 8. Propiedades de la señal del EA

Fig. 8. Propiedades de la señal del EA

Puedes seleccionar cualquiera de las propiedades de trailing, pero usaremos "Trailing Stop no utilizado":

Fig. 9. Propiedades de trailing del EA

Fig. 9. Propiedades de trailing del EA

En cuanto a las propiedades del money management, vamos a usar "Trading con volumen de trade fijo":

Fig. 10. Propiedades de money management del EA

Fig. 10. Propiedades de money management del EA

Pulsando el botón "Finish", obtendremos el código del EA generado, situado en Expert_AMS_ES_CCI.mq5, se guardará en terminal_data_folder\MQL5\Experts\.

Los parámetros de entrada por defecto del EA generado:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =10;     // Valor umbral de señal para abrir [0...100]
input int            Signal_ThresholdClose  =10;     // Valor umbral de señal para cerrar [0...100]
input double         Signal_PriceLevel      =0.0;    // Nivel de precios para ejecutar una operación
input double         Signal_StopLevel       =50.0;   // Nivel de Stop Loss (en puntos)
input double         Signal_TakeLevel       =50.0//  Nivel de Take Profit (en puntos)

debe ser reemplazado por:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =40;     // Valor umbral de señal para abrir [0...100]
input int            Signal_ThresholdClose  =20;     // Valor umbral de señal para cerrar [0...100]
input double         Signal_PriceLevel      =0.0;    // Nivel de precios para ejecutar una operación
input double         Signal_StopLevel       =0.0;    // Nivel de Stop Loss (en puntos)
input double         Signal_TakeLevel       =0.0;    // Nivel de Take Profit (en puntos)

Los parámetros de entrada Signal_ThresholdOpen/Signal_ThresholdClose permiten especificar los niveles de umbral para abrir y cerrar posiciones.

En el código de los métodos LongCondition() y ShortCondition() de las clases de señales de trade hemos especificado los valores fijos del umbral:

  • Abrir posición: 80;
  • Cerrar posición: 40.

El EA, generado por el Asistente MQL5 abre y cierra posiciones utilizando los "votos" de los módulos de señales de trade. También se utiliza el voto del módulo principal (como el envase, consta de todos los módulos añadidos), pero sus métodos LongCondition() y ShortCondition() siempre devuelven 0.

Los votos resultados del módulo principal también se utilizan en el promedio de "votos". En nuestro caso tenemos: módulo principal + 1 módulo de señales de trade, así que tenemos que tener en cuenta este hecho cuando ajustemos los valores de umbral. Debido a este hecho se deben establecer el ThresholdOpen y ThresholdClose como 40 =(0+80)/2 y 20 =(0+40)/2.

Los valores de los parámetros de entrada Signal_StopLevel y Signal_TakeLevel se establece en 0, significa que el cierre de las posiciones se hará sólo cuando las condiciones de cierre sean ciertas.


2.4. Resultados de backtesting del histórico

Consideramos backtesting del EA con los datos históricos (EURUSD H1, periodo de pruebas: 2009.01.01-2011.03.16, PeriodCCI = 25, MA_period = 5).

En la creación de EA utilizamos el volumen fijo (Trading fija muchos, 0.1), el algoritmo Trailing Stop no se utiliza (Trailing no utilizado).

Fig. 11. Probando los resultados del EA, basado en Morning/Evening Stars + CCI

Fig. 11. Probando los resultados del EA, basado en Morning/Evening Stars + CCI


Puede encontrar el mejor conjunto de parámetros de entrada utilizando el Probador de estrategias del terminal de cliente MetaTrader 5.

El código del EA, creado por el Asistente MQL5 se une expert_ams_es_cci.mq5.


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

Asistente MQL5 - Señales de Trade basadas en Bullish/Bearish Meeting Lines + RSI Asistente MQL5 - Señales de Trade basadas en Bullish/Bearish Meeting Lines + RSI

Las señales de trade basadas enpatrones de velas "Bullish/Bearish Meeting Lines", consideamos confirmación por el indicador RSI (Relative Strength Index). El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente MQL5.

DRAW_COLOR_ARROW DRAW_COLOR_ARROW

El estilo de dibujo DRAW_COLOR_ARROW traza las flechas de colores (símbolos de la fuente Windings).

DRAW_COLOR_ZIGZAG DRAW_COLOR_ZIGZAG

El estilo DRAW_COLOR_ZIGZAG dibuja líneas de diferentes colores por los valores de dos buffers del indicador. Esta es la versión en color del estilo DRAW_ZIGZAG y le permite especificar el color individual para cada línea del conjunto de color predefinido.

DRAW_COLOR_BARS DRAW_COLOR_BARS

El estilo DRAW_COLOR_BARS dibuja barras basadas ​​en los valores de cuatro bufferes del indicador, que contienen Apertura, Alto, Bajo y los precios de Cierre. Esta es la versión avanzada del estilo DRAW_BARS, que le permite especificar el color individual para cada barra del conjunto de colores predefinidos.