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 + estocástico - Asesor Experto para MetaTrader 5

Visualizaciones:
1799
Ranking:
(24)
Publicado:
2014.01.07 11:22
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
¿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 las señales de trading se deriva de CExpertSignal, después lo que se necesita es reemplazar los métodos virtuales LongCondition() y ShortCondition() con 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 el patrón de velas invertidas de "los 3 cuervos negros/3 soldados blancos" , confirmadas por el indicador estocástico . 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 reversión candelabro "3 Cuervos Negros" y "3 Soldados Blancos"

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.

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

Figure 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"

Figure 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 Estocástico

El señales de trading para abrir posiciones largas cortas debe ser confirmada por el oscilador estocástico . Si la línea de señal %D debe ser mayor/menor entonces le corresponde un nivel crítico (30 o 70).

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

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

Figura 3. Patrón de "3 Soldados Blancos", confirmado por indicador Estocástico

Fig. 3. Patrón de "3 Soldados Blancos", confirmado por indicador Estocástico


La comprobación de las condiciones de trade para la entrada y salida se implementan en dos métodos:

  • int CBC_WS_Stoch::LongCondition() - comprueba las condiciones para abrir la posición larga (regresa de 80) y el cierre de la posición corta (regresa de 40);
  • int CBC_WS_Stoch::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. Abre posición larga/cierra posición corta

  1. La formación del patrón "Tres soldados blancos" debe ser confirmada por el indicador estocástico : StochSignal(1) < 30 (el valor de la línea de señal del indicador Estocástico de la última barra completa debe ser menos que 30).

  2. La posición corta debe estar cerrada si la línea de señal del indicador estocástico ha sobrepasado los niveles 20 u 80.

//+------------------------------------------------------------------+
//| Comprueba condiciones de entrada y salida del mercado            |
//| 1) Entrada al Mercado (abre posición larga, resultado=80)        |
//| 2) Salida del Mercado (cierra posición corta, resultado=40)      |
//+------------------------------------------------------------------+
int CBC_WS_Stoch::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 del trade en cada tick
//--- idx=1 - en este caso el EA comprueba las condiciones de trade solo en las nuevas barras
   int idx   =StartIndex();
//--- comprobación de las condiciones para abrir posiciones largas
//--- formación de patrones 3 Soldados Blancos y línea de señal<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30))
     result=80;
//--- comprobación de condiciones para cerrar la posición corta
//--- señal de línea de cruce de niveles de sobrecompra / sobreventa (hacia abajo 20, hacia arriba 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- return result
   return(result);
  }

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

  1. La formación del patrón de "Los tres Cuervos Negros" debe ser confirmada por el indicador estocástico : StochSignal(1) > 70 (el valor de la línea de señal del indicador Estocástico de la última barra completa debe ser mayor que 70).

  2. La posición larga debe estar cerrada si la línea de señal del indicador estocástico ha sobrepasado los niveles 80 ó 20.

//+------------------------------------------------------------------+
//| Comprueba condiciones de entrada y salida del mercado            |
//| 1) Entrada al Mercado (abre posición corta, resultado=80)        |
//| 2) Salida del Mercado (cierra posición larga, resultado=40)      |
//+------------------------------------------------------------------+
int CBC_WS_Stoch::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 del trade en cada tic
//--- idx=1 - en este caso el EA comprueba las condiciones de trade solo en las nuevas barras
   int idx   =StartIndex();
//--- comprobación de las condiciones para abrir posiciones cortas
//--- formación de patrones 3 Cuervos Negros y línea de señal>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70))
     result=80;
//--- comprobación de condiciones para cerrar la posición larga
//--- señal de línea de cruce de niveles de sobrecompra / sobreventa (hacia abajo 80, hacia arriba 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- return result
   return(result);
  }


2.3. Creación de EA utilizando el Asistente MQL5

La clase CBC_WS_Stoch no incluida en las clases de la Librería Estándar, para usarla, es necesario descargar el archivo acbc_ws_stoch.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.

Añadiendo el módulo "Señales basadas en 3 Cuervos Negros/3 Soldados Blancos confirmados por estocástico" de las señales de trading:

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_Stoch.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, pruebas de los períodos: 2010.01.01-2011.02.02, PeriodK = 47, PeriodD = 9, PeriodSlow = 13, MA_period = 5).

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 la EA, basado en 3 Cuervos Negros/3 Soldados Blancos + Estocástico"

Fig. 11. Resultados de la EA, basado en 3 Cuervos Negros/3 Soldados Blancos + Estocástico"


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

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

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.

Standard Deviation (StdDev) Standard Deviation (StdDev)

El indicador Standard Deviation (StdDev, Desviación Estándar) mide la volatilidad del mercado. Este indicador caracteriza la magnitud del cambio del precio con respecto a la Media Móvil.

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.

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.