Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5

Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + RSI - Asesor Experto para MetaTrader 5
- Visualizaciones:
- 1573
- Ranking:
- Publicado:
- 2014.01.09 12:41
- Actualizado:
- 2016.11.22 07:33
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
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 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. 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.
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.
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 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:
- is RSI ha alcanzado el nivel crítico contrario (70 para una posición larga y 30 para una posición corta)
- 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)
Figure 3. "Patrón Bullish Harami", confirmado por el indicador RSI
- int CBH_BH_RSI::LongCondition() - comprueba las condiciones para abrir una posición larga (devuelve 80) y cerrar una posición corta (devuelve 40);
- int CBH_BH_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
La formación de un patrón "Bullish Harami" 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).
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 CBH_BH_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(); //--- omprobar las condiciones para abrir una posición larga //--- formación del patrón Bullish Harami y RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (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
La formación de un patrón "Bearish Harami" 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).
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 CBH_BH_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 Harami y RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (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 CBH_BH_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
Indicamos el nombre 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
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 RSI":
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
Se puede seleccionar cualquier tipo de trailing, pero utilizaremos "No utilizar Trailing Stop":
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
Al presionar el botón "Finalizar", obtendremos el código del Asesor Experto que hemos generado, estará contenido en Expert_ABH_BH_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.11, PeriodRSI=37, MA_period=7).
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 + 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_aml_rsi.mq5.
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/313

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 + CCI

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

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.