Descargar MetaTrader 5

Mira cómo descargar robots gratis

¿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

MQL5 Wizard - Trade Signals Based on Bullish Harami/Bearish Harami + CCI - Asesor Experto para MetaTrader 5

| Spanish English Русский 中文 Deutsch 日本語 Português

Visualizaciones:
602
Ranking:
votos: 16
Publicado:
2014.01.09 12:30
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
acbh_bh_cci.mqh (7.98 KB)ver

El Asistente de MQL5 permite crear Asesores Expertos listos-para-usar, basados en la Librería Estándar de clases que se entrega con el terminal cliente (para más detalles, ver Creando Asesores Expertos Listos-para-Usar con el Asistente de MQL5). Su utilización permite comprobar rápidamente vuestras ideas de trading, lo único que se necesita es crear vuestra clase personalizada de señales de trading. La estructura de esta clase y los ejemplos están en el artículo Asistente de MQL5: Cómo crear un Módulo de Señales de Trading.

En términos generales la idea es la siguiente: la clase de señales de trading se deriva desde CExpertSignal, a continuación, es necesario redefinir los métodos virtuales LongCondition() y ShortCondition() con nuestros propios métodos.

En el libro "Estrategias de los mejores traders" (en ruso), se analizan muchas estrategias de trading, nosotros nos centraremos en patrones de cambio (reversal candlestick patterns), confirmados por los osciladores Estocástico, CCI, MFI y RSI.

La mejor manera de proceder es crear una clase nueva, derivada de CExpertSignal para comprobar la formación de los patrones de velas. Para confirmar las señales de trading, generadas por los patrones de velas, es suficiente con escribir la clase, derivada de CCandlePattern y añadirle las características necesarias (por ejemplo, confirmación mediante osciladores).

Aquí nos centraremos en las señales, obtenidas a partir de los patrones de cambio "Bullish Harami/Bearish Harami", confirmadas por el indicador CCI. El módulo de señales de trading se basa en la clase CCandlePattern, es un ejemplo simple de su uso para la generación de señales de trading mediante patrones de velas.


1. Patrones de cambio "Bullish Harami y "Bearish Harami"

1.1. Bullish Harami

El patrón Bullish Harami se forma en tendencias bajistas cuando una vela grande es seguida por una vela pequeña cuyo cuerpo está ubicado dentro del rango vertical del cuerpo mayor. Este patrón indica que la tendencia bajista puede invertirse, es una señal de que puede ser un buen momento para abrir una posición larga. La segunda vela se abre con un gap hacia arriba. Mientras más pequeña sea la segunda vela (blanca), existen mayores probabilidades de cambio de tendencia.

Patrón de cambio Bullish Harami

Fig. 1. Patrón de cambio "Bullish Harami"

El reconocimiento del patrón "Bullish Harami" está implementado en el método CheckPatternBullishHarami()de la clase CCandlePattern:

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón "Bullish Harami"               |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // la última barra completada es alcista (día blanco)
     ((Open(2)-Close(2))>AvgBody(1))  && // la barra anterior es bajista y su cuerpo es mayor que la media (negro largo)
     ((Close(1)<Open(2))              && // el precio de cierre de la vela alcista es menor que el precio de apertura de la vela bajista 
      (Open(1)>Close(2)))             && // el precio de apertura de la vela alcista es mayor que el precio de apertura de la vela bajista
      (MidPoint(2)<CloseAvg(2)))         // tendencia bajista
      return(true);
//---
   return(false);
  }

Se utiliza el método CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) de la clase CCandlePattern para comprobar la formación del patrón "Bullish Harami".


1.2. Bearish Harami

El patrón de casmbio Bearish Harami se forma en tendencias alcistas cuando una vela grande es seguida por una vela más pequeña cuyo cuerpo está localizado dentro del rango vertical del cuerpo de la vela mayor. Este patrón indica que la tendencia alcista puede invertirse, es una señal de que puede ser un buen momento para abrir una posición corta. La segunda vela se abre con un gap hacia abajo.

Mientras más pequeña sea la segunda vela (negra), existen mayores probabilidades de cambio de tendencia.

Patrón de cambio Bearish Harami

Fig. 2. Patrón de velas "Bearish Harami"

El reconocimiento del patrón "Bearish Harami" está implementado en el método CheckPatternBearishHarami() de la clase CCandlePattern:

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón "Bearish Harami"               |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // la última barra completada es bajista (día negro
     ((Close(2)-Open(2))>AvgBody(1))  && // la vela anterior es alcista, su cuerpo es mayor que la media (blanca larga)
     ((Close(1)>Open(2))              && // el precio de cierre de la vela bajista es mayor que el precio de apertura de la vela alcista
      (Open(1)<Close(2)))             && // el precio de apertura de la vela bajista es menor que el precio de cierre de la vela alcista
      (MidPoint(2)>CloseAvg(2)))         // tendencia alcista
      return(true);
