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 Hammer/Hanging Man + RSI - Asesor Experto para MetaTrader 5

Visualizaciones:
1635
Ranking:
(29)
Publicado:
2014.01.10 12:25
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
ach_hm_rsi.mqh (7.93 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 listos para usar basados en clases de la Librería Estándar entregadas junto con el terminal de cliente (para los detalles véase Creación de EAS listos para usar del asistente MQL5). Permite comprobar rápidamente tus ideas de trade, y todo lo que necesitas es crear tu propia clase de señales de trading. La estructura de esta clase y ejemplos pueden encontrarse en el artículo Asistente MQL5: Cómo Crear un Módulo de Trading.

La idea genérica es la siguiente: la clase de las señales de trading se deriva del CExpertSignal, y 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 se consideran muchas estrategias de trading, y nos centraremos en los patrones de velas de reversión, confirmados por los osciladores estocástico, RSI , CCI y MFI.

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

Aquí vamos a considerar las señales, basadas patrones de velas de reversión "Hammer/Hanging Man", confirmadas por el indicador CCI . El módulo de señales de trade se basa en la clase CCandlePattern , es un simple ejemplo de su uso para creación de señales de trade con los patrones de velas.


1. Patrones de velas de reversión "Hammer" y "Hombre colgado"

1.1. Hammer

El "Hamer" es una vela con un cuerpo pequeño y mecha inferior larga, formada tras movimiento de los precios a la baja. El patrón "Hamer" indica el final de una tendencia bajista.

No importa el color del cuerpo de la vela, pero un hammer alcista indica mayor potencial alcista. El cuerpo del patrón "Hammer" muchas veces se forma cerca del mínimo de la vela anterior. La mecha inferior más larga y mecha superior mas corta conduce a un mayor potencial del patrón de reversión.

Fig. 1. Patrón de velas "Martillo"

Fig. 1. Patrón de velas "Martillo"

El reconocimiento del patrón "Hamer" se implementa en el método CheckPatternHammer() de la clase CCandlePattern:

//+------------------------------------------------------------------+
//| comprobaciones en la formación de patrones de velas "Hammer"     |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- Hammer
   if((MidPoint(1)<CloseAvg(2))                                 && // down trend
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3
      (Close(1)<Close(2)) && (Open(1)<Open(2)))                    // body gap
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) de la clase CCandlePattern se utiliza para comprobar la formación del patrón de vela "Hammer".


1.2. Hanging Man

El "Hanging Man" es una vela con un cuerpo pequeño y mecha inferior larga, formado después de movimiento alcista de precios. El patrón de "Hanging Man" indica el final de una tendencia alcista.

No importa el color del cuerpo de vela, pero una vela bajista indica mayor potencial bajista. El cuerpo del patrón del "Hanging Man" a menudo se forma cerca del máximo de la vela anterior. La mecha inferior más larga y mecha superior mas corta conduce a un mayor potencial del patrón de reversión.

Fig. 2. Patrón de vela "Hanging Man"

Fig. 2. Patrón de vela "Hanging Man"

El reconocimiento del patrón de "Hanging Man" se implementa en método CheckPatternHangingMan() la clase CCandlePattern:

//+------------------------------------------------------------------+
//| Comprobaciones en la formación de patrones de vela "Hanging Man" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- Hanging man
   if((MidPoint(1)>CloseAvg(2))                                && // tendencia alcista
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3
      (Close(1)>Close(2)) && (Open(1)>Open(2))))                  // gap del cuerpo
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) de la clase CCandlePattern se utiliza para comprobar la formación del patrón de vela "Hanging Man".



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

Las señales de trading de apertura de posiciones largas o cortas deben ser confirmada 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 posiciones de abiertas depende 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 de reversión (cuando RSI alcanza los siguientes niveles: 30 para la posición larga y 70 para posición corta)

Fig. 3. Patrón "Harami", confirmado por el indicador by RSI

Fig. 3. Patrón "Harami", confirmado por el indicador by RSI


  • int CH_HM_RSI::LongCondition() - comprueba las condiciones para abrir posición larga (regrea de 80) y el cierre de la posición corta (regresa de 40);
  • int CH_HM_RSI::ShortCondition() - comprueba las condiciones para abrir posición corta (regresa de 80) y el cierre de posición larga (regresa de 40).

2.1. Apertura de posición larga/cierre de posición corta

  1. La formación del patron "Hamer" debe ser confirmada por indicador RSI: RSI(1)<40 (el valor del RSI de la última barra completa debe ser menor que 40).

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

