Mira cómo descargar robots gratis
¡Búscanos en Facebook!
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 3 Cuervos Negros/3 Soldados Blancos + RSI - Asesor Experto para MetaTrader 5

Visualizaciones:
2180
Ranking:
(25)
Publicado:
2014.01.07 11:43
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
acbc_ws_rsi.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 "ready-made" basados en las clases de la Librería Estándar entregadas junto con el terminal de cliente (para los detalles, véase Creación de EAs "ready-made" en el asistente MQL5). Para comprobar rápidamente tus ideas de trade, todo lo que necesitas es crear su propia clase de señales de trading. La estructura y ejemplo de esta clase puede encontrarse en el artículo Asistente MQL5: Cómo crear un Módulo de Señales de Trading.

La idea genérica es la siguiente: la clase de señales de trading se deriva del 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 hay muchas estrategias de trading, nos centraremos en los patrones de velas invertidas, confirmados por los osciladores Stochastic, CCI, MFI and RSI.

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

Aquí tendremos en cuenta las señales, basadas en patrones de velas invertidas "los 3 Cuervos Negros/3 Soldados Blancos", confirmada por indicador de Índice de fuerza relativa (RSI) . El módulo de comercio señales se basa en la clase CCandlePattern , es un simple ejemplo de su uso para la creación de señales de trade con los patrones de vela.


1. Patrones de velas inversas "3 Cuervos Negros" y 3 "Blanco soldados"

1.1. 3 Cuervos Negros

Un patrón de vela bajista que se utiliza para predecir la inversión de la tendencia alcista actual. Este patrón se compone de tres velas consecutivas de cuerpo largo que han cerrado más bajas que el día anterior con cada sesión abierta dentro del cuerpo de la vela anterior.

Fig. 1. Patrón de la vela "3 Cuervos Negros"

Fig. 1. Patrón de la vela "3 Cuervos Negros"

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

//+------------------------------------------------------------------+
//| Comprobaciones en la formación de patrones de velas de "3 Cuervos Blancos"           |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Cuervos Negros 
   if((Open(3)-Close(3)>AvgBody(1)) && // (long black)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) && 
      (MidPoint(2)<MidPoint(3))     && // (puntos medios 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 comprobar la formación del patrón de vela "3 cuervos negros".


1.2. Patrón de vela "3 Soldados Blancos"

Un patrón de vela alcista que se utiliza para predecir la inversión de la actual tendencia bajista. Este patrón se compone de tres velas consecutivas de cuerpo largo que han cerrado más alto que el día anterior, con cada sesión abierta del cuerpo de la vela anterior.

El patrón es válido mientras que la vela del segundo día se abre en la mitad superior del rango del primer día. Al final del segundo día, se debería cerrar cerca su máximo, dejando una sombra superior muy pequeña o inexistentes. El mismo patrón se repite a continuación, en el tercer día.

Fig. 2. Patrón de vela "3 Soldados Blancos"

Fig. 2. Patrón de vela "3 Soldados Blancos"

Este es el método para el reconocimiento de patrón "3 Soldados Blancos":

//+-----------------------------------------------------------------------+
//| Comprobación de la formación de patrones de vela "3 Soldados Blancos" |
//+-----------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 Soldados Blancos
   if((Close(3)-Open(3)>AvgBody(1)) && // long white
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // puntos medios altos
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) de la clase CCandlePattern se utiliza para comprobar la formación del patrón de velas "3 soldados blancos".



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

LAs señales de trade de apertura de posición larga o corta deben ser confirmadas por indicador RSI . El valor del RSI debe ser inferior/superior a los niveles críticos (40 para la posición larga) y 60 para la posición corta.

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

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

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

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


  • int CML_RSI::LongCondition() - comprueba las condiciones para la apertura de posicibes largas (regresa de 80) y el cierre de posiciones cortas (regresa de 40);
  • int CML_RSI::ShortCondition() - comprueba las condiciones para la apertura de posiciones cortas (regresa de 80) y el cierre de posiciones largas (regresa de 40).

2.1. Abre posición larga/cierra posición corta

  1. La formación del patrón "3 Soldados Blancos" debe ser confirmado por indicador RSI : RSI(1)<40 (el valor del RSI de la última barra completa debe ser menor de 40).

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

//+------------------------------------------------------------------+
//| Comprueba las condiciones para la entrada y salida del mercado                 |
//| 1) Entrada al mercado (apertura de posiciones largas, resultado = 80)                  |
//| 2) Salida del mercado (cierre de posiciones cortas, resultado=40)                 |
//+------------------------------------------------------------------+
int CBC_WS_RSI::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 sólo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de condiciones para la apertura de posiciones largas
//--- formación de patrones 3 Soldados Blancos y RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (RSI(1)<40))
     result=80;
//--- comprobación de condiciones para el cierre de posiciones cortas
//--- línea de señal de cruce 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;
//--- devuelve resultadot
   return(result);
  }

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

  1. La formación del patrón "3 Cuervos Negros" debe ser confirmada por indicador RSI : RSI(1)>60 (el valor del indicador RSI de la última barra completa debe ser mayor de 60).

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

//+------------------------------------------------------------------+
//| Comprueba las condiciones para la entrada y salida del mercado                 |
//| 1) Entrada al mercado (apertura de posiciones cortas, resultado = 80)                 |
//| 2) Salida del mercado (cierre de posiciones largas, resultado=40)                  |
//+------------------------------------------------------------------+
int CBC_WS_RSI::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 sólo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de condiciones para la apertura de posiciones cortas
//--- formación de patrones 3 Cuervos Negros y RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60))
     result=80;
//--- comprobación de condiciones para el cierre de posiciones largas
//--- ínea de señal de cruce 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;
//--- devuelve resultado
   return(result);
  }


2.3. Creación de EA utilizando el Asistente MQL5

La clase CML_RSI no incluida en las clases de libreria estándar, para usarlo, es necesario descargar el archivo acml_rsi.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 elAsistente MQL5:

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

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

Let's specify the name of the Expert Advisor:

Fig. 5. Propiedades generales del EA

Fig. 5. Propiedades generales del EA

Después de eso 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.

Adding the "Signals based on 3 Black Crows/3 White Soldiers" module of trading signals:

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

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

Module of trade signals added:

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 de money management, vamos a usar "Trading con el volumen de trade fijo":

Fig. 10. Propiedades del money management del EA

Fig. 10. Propiedades del money management del EA

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

Parámetros de entrada por defecto del EA generado:

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

debe ser reemplazado por:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =40;     // Valor umbral de señal de apertura [0...100]
input int            Signal_ThresholdClose  =20;     // Valor umbral de señal de cierre [0...100]
input double         Signal_PriceLevel      =0.0;    // Nivel de precios para ejecutar una oferta
input double         Signal_StopLevel       =0.0;    // Nivel Stop Loss (en puntos)
input double         Signal_TakeLevel       =0.0;    // Nivel 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 de LongCondition() y ShortCondition() de clase señales de trade hemos especificado valores fijos del umbral:

  • Posición de apertura: 80;
  • Posición de cierre: 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 contenedor, consta de todos los módulos añadidos), pero sus métodos LongCondition() y ShortCondition() siempre devuelven 0.

Los resultados del voto del módulo principal también se utiliza en un 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 se ajustan los valores umbral. Debido a este hecho se deben establecer 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 del backtesting del histórico

Consideremos backtesting del EA en los datos históricos (EURUSD H1, periodo de pruebas: 2010.01.01-2011.02.02, PeriodRSI = 37, MA_period = 51).

En la creación del EA utilizamos volumen fijo (Trading Fixed Lot, 0.1), Trailing Stop algorithm is not used (Trailing not used).

Fig. 11. Resultados del EA, basado en 3 Cuervos Negros/3 Soldados Blancos + RSI

Fig. 11. Resultados del EA, basado en 3 Cuervos Negros/3 Soldados Blancos + RSI


Puedes 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 adjunta en expert_abc_ws_rsi.mq5.

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

Asistente MQL5 - Señales de trade basadas en 3 Cuervos Negros/3 Soldados Blancos + MFI Asistente MQL5 - Señales de trade basadas en 3 Cuervos Negros/3 Soldados Blancos + MFI

Señales de trade basadas en patrones de velas "3 Cuervos Negros /3 Soldados Blancos", confirmadas por el indicador de Market Facilitation Index (MFI). El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente del MQL5.

Asistente MQL5 - señales de trade basadas en 3 Cuervos Negros/3 Soldados Blancos + CCI Asistente MQL5 - señales de trade basadas en 3 Cuervos Negros/3 Soldados Blancos + CCI

Señales de trade basadas en patrones de velas de "3 Cuervos Negros/3 Soldados Blancos", confirmados por el indicador Commodity Channel Index (CCI). El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente del MQL5.

Demo_Create_OBJ_BITMAP_LABEL_EA Demo_Create_OBJ_BITMAP_LABEL_EA

El ejemplo de botón, creado usando el objeto de tipo OBJ_BITMAP_LABEL.

Demo_Create_OBJ_BITMAP_Script Demo_Create_OBJ_BITMAP_Script

El ejemplo de imagen de fondo gráfico creado con el objeto de tipo OBJ_BITMAP.