Inicio Trading Sistemático Publicación

Señales de Trading con MQL5: Estrellas de la Mañana y de la Noche + RSI

Archivos adjuntos
324.zip (6.47 KB, Descargar 2 veces)

El MQL5 Wizard te permite crear Asesores Expertos listos para usar, basados en las clases de la biblioteca estándar que vienen con el terminal cliente (puedes ver más detalles en Creación de Asesores Expertos en MQL5 Wizard). Te permite verificar rápidamente tus ideas de trading; todo lo que necesitas es crear tu propia clase de señales de trading. Puedes encontrar la estructura de esta clase y un ejemplo en el artículo MQL5 Wizard: Cómo Crear un Módulo de Señales de Trading.

La idea principal es la siguiente: la clase de señales de trading se deriva de CExpertSignal. Luego, es necesario sobrescribir los métodos virtuales LongCondition() y ShortCondition() con tus propios métodos.

Existen libros como "Estrategias de los mejores traders" (en ruso), donde se consideran diversas estrategias de trading. Aquí nos enfocaremos en los patrones de velas de reversión, confirmados por los osciladores Estocástico, CCI, MFI y RSI.

La mejor manera de proceder es crear una clase separada, derivada de CExpertSignal, para verificar la formación de los patrones de velas. Para confirmar las señales de trading generadas por los patrones de velas, solo es necesario escribir una clase derivada de CCandlePattern y añadir las características necesarias (por ejemplo, la confirmación por osciladores).

En este artículo, consideraremos las señales basadas en los patrones de velas de reversión "Estrella de la Mañana/Estrella de la Noche" (Morning Doji Star/Evening Doji Star), confirmadas por el indicador RSI. El módulo de señales de trading se basa en la clase CCandlePattern, que es un ejemplo sencillo de su uso para la creación de señales de trading con patrones de velas.

1. Patrones de Velas de Reversión: "Estrella de la Mañana" y "Estrella de la Noche"

1.1. Estrella de la Mañana

Este patrón indica la reversión de la tendencia bajista, y está compuesto por tres velas (Fig. 1). Después de una larga vela negra, aparece una vela (el color no importa) con un cuerpo pequeño, que se sitúa fuera del cuerpo de la vela negra. El cuerpo pequeño de la vela indica que la fuerza de los toros y los osos es igual, lo que sugiere que el mercado está listo para cambiar de tendencia.

La tercera vela del patrón es una vela alcista, cuyo cuerpo no se solapa con el cuerpo de la segunda vela, y el precio de cierre se sitúa dentro del cuerpo de la primera (bajista). La vela resultante del modelo también se muestra en la Figura 1.

Si la segunda vela es una vela tipo doji, el modelo se denomina "Estrella de la Mañana Doji".

Fig. 1. Patrones de velas

Fig. 1. Patrones de velas "Estrella de la Mañana" y "Estrella de la Mañana Doji"

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