//---
   return(false);
  }

Se utiliza el método CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)de la clase CCandlePattern para comprobar la formación del patrón "Bearish Harami".


2. Señales de trading, confirmadas por el indicador CCI

Las señales de trading para abrir una posición larga o corta deben ser confirmadas por el indicador CCI. El valor de CCI debe ser menor/mayor que los niveles críticos (-50 para una posición larga y 50 para una posición corta).

El cierre de las posiciones abiertas depende de los valores de CCI. Esto se puede hacer en 2 casos:

  1. si la línea de CCI ha alcanzado el nivel crítico contrario (80 para una posición larga y -80 para una posición corta)
  2. si la señal de cambio no es confirmada (cuando CCI alcanza los siguientes niveles: -80 para una posición larga y 80 para una posición corta)

Figure 3. Patrón "Bullish Harami", confirmado por el indicador CCI

Fig. 3. Patrón "Bullish Harami", confirmado por el indicador CCI

  • int CBH_BH_CCI::LongCondition() - comprueba las condiciones para abrir una posición larga (devuelve 80) y cerrar una posición corta (devuelve 40);
  • int CBH_BH_CCI::ShortCondition() - comprueba las condctiones para abrir una posición corta (devuelve 80) y cerrar una posición larga (devuelve 40).

2.1. Abrir una posición larga/Cerrar una posición corta

  1. La formación de un patrón "Bullish Harami" tiene que ser confirmada por el indicador CCI: CCI(1)<-50 (el valor de CCI de la última barra completada debe ser menor de -50).

  2. La posición corta debe cerrarse si el indicador CCI ha cruzado hacia arriba el nivel crítico -80 o ha cruzado hacia abajo el nivel crítico 80.

//+------------------------------------------------------------------+
//| Comprueba las condiciones de entrada y salida del mercado        |
//| 1) Entrada al mercado (abrir una posición larga, resultado=80)   |
//| 2) Salida del mercado (cerrar una posición corta, resultado=40)  |
//+------------------------------------------------------------------+
int CBH_BH_CCI::LongCondition()
  {
   int result=0;
//--- idx puede ser utilizado para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso el EA comprueba las condiciones de mercado en cada tick
//--- idx=1 - en este caso el EA comprueba las condiciones de mercado cuando comienza una barra nueva
   int idx   =StartIndex();
//--- comprobar las condiciones para abrir una posición larga
//--- formación del patrón Bullish Harami y CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))
     result=80;
//--- comprobar las condiciones para cerrar una posición corta
//--- la línea de señal cruza los 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 el resultado
   return(result);
  }

2.2. Abre una posición corta/Cierra una posición larga

  1. La formación de un patrón "Bearish Harami" tiene que ser confirmada por el indicador CCI: CCI(1)>50 (el valor de CCI de la última barra completada debe ser mayor que 50).

  2. La posición larga debe ser cerrada si el indicador CCI cruza hacia abajo uno de los niveles -80 ó 80.

//+------------------------------------------------------------------+
//| Comprueba las condiciones de entrada y salida del mercado        |
//| 1) Entrada al mercado (abrir una posición larga, resultado=80)   |
//| 2) Salida del mercado (cerrar una posición corta, resultado=40)  |
//+------------------------------------------------------------------+
int CBH_BH_CCI::ShortCondition()
  {
   int result=0;
//--- idx puede ser utilizado para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso el EA comprueba las condiciones de mercado en cada tick
//--- idx=1 - en este caso el EA comprueba las condiciones de mercado cuando comienza una barra nueva
   int idx   =StartIndex();
//--- comprobar las condiciones para abrir una posición corta
//---formación del patrón Bearish Harami y CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))
     result=80;
//--- comprobar las condiciones para cerrar una posición larga
//--- la línea de señal cruza los 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 el resultado
   return(result);
  }


2.3. Crear el Asesor Experto usando el Asistente de MQL5

La clase CBH_BH_CCI no está incluida en la librería de clases Standard Library, para utilizarla es necesario descargar el archivo acbh_bh_cci.mqh (ver adjuntos) y guardarlo en client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Se debe hacer lo mismo con el archivo candlepatterns.mqh. Pueden ser utilizadas en el Asistente de MQL5 después de reiniciar el MetaEditor.

Para crear un Asesor Experto lanzamos el Asistente de MQL5:

Fig. 4. Crear el Asesor Experto usando el Asistente de MQL5

Fig. 4. Crear el Asesor Experto usando el Asistente de MQL5

Indicamos el nombre del Asesor Experto:

Fig. 5. Las propiedades generales del Asesor Experto

Fig. 5. Las propiedades generales del Asesor Experto

Después de lo cual seleccionamos los módulos de señales de trading a utilizar.

Fig. 6. Propiedades de las señales del Asesor Experto