//+------------------------------------------------------------------+
//| Checks conditions for entry and exit from market                 |
//| 1) Market entry (open long position, result=80)                  |
//| 2) Market exit (close short position, result=40)                 |
//+------------------------------------------------------------------+
int CH_HM_RSI::LongCondition()
  {
   int result=0;
//--- idx can be used to determine Expert Advisor work mode
//--- idx=0 - in this case EA checks trade conditions at each tick
//--- idx=1 - in this case EA checks trade consition only at news bars
   int idx   =StartIndex();
//--- checking of conditions to open long position
//--- formation of Hammer pattern and RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (RSI(1)<40))
     result=80;
//--- checking of conditions to close short position
//--- signal line crossover of overbought/oversold levels (upward 30, upward 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- return result
   return(result);
  }

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

  1. The formation of "Hanging Man" pattern must be confirmed by RSI indicator: RSI(1)>60 (the value of the RSI indicator of the last completed bar must be greater than 60).

  2. The long position must be closed if RSI indicator has crossed downward the critical levels 70 or 30.

//+---------------------------------------------------------------------+
//| Comprobaciones de condiciones para la entrada y salida del mercado  |
//| 1) Entrada en el mercado (apertura de posición corta, resultado=80) |
//| 2) Salida del mercado (cierre de posición larga, resultado=40)      |
//+---------------------------------------------------------------------+
int CH_HM_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 solo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de condiciones de apertura de posición corta
//--- formación del patrón  Hanging Man y RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (RSI(1)>60))
     result=80;
//--- comprobando las condiciones para cierre de posición larga
//--- cruce de lineas 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;
//--- devielve resultado
   return(result);
  }


2.3. Creación del EA utilizando el Asistente MQL5

Para usar la clase CH_HM_RSI no incluida en las clases de Librería Estándar, es necesario descargar el archivo ach_hm_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 el Asistente MQL5:

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

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

Vamos a especificar el nombre del EA:

Fig. 5. Propiedades generales del EA

Fig. 5. Propiedades generales del EA

Después de esto 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 Hammer/Hanging Man confirmados por RSI" de las señales de trading:

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

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

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

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

Fig. 10. Propiedades de money management del EA

Fig. 10. Propiedades de money management del EA

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

Los parámetros de entrada por defecto del EA generado:

//--- inputs for main signal
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 precios 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:

//--- inputs for main signal
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 precios 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 de umbral para abrir y cerrar posiciones.

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

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

Los votos resultados del módulo principal también se utilizan en el 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 ajustemos los valores de umbral. Debido a este hecho se deben establecer el 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 de backtesting del histórico

Consideremos backtesting del EA con los datos del historial (EURUSD H1, pruebas de período: 2010.01.01-2011.03.03, PeriodRSI = 33, MA_period = 2).

En la creación de EA utilizamos el volumen fijo (Trading fija muchos, 0.1), el algoritmo Trailing Stop no se utiliza (Trailing no utilizado).

Fig. 11. Probando los resultados del EA, basado en Hammer/Hanging Man + RSI

Fig. 11. Probando los resultados del EA, basado en Hammer/Hanging Man + RSI


Puede 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_ah_hm_rsi.mq5.


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

Asistente MQL5 - señales de trade basadas en Hammer/Hanging Man + MFI Asistente MQL5 - señales de trade basadas en Hammer/Hanging Man + MFI

Las señales de trade basadas en patrón de vela "Hammer/Hanging Man", considerando confirmación por el indicador Market Facilitation Index (MFI) se considera. El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente MQL5.

Asistente MQL5 - Basado en Señales de Trade de Hammer/Hanging Man + CCI Asistente MQL5 - Basado en Señales de Trade de Hammer/Hanging Man + CCI

Basado en Señales de Trade de patrones de velas Hammer/Hanging Man, considerando confirmación por el indicador Commodity Channel Index (CCI). El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente MQL5.

Asistente MQL5 - Señales de Trade basadas en Bullish/Bearish Meeting Lines + Estocástico Asistente MQL5 - Señales de Trade basadas en Bullish/Bearish Meeting Lines + Estocástico

Señales de trade basadas en patrón de velas "Bullish/Bearish Meeting Lines", considerando confirmación por el indicador Estocástico. El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente MQL5.

Asistente MQL5 - Señales de trade basadas en Bullish/Bearish Meeting Lines + CCI Asistente MQL5 - Señales de trade basadas en Bullish/Bearish Meeting Lines + CCI

Señales de comercio basadas en patrón de velas "Bullish/Bearish Meeting Lines", considerando confirmación por el indicador Commodity Channel Index (CCI). El código del EA basado en esta estrategia se puede generar automáticamente usando el asistente MQL5.