//+------------------------------------------------------------------+
//| Comprobar formación del patrón "Estrella de la Mañana"         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- Estrella de la Mañana
   if((Open(3)-Close(3)>AvgBody(1)) && // vela bajista, su cuerpo es mayor que el cuerpo promedio
      (MathAbs(Close(2)-Open(2)<AvgBody(1*0.5) && // segunda vela tiene un cuerpo pequeño (menor que la mitad del cuerpo promedio)
      (Close(2)<Close(3)) && // cierre de la segunda vela es menor que el cierre de la primera
      (Open(2)<Open(3)) && // apertura de la segunda vela es menor que la apertura de la primera
      (Close(1)>MidOpenClose(3))) // cierre de la última vela completada es mayor que el centro de la primera
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Comprobar formación del patrón "Estrella de la Mañana Doji"  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningDoji()
  {
//--- Estrella de la Mañana Doji
   if((Open(3)-Close(3)>AvgBody(1) && // vela bajista con cuerpo mayor que el cuerpo promedio
      (AvgBody(2)<AvgBody(1*0.1) && // la segunda vela tiene un cuerpo muy pequeño (doji)
      (Close(2)<Close(3)) && // cierre de la segunda vela es menor que el cierre de la primera
      (Open(2)<Open(3)) && // apertura de la segunda vela es menor que la apertura de la primera
      (Open(1)>Close(2)) && // espacio hacia arriba en la última vela completada
      (Close(1)>Close(2))) // cierre de la última vela completada 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 verificar la formación de los patrones "Estrella de la Mañana" y "Estrella de la Mañana Doji".


1.2. Estrella de la Noche

Este patrón indica la reversión de la tendencia alcista, y también está compuesto por tres velas (Fig. 2). Después de una larga vela blanca, aparece una vela (el color no importa) con un cuerpo pequeño que se encuentra fuera del cuerpo de la vela blanca. El cuerpo pequeño de la vela indica que la fuerza de los toros y los osos es igual, lo que sugiere que el mercado está listo para cambiar de tendencia.

La tercera vela del patrón es una vela bajista, cuyo cuerpo no se solapa con el cuerpo de la segunda vela, y el precio de cierre se sitúa dentro del cuerpo de la primera (alcista). La vela resultante del modelo también se muestra en la Figura 2.

Si la segunda vela es una vela tipo doji, el modelo se denomina "Estrella de la Noche Doji".

Fig. 2. Patrones de velas

Fig. 2. Patrones de velas "Estrella de la Noche" y "Estrella de la Noche Doji"

Aquí están los métodos para identificar los patrones "Estrella de la Noche" y "Estrella de la Noche Doji":

//+------------------------------------------------------------------+
//| Comprobar formación del patrón "Estrella de la Noche"         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- Estrella de la Noche
   if((Close(3)-Open(3)>AvgBody(1)) && // vela alcista con cuerpo mayor que el cuerpo promedio
      (MathAbs(Close(2)-Open(2)<AvgBody(1*0.5) && // segunda vela tiene un cuerpo pequeño (menos de la mitad del promedio)
      (Close(2)>Close(3)) && // cierre de la segunda vela es mayor que el cierre de la primera
      (Open(2)>Open(3)) && // apertura de la segunda vela es mayor que la apertura de la primera
      (Close(1)<MidOpenClose(3))) // cierre de la última vela completada es menor que el centro de la primera
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Comprobar formación del patrón "Estrella de la Noche Doji"   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningDoji()
  {
//--- Estrella de la Noche Doji
   if((Close(3)-Open(3)>AvgBody(1) && // vela alcista con cuerpo mayor que el cuerpo promedio
      (AvgBody(2)<AvgBody(1*0.1) && // segunda vela tiene un cuerpo muy pequeño (doji)
      (Close(2)>Close(3)) && // cierre de la segunda vela es mayor que el cierre de la primera
      (Open(2)>Open(3)) && // apertura de la segunda vela es mayor que la apertura de la primera
      (Open(1)<Close(2)) && // espacio hacia abajo en la última vela completada
      (Close(1)<Close(2))) // cierre de la última vela completada es menor 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 verificar la formación de los patrones "Estrella de la Noche" y "Estrella de la Noche Doji".


2. Señales de Trading Confirmadas por el Indicador RSI

Las señales de trading para abrir posiciones largas o cortas deben ser confirmadas por el RSI. El valor del RSI debe ser menor o mayor que los niveles críticos (40 para posición larga y 60 para posición corta).

El cierre de la posición abierta depende de los valores del RSI. Esto puede realizarse en 2 casos:

  • Si el RSI ha alcanzado el nivel crítico opuesto (70 para posición larga y 30 para posición corta)
  • Si la señal de reversa no está confirmada (cuando el RSI alcanza los siguientes niveles: 30 para posición larga y 70 para posición corta)

Fig. 3. Patrón de

Fig. 3. Patrón de "Estrella de la Mañana", confirmado por el indicador RSI

  • int CMS_ES_RSI::LongCondition() - comprueba las condiciones para abrir una posición larga (devuelve 80) y cerrar la posición corta (devuelve 40);
  • int CMS_ES_RSI::ShortCondition() - comprueba las condiciones para abrir una posición corta (devuelve 80) y cerrar la posición larga (devuelve 40).

2.1. Abrir posición larga/Cerrar posición corta

  1. La formación del patrón "Estrella de la Mañana" debe ser confirmada por el RSI:
    RSI(1)<40 (el valor del RSI de la última barra completada debe ser menor que 40).

  2. La posición corta debe ser cerrada si el RSI ha cruzado hacia arriba los niveles críticos 70 o 30.

//+------------------------------------------------------------------+
//| Comprueba condiciones para entrada y salida del mercado         |
//| 1) Entrada al mercado (abrir posición larga, resultado=80)      |
//| 2) Salida del mercado (cerrar posición corta, resultado=40)     |
//+------------------------------------------------------------------+
int CMS_ES_RSI::LongCondition()
  {
   int result=0;
//--- idx puede ser usado para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso EA comprueba condiciones de trading en cada tick
//--- idx=1 - en este caso EA comprueba condiciones de trading solo en barras de noticias
  int idx   =StartIndex();
//--- comprobando condiciones para abrir posición larga
//--- formación del patrón Estrella de la Mañana y RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (RSI(1)<40))
     result=80;
//--- comprobando condiciones para cerrar posición corta
//--- cruce de línea de señal de niveles de sobrecompra/sobreventa (hacia arriba 30, hacia arriba 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- devolver resultado
   return(result);
  }


2.2. Abrir posición corta/Cerrar posición larga

  1. La formación del patrón "Estrella de la Noche" debe ser confirmada por el RSI:
    RSI(1)>60 (el valor del RSI de la última barra completada debe ser mayor que 60).

  2. La posición larga debe ser cerrada si el RSI ha cruzado hacia abajo los niveles críticos 70 o 30.

//+------------------------------------------------------------------+
//| Comprueba condiciones para entrada y salida del mercado         |
//| 1) Entrada al mercado (abrir posición corta, resultado=80)      |
//| 2) Salida del mercado (cerrar posición larga, resultado=40)     |
//+------------------------------------------------------------------+
int CMS_ES_RSI::ShortCondition()
  {
   int result=0;
//--- idx puede ser usado para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso EA comprueba condiciones de trading en cada tick
//--- idx=1 - en este caso EA comprueba condiciones de trading solo en barras de noticias
  int idx   =StartIndex();
//--- comprobando condiciones para abrir posición corta
//--- formación del patrón Estrella de la Noche y RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (RSI(1)>60))
     result=80;
//--- comprobando condiciones para cerrar posición larga
//--- cruce de línea de señal de niveles de sobrecompra/sobreventa (hacia abajo 70, hacia abajo 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- devolver resultado
   return(result);
  }


2.3. Creando un Asesor Experto utilizando MQL5 Wizard

La clase CMS_ES_RSI no está incluida en las clases de la Biblioteca Estándar, para usarla, es necesario descargar el archivo acms_es_rsi.mqh (ver adjuntos) y guardarlo en la carpeta de datos del terminal_cliente\MQL5\Include\Expert\Signal\MySignals. Lo mismo debe hacerse con el archivo candlepatterns.mqh. Puedes usarlo en MQL5 Wizard después de reiniciar el MetaEditor.

Para crear un Asesor Experto, lanza el MQL5 Wizard:

Fig. 4. Creando un Asesor Experto usando MQL5 Wizard

Fig. 4. Creando un Asesor Experto usando MQL5 Wizard

Especifica el nombre del Asesor Experto:

Fig. 5. Propiedades generales del Asesor Experto

Fig. 5. Propiedades generales del Asesor Experto

Después, selecciona los módulos de señales de trading que se utilizarán.

Fig. 6. Propiedades de las señales del Asesor Experto

Fig. 6. Propiedades de las señales del Asesor Experto

En nuestro caso, solo utilizamos un módulo de señales de trading.

Añadiendo el módulo de Señales basadas en Estrellas de la Mañana/Noche confirmadas por el RSI:

Fig. 7. Propiedades de las señales del Asesor Experto

Fig. 7. Propiedades de las señales del Asesor Experto

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

Fig. 8. Propiedades de las señales del Asesor Experto

Fig. 8. Propiedades de las señales del Asesor Experto

Puedes seleccionar cualquier propiedad de trailing, pero usaremos "Trailing Stop no utilizado":

Fig. 9. Propiedades de gestión de dinero del Asesor Experto

Fig. 9. Propiedades de gestión de dinero del Asesor Experto

Respecto a las propiedades de gestión del dinero, utilizaremos "Trading con volumen fijo":

Fig. 10. Propiedades de gestión de dinero del Asesor Experto

Fig. 10. Propiedades de gestión de dinero del Asesor Experto

Al presionar el botón

Publicaciones relacionadas

Comentarios (0)