Fig. 6. Propiedades de las señales del Asesor Experto

En nuestro caso utilizaremos un único módulo de señales de trading.

Añadimos el módulo de señales de trading "Señales basadas en Bullish Harami/Bearish Harami confirmadas por CCI":

Fig. 7. Propiedades de las señales del Asesor Experto

Fig. 7. Propiedades de las señales del Asesor Experto

Añadido el módulo de señales de trading:

Fig. 8. Propiedades de las señales del Asesor Experto

Fig. 8. Propiedades de las señales del Asesor Experto

Se puede seleccionar cualquier tipo de trailing, pero utilizaremos "No utilizar Trailing Stop":

Fig. 9. Tipo de trailing del Asesor Experto

Fig. 9. Tipo de trailing del Asesor Experto

Con respecto a la gestión del capital, utilizaremos "Trading con volumen fijo":

Fig. 10. Gestión del capital del Asesor Experto

Fig. 10. Gestión del capital del Asesor Experto

Al presionar el botón "Finalizar", obtendremos el código del Asesor Experto que hemos generado, estará contenido en Expert_ABH_BH_CCI.mq5, y localizado en la carpeta terminal_data_folder\MQL5\Experts\.

Parámetros de entrada por defecto del Asesor Experto generado:

//--- entradas de la señal principal
input int            Signal_ThresholdOpen   =10;     // Valor de la señal para abrir [0...100]
input int            Signal_ThresholdClose  =10;     // Valor de la señal para cerrar [0...100]
input double         Signal_PriceLevel      =0.0;    // Nivel del precio para ejecutar una transacció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 sustituirse por:

//--- entradas de la señal principall
input int            Signal_ThresholdOpen   =40;     // Valor de la señal para abrir [0...100]
input int            Signal_ThresholdClose  =20;     // Valor de la señal para cerrar [0...100]
input double         Signal_PriceLevel      =0.0;    // Nivel del precio para ejecutar una transacció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 The Signal_ThresholdOpen/Signal_ThresholdClose permiten especifical los niveles de umbral para la apertura y cierre de posiciones.

En el código de los métodos LongCondition() and ShortCondition() de la clase señales de trading hemos especificados valores fijos para estos umbrales:

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

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

El resultado del voto del módulo principal también es utilizado al promediar los "votos". En nuestro caso tenemos:  módulo principal + 1 módulo de señales de trading, por tanto tenemos que tener este hecho en cuenta al establecer los valores de umbral. Por esta razón ThresholdOpen y ThresholdClose deben establecerse en 40=(0+80)/2 y 20=(0+40)/2.

Los valores delos parámtros de entrada Signal_StopLevel y Signal_TakeLevel se establecen en 0, esto significa que el cierre de las posiciones se realizará solo cuando las condiciones de cierre sean verdaderas.


2.4. Resultados de backtests con datos históricos

Vamos a analizar el backtesting del Asesor Experto con datos históricos (EURUSD H1, periodo de prueba: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5).

Al crear el Asesor Expert utilizamos un volumen fijo (Trading con Lote Fijo, 0.1), No utilizamos ningún algoritmo de Trailing Stop (No se usa Trailing).

Fig. 11. Resultados de las pruebas del Asesor Experto, basado en Bullish Harami/Bearish Harami + CCI

Fig. 11. Resultados de las pruebas del Asesor Experto, basado en Bullish Harami/Bearish Harami + CCI


El mejor set de parámetros de entrada puede ser determinado utilizando el Probador de Estrategias del terminal cliente de MetaTrader 5.

El código del Asesor Experto, creado por el Asistente de MQL5 se adjunta en expert_abh_bh_cci.mq5.


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

Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + Estocástico Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + Estocástico

Se analizan Señales de Trading basadas en el patrón de velas "Bullish Harami/Bearish Harami", confirmadas por el indicador Estocástico. El código del Asesor Experto basado en esta estrategia puede ser generado automáticamente usando el Asistente de MQL5.

MQL5 Wizard - Trade Signals Based on Bullish Engulfing/Bearish Engulfing + RSI MQL5 Wizard - Trade Signals Based on Bullish Engulfing/Bearish Engulfing + RSI

Asistente de MQL5 - Señales de Trading basadas en Bullish Engulfing/Bearish Engulfing + RSI

Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + MFI Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + MFI

Se analizan Señales de Trading basadas en el patrón de velas "Bullish Harami/Bearish Harami", confirmadas por el indicador Market Facilitation Index (MFI). El código del Asesor Experto basado en esta estrategia puede ser generado automáticamente usando el Asistente de MQL5.

Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + RSI Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + RSI

Se analizan Señales de Trading basadas en el patrón de velas "Bullish Harami/Bearish Harami", confirmadas por el indicador Relative Strength Index (RSI). El código del Asesor Experto basado en esta estrategia puede ser generado automáticamente usando el Asistente de MQL5.