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 + Estocástico - Asesor Experto para MetaTrader 5
- Visualizaciones:
- 1429
- Ranking:
- Publicado:
- 2014.01.09 12:22
- 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 Estocástico. 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 el cuerpo medio (negro grande) ((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 Estocástico
Las señales de trading para abrir una posición larga o corta deben ser confirmadas por el oscilador Estocástico. La señal de la línea %D debe ser mayor/menor que el nivel crítico correspondiente (30 ó 70).
El cierre de la posición abierta depende de los valores del indicador %D. Esto se puede hacer en 2 casos:
- si la línea %D ha alcanzado el nivel crítico contrario (80 para una posición larga y 20 para una posición corta)
- si la señal de cambio no es confirmada (cuando la línea %D alcanza los niveles siguientes: 20 para una posición larga y 80 para una posición corta)
Figure 3. Patrón "Bearish Harami", confirmado por el indicador Estocástico
La comprobación de las condiciones de entrada y salida del mercado se implementa en dos métodos:
- int CBH_BH_Stoch::LongCondition() - comprueba las condiciones para abrir una posición larga (devuelve 80) y cerrar una posición corta (devuelve 40);
- int CBH_BH_Stoch::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 Estocástico: StochSignal(1)<30 (el valor de la línea de señal del indicador Estocástico en la última barra completada debe ser menor que 30).
La posición corta debe ser cerrada si la línea de señal del indicador Estocástico ha cruzado hacia arriba uno de los niveles 20 u 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_Stoch::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 línea de señal<30 if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30)) 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 20, hacia arriba 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) 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 Estocástico: StochSignal(1)>70 (el valor de la línea de señal del indicador Estocástico en la última barra completada debe ser mayor que 70).
La posición larga debe ser cerrada si el indicador Estocástico ha cruzado hacia abajo los niveles 80 ó 20.
//+------------------------------------------------------------------+ //| 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_Stoch::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 línea de señal>70 if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70)) 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 arriba 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- devuelve el resultado return(result); }
2.3. Crear el Asesor Experto usando el Asistente de MQL5
La clase CBH_BH_Stoch no está incluida en la librería de clases Standard Library, para utilizarla es necesario descargar el archivo acbh_bh_stoch.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
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 Estocástico":
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_Stoch.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, PeriodK=47, PeriodD=9, PeriodSlow=13, 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/Bearish Harami + Esocástico"
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_stoch.mq5.
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/310
Asistente de MQL5 - Señales de Trading basadas en Bullish Engulfing/Bearish Engulfing + RSI
Asistente de MQL5 - Señales de Trading basadas en Bullish Engulfing/Bearish Engulfing + MFISe 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.
Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + CCI
Asistente de MQL5 - Señales de Trading basadas en Bullish Harami/Bearish Harami + MFISe 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.