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 3 Cuervos Negros/3 Soldados Blancos + CCI - Asesor Experto para MetaTrader 5

Visualizaciones:
1753
Ranking:
(22)
Publicado:
2014.01.07 11:32
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
acbc_ws_cci.mqh (7.99 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 inversas "3 Cuervos Negros/3 Soldados Blancos", confirmadas por indicador Commodity Channel Index . 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. "3 Black Crows" candlestick pattern

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 CCI

Las señales de trading para abrir posiciones largas cortas deben ser confirmadas por indicador CCI . El valor del CCI debe ser mayor/menor que los niveles críticos (-50 para posiciones largas) y 50 para posiciones cortas

El cierre de la posición abierta depende de los valores del CCI. Se puede hacer en 2 casos:

  1. if CCI line has reached the opposite critical level (80 for long position and -80 for short position)
  2. Si no está confirmada la señal invertida (cuando el CCI alcanza los siguientes niveles: -80 para posición larga y 80 para la posición corta)

Fig. 3. Patrón de "3 Curvos Blancos", confirmado por el indicador CCI

Fig. 3. Patrón de "3 Curvos Blancos", confirmado por el indicador CCI


  • int CBC_WS_CCI::LongCondition() - comprueba las condiciones para abrir posiciones largas (regresa de 80) y el cierre de posiciones cortas (regresa de 40);
  • int CBC_WS_CCI::ShortCondition() - comprueba las condiciones para abrir 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 Cuervos Negros" debe ser confirmada por indicador CCI : CCI(1) < -50 (el valor del 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 por arriba del nivel crítico -80 o cruzado por debajo del nivel 80.

//+---------------------------------------------------------------------+
//| Comprobar las condiciones de entrada y salida al mercado            |
//| 1) Entrada al mercado (apertura de posición larga, resultado = 80)  |
//| 2) Salida del mercado (cierre de posición corta, resultado = 40)    |
//+---------------------------------------------------------------------+
int CBC_WS_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 sólo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de condiciones para abrir posiciones largas
//--- formación de patrones 3 Soldados Blancos y CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (CCI(1)<-50))
     result=80;
//--- comprobación de condiciones para cerrar posiciones cortas
//--- señal de línea de cruce de niveles de sobrecompra / sobreventa ( abajo de -80, abajo 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 posición corta/Cierre de posición larga

  1. La formación del patrón "3 Soldados Blancos" debe ser confirmada por el indicador CCI : CCI(1) > 50 (el valor del indicador CCI de la última barra completa debe ser mayor de 50).

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

//+----------------------------------------------------------------------+
//| Comprobar las condiciones de entrada y salida al mercado             |
//| 1) Entrada al mercado (apertura de posición corta, resultado = 80)   |
//| 2) La salida del mercado (cierre de posición larga, resultado = 40)  |
//+----------------------------------------------------------------------+
int CBC_WS_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 sólo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de las condiciones para abrir una posición corta
//--- formación de patrones 3 Cuervos Negros y CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (CCI(1)>50))
     result=80;
//--- comprobación de las condiciones para cerrar posiciones largas
//--- cruce de línea de la señal de niveles de sobrecompra / sobreventa (hacia abajo -80, hacia abajo 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- devuelve resultado
   return(result);
  }


2.3. Creación de EA utilizando el Asistente MQL5

La clase CBC_WS_CCI no incluida en las clases de la Librería Estándar, para usarla, es necesario descargar el archivo acbc_ws_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 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 confirmed by CCI" 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

By pressing the "Finish" button, we will get the code of the generated Expert Advisor, located in Expert_ABC_WS_CCI.mq5, it will be saved in 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 establecen 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, pruebas del período: 2010.01.01-2011.03.16, PeriodCCI = 37, MA_period = 13).

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 de las pruebas del EA, basados en 3 Cuervos Negros/3 Soldados Blancos + CCI

Fig. 11. Resultados de las pruebas del EA, basados en 3 Cuervos Negros/3 Soldados Blancos + CCI


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_cci.mq5.

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

Asistente MQL5 - señales de trade basadas en 3 cuervos negros/3 soldados blancos + estocástico Asistente MQL5 - señales de trade basadas en 3 cuervos negros/3 soldados blancos + estocástico

rade de señales basado en patrones de velas de "3 cuervos negros/3 soldados blancos", confirmado por indicador estocástico. El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente del MQL5.

Stochastic Oscillator Stochastic Oscillator

El Stochastic Oscillator -Oscilador Estocástico- compara el precio de cierre de un título con su rango de precios durante un determinado período de tiempo.

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 + RSI Asistente MQL5 - señales de trade basadas en 3 Cuervos Negros/3 Soldados Blancos + RSI

Señales de trade basadas patrones de velas "cuervos negros 3/3 soldados blancos", confirmadas por indicador de índice de fuerza relativa (RSI). El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente del MQL5.