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 Engulfing/Bearish Engulfing + RSI - Asesor Experto para MetaTrader 5

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

Visualizaciones:
701
Ranking:
votos: 18
Publicado:
2014.01.09 10:41
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
acbe_be_rsi.mqh (7.97 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 Engulfing/Bearish Engulfing", confirmadas por el indicador RSI. 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. "Bullish Engulfing" y "Bearish Engulfing"

1.1. Bullish Engulfing

El patrón "Bullish Engulfing" se forma en tendencias bajistas cuando una vela negra pequeña es seguida por una vela grande blanca que eclipsa ("envuelve") completamente la vela del día anterior. Las sombras (colas) de la vela pequeña son cortas, lo que permite que el cuerpo de la vela grande cubra toda la vela del día anterior.

Fig. 1. Patrón de velas "Bullish Engulfing"

Fig. 1. Patrón de velas "Bullish Engulfing"

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

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón "Bullish Engulfing"            |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing
   if((Open(2)>Close(2))             &&  // la vela anterior es bajista
      (Close(1)-Open(1)>AvgBody(1))  &&  // el cuerpo de la vela alcista es mayor que el tamaño medio de cuerpo 
      (Close(1)>Open(2))             &&  // el precio de cierre de la vela alcista es más alto que el precio de apertura de la vela bajista
      (MidOpenClose(2)<CloseAvg(2))  &&  // tendencia bajista
      (Open(1)<Close(2)))                // el precio de apertura de la vela alcista es menor que el precio de cierre de la vela bajista
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) de la clase CCandlePattern se utiliza para comprobar la formación del patrón "Bullish Engulfing".


1.2. Bearish Engulfing

El patrón "Bearish Engulfing" se forma en tendencias alcistas cuando una vela blanca pequeña es seguida por una vela negra grande que eclipsa ("envuelve") completamente la vela del día anterior. Las sombras (colas) de la vela pequeña son cortas, lo que permite que el cuerpo de la vela grande cubra toda la vela del día anterior.

Figura 2. Patrón de velas "Bearish Engulfing"

Figura 2. "Patrón de velas Bearish Engulfing"

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

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón "Bearish Engulfing"            |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing
   if((Open(2)<Close(2))            &&  // la vela anterior es bajista
      (Open(1)-Close(1)>AvgBody(1)) &&  // el cuerpo de la vela es mayor que el tamaño medio de cuerpo
      (Close(1)<Open(2))            &&  // el precio de cierre de la vela bajista es menor que el precio de apertura de la vela alcista
      (MidOpenClose(2)>CloseAvg(2)) &&  // tendencia alcista
      (Open(1)>Close(2)))               // el precio de apertura de la vela bajista es mayor que el precio de cierre de la vela alcista
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) de la clase CCandlePattern se utiliza para comprobar la formación del patrón "Bearish Engulfing".


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

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

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

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

Fig. 3. Patrón "Bullish Engulfing", confirmado por el indicador RSI

Fig. 3. "Patrón Bullish Engulfing", confirmado por el indicador RSI


  • int CBE_BE_RSI::LongCondition() -comprueba las condiciones para abrir una posición larga (devuelve 80) y cerrar una posición corta (devuelve 40);
  • int CBE_BE_RSI::ShortCondition() - comprueba las condiciones 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 Engulfing" tiene que ser confirmada por el indicador RSI: RSI(1)<40 (el valor del indicador RSI de la última barra completada debe ser menor de 40).

  2. La posición corta debe cerrarse si el indicador RSI ha cruzado por encima de los niveles críticos 70 ó 30.

//+------------------------------------------------------------------+
//| 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 CBE_BE_RSI::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 Engulfing y RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1)<40))
     result=80;
//--- comprobar las condiciones para cerrar una posición corta
//--- la línea de señal cruza los 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 el resultado
   return(result);
  }

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

  1. La formación del patrón "Bearish Engulfing" tiene que ser confirmada por el indicador RSI: RSI(1)>60 (el valor del indicador RSI de la última barra completada debe ser mayor que 60).

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

//+------------------------------------------------------------------+
//| Comprueba las condiciones de entrada y salida del mercado        |
//| 1) Entrada al mercado (abrir una posición corta, resultado=80)   |
//| 2) Salida del mercado (cerrar una posición larga, resultado=40)  |
//+------------------------------------------------------------------+
int CBE_BE_RSI::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 Engulfing y RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1)>60))
     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 70, hacia abajo 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- devuelve el resultado
   return(result);
  }


2.3. Crear el Asesor Experto usando el Asistente de MQL5

La clase CBE_BE_RSI no está incluida en la librería de clases Standard Library, para utilizarla es necesario descargar el archivo acml_rsi.mqh (ver adjuntos) y guardarlo en client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Se debe hacer lo mismo con el archivo acandlepatterns.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 Engulfing/Bearish Engulfing confirmadas por RSI":

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_ABE_BE_RSI.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 de los parámetros de entrada  Signal_StopLevel y Signal_TakeLevel se establecen en 0, esto significa que el cierre de las posiciones se realizará solo cuando se cumplan las condiciones de cierre.


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 pruebas: 2010.01.01-2011.03.04, PeriodRSI=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 Engulfing/Bearish Engulfing + RSI

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


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


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

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

Se analizan Señales de Trading basadas en el patrón de velas "Bullish Engulfing/Bearish Engulfing", 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.

MQL5 Wizard - Señales de comercio basadas en Bullish Engulfing/Bearish Engulfing + CCI MQL5 Wizard - Señales de comercio basadas en Bullish Engulfing/Bearish Engulfing + CCI

Vamos a considerar las señales de comercio basadas en el patrón de velas "Bullish Engulfing/Bearish Engulfing" candlestick pattern, confirmadas por el indicador Commodity Channel Index (CCI). El código del Asesor Experto basado en esta estrategia puede ser generado automáticamente utilizando MQL5 Wizard.

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 Harami/Bearish Harami + CCI MQL5 Wizard - Trade Signals Based on Bullish Harami/Bearish Harami + CCI

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