Crea tu Asesor Experto en MetaTrader 5 con MQL5 Wizard: Señales de Trading con 3 Cuervos Negros/3 Soldados Blancos + RSI

Mike 2011.02.18 22:08 17 0 0
Archivos adjuntos

El MQL5 Wizard es una herramienta genial que te permite crear Asesores Expertos listos para usar, basados en las clases de la librería estándar que vienen con el terminal cliente. Si quieres conocer más, revisa el artículo sobre Creación de Asesores Expertos en MQL5 Wizard.

Con este wizard, puedes comprobar tus ideas de trading rápidamente; solo necesitas crear tu propia clase de señales de trading. La estructura de esta clase y un ejemplo están disponibles en el artículo MQL5 Wizard: Cómo crear un módulo de señales de trading.

La idea básica es la siguiente: la clase de señales de trading se deriva de CExpertSignal. Después, es necesario sobreescribir los métodos LongCondition() y ShortCondition() con tus propios métodos.

Para profundizar en estrategias de trading, un libro interesante es "Estrategias de los mejores traders" (en ruso), donde se exploran varias estrategias, enfocándose en patrones de velas de reversión, confirmados por los osciladores Estocástico, CCI, MFI y RSI.

Lo ideal es crear una clase separada, derivada de CExpertSignal para comprobar la formación de patrones de velas. Para confirmar las señales de trading generadas por patrones de velas, basta con escribir la clase, derivada de CCandlePattern y añadir las características necesarias (por ejemplo, la confirmación por osciladores).

Aquí consideraremos las señales basadas en el patrón de velas de reversión "3 Cuervos Negros/3 Soldados Blancos", confirmadas por el indicador Índice de Fuerza Relativa (RSI). El módulo de señales de trading se basa en la clase CCandlePattern, que es un ejemplo sencillo de su uso para crear señales de trading con patrones de velas.


1. Patrones de velas de reversión: "3 Cuervos Negros" y "3 Soldados Blancos"

1.1. 3 Cuervos Negros

Este es un patrón de velas bajista que se utiliza para predecir la reversión de una tendencia alcista. Consiste en tres velas largas consecutivas que han cerrado por debajo de la vela anterior, con cada apertura ocurriendo dentro del cuerpo de la vela anterior.

Patrón de velas 3 Cuervos Negros

Patrón de velas "3 Cuervos Negros"

La identificación del patrón "3 Cuervos Negros" se implementa en el método CheckPatternThreeBlackCrows de la clase CCandlePattern:

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón de velas "3 Cuervos Negros" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Cuervos Negros 
   if((Open(3)-Close(3)>AvgBody(1)) && //(vela negra larga)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) &&
      (MidPoint(2)<MidPoint(3)) && // (puntos medios más bajos)
      (MidPoint(1)<MidPoint(2)))
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) de la clase CCandlePattern se utiliza para verificar la formación del patrón de velas "3 Cuervos Negros".


1.2. Patrón de velas 3 Soldados Blancos

Este es un patrón de velas alcista que se utiliza para predecir la reversión de una tendencia bajista. Consiste en tres velas largas consecutivas que han cerrado por encima de la vela anterior, con cada apertura ocurriendo dentro del cuerpo de la vela anterior.

El patrón es válido siempre que la vela del segundo día abra en la mitad superior del rango del primer día. Al finalizar el segundo día, debe cerrar cerca de su máximo, dejando una sombra superior muy pequeña o inexistente. El mismo patrón se repite en el tercer día.

Patrón de velas 3 Soldados Blancos

Patrón de velas "3 Soldados Blancos"

Aquí está el método para el reconocimiento del patrón "3 Soldados Blancos":

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón de velas "3 Soldados Blancos" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 Soldados Blancos
   if((Close(3)-Open(3)>AvgBody(1)) && // (vela blanca larga)
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3)) && // (puntos medios más altos)
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) de la clase CCandlePattern verifica la formación del patrón de velas "3 Soldados Blancos".



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 indicador RSI. El valor del RSI debe ser menor o mayor que los niveles críticos (40 para posiciones largas y 60 para posiciones cortas).

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

  1. si el RSI ha alcanzado el nivel crítico opuesto (70 para posiciones largas y 30 para posiciones cortas)
  2. si la señal inversa no está confirmada (cuando el RSI alcanza los siguientes niveles: 30 para posiciones largas y 70 para posiciones cortas)

Patrón de 3 Cuervos Negros, confirmado por el indicador Estocástico

Patrón de "3 Cuervos Negros", confirmado por el indicador Estocástico


  • int CML_RSI::LongCondition() - verifica las condiciones para abrir una posición larga (devuelve 80) y cerrar la posición corta (devuelve 40);
  • int CML_RSI::ShortCondition() - verifica 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 "3 Soldados Blancos" debe estar 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 cerrarse si el indicador RSI ha cruzado hacia arriba los niveles críticos 70 o 30.

//+------------------------------------------------------------------+
//| Comprueba las condiciones para entrar y salir del mercado            |
//| 1) Entrada al mercado (abrir posición larga, resultado=80)            |
//| 2) Salida del mercado (cerrar posición corta, resultado=40)            |
//+------------------------------------------------------------------+
int CBC_WS_RSI::LongCondition()
  {
   int result=0;
//--- idx puede ser usado para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso EA verifica las condiciones de trading en cada tick
//--- idx=1 - en este caso EA verifica las condiciones de trading solo en barras de noticias
  int idx   =StartIndex();
//--- comprobación de condiciones para abrir posición larga
//--- formación del patrón 3 Soldados Blancos y RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (RSI(1)<40))
     result=80;
//--- comprobación de condiciones para cerrar posición corta
//--- cruce de la 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 "3 Cuervos Negros" debe estar 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 cerrarse si el indicador RSI ha cruzado hacia abajo los niveles críticos 70 o 30.

//+------------------------------------------------------------------+
//| Comprueba las condiciones para entrar y salir del mercado            |
//| 1) Entrada al mercado (abrir posición corta, resultado=80)            |
//| 2) Salida del mercado (cerrar posición larga, resultado=40)            |
//+------------------------------------------------------------------+
int CBC_WS_RSI::ShortCondition()
  {
   int result=0;
//--- idx puede ser usado para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso EA verifica las condiciones de trading en cada tick
//--- idx=1 - en este caso EA verifica las condiciones de trading solo en barras de noticias
   int idx   =StartIndex();
//--- comprobación de condiciones para abrir posición corta
//--- formación del patrón 3 Cuervos Negros y RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60))
     result=80;
//--- comprobación de condiciones para cerrar posición larga
//--- cruce de la 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 Asesor Experto usando MQL5 Wizard

La clase CML_RSI no está incluida en las clases de la biblioteca estándar. Para usarla, es necesario descargar el archivo acml_rsi.mqh (ver anexos) y guardarlo en la carpeta terminal_datos_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:

Creando Asesor Experto usando MQL5 Wizard

Creando Asesor Experto usando MQL5 Wizard

Especifica el nombre del Asesor Experto:

Propiedades generales del Asesor Experto

Propiedades generales del Asesor Experto

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

Propiedades de señales del Asesor Experto

Propiedades de señales del Asesor Experto

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

Añadiendo el módulo de Señales basadas en 3 Cuervos Negros/3 Soldados Blancos:

Propiedades de señales del Asesor Experto

Propiedades de señales del Asesor Experto

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

Propiedades de señales del Asesor Experto

Propiedades de señales del Asesor Experto

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

Propiedades de trailing del Asesor Experto

Propiedades de trailing del Asesor Experto

En cuanto a las propiedades de gestión del dinero, usaremos "Trading con volumen fijo":

Propiedades de gestión del dinero del Asesor Experto

Propiedades de gestión del dinero del Asesor Experto

Al presionar el botón "Finalizar", obtendrás el código del Asesor Experto generado, ubicado en Expert_ABC_WS_RSI.mq5, que se guardará en terminal_data_folder\MQL5\Experts\.

Los parámetros de entrada predeterminados del Asesor Experto generado:

//--- entradas para señal principal
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 precio 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:

//--- entradas para señal principal
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 precio 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 umbral para abrir y cerrar posiciones.

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

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

El Asesor Experto, generado por MQL5 Wizard, abre y cierra posiciones usando los "votos" de los módulos de señales de trading. El voto del módulo principal (como contenedor, que consiste en todos los módulos añadidos) también se utiliza, pero sus métodos LongCondition() y ShortCondition() siempre devuelven 0.

Los resultados de los votos del módulo principal también se usan en el promedio de "votos". En nuestro caso, tenemos: módulo principal + 1 módulo de señales de trading, por lo que necesitamos tener en cuenta este hecho al establecer los valores del umbral. Debido a esto, los ThresholdOpen y ThresholdClose deben configurarse como 40=(0+80)/2 y 20=(0+40)/2.

Los valores de los parámetros de entrada Signal_StopLevel y Signal_TakeLevel están establecidos en 0, lo que significa que el cierre de las posiciones se realizará solo cuando las condiciones de cierre sean verdaderas.


2.4. Resultados de la retroalimentación histórica

Analicemos la retroalimentación del Asesor Experto en datos históricos (EURUSD H1, período de prueba: 2010.01.01-2011.02.02, PeriodRSI=37, MA_period=51).

En la creación del Asesor Experto, utilizamos el volumen fijo (Trading Fixed Lot, 0.1), no se utiliza el algoritmo de Trailing Stop (Trailing no utilizado).

Resultados de prueba del Asesor Experto, basado en 3 Cuervos Negros/3 Soldados Blancos + RSI

Resultados de prueba del Asesor Experto, basado en 3 Cuervos Negros/3 Soldados Blancos + RSI


El mejor conjunto de parámetros de entrada se puede encontrar usando el Tester de Estrategias del terminal cliente de MetaTrader 5.

El código del Asesor Experto, creado por MQL5 Wizard, está adjunto en expert_abc_ws_rsi.mq5.


Lista
Comentarios 0