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 MQL5 - Señales de trade basadas en Bullish/Bearish Meeting Lines + MFI - Asesor Experto para MetaTrader 5
- Visualizaciones:
- 1673
- Ranking:
- Publicado:
- 2014.01.10 12:53
- 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 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 señales, basadas en patrones de verlas de reversión "Bullish/Bearish Meeting Lines", confirmadas por indicador MFI (Market Facilitation Index). 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 "Meeting Lines"
1.1. Bullish Meeting Lines (Lineas Alcistas Encontradas)
El patrón consiste en dos velas (bajista y alcista) con precios de cierre iguales (o muy cercanos). El cuerpo de las dos velas debe ser mayor que la longitud media del cuerpo.
El patrón de "Bullish Meeting Lines" indica la reversión de una tendencia a la baja.
Fig. 1. "Bullish Meeting Lines" pattern
El reconocimiento del patrón de "Bullish Meeting Lines" se implementa en el método CheckPatternCheckPatternBullishMeetingLines() de la clase CCandlePattern:
//+--------------------------------------------------------------------+ //| Comprobaciones en la formación de patrones de velas | //| "Bullish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines if((Open(2)-Close(2)>AvgBody(1)) && // negro largo ((Close(1)-Open(1))>AvgBody(1)) && // blanco largo (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji close return(true); //--- return(false); }
El método CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) de la clase CCandlePattern se utiliza para comprobar la formación del patrón de velas "Bullish Meeting Lines".
1.1. Bearish Meeting Lines (lineas bajistas encontradas)
El patrón consiste en dos velas (alcista y bajista) con precios de cierre (o muy cercano) iguales. El cuerpo de las dos velas debe ser mayor que la longitud media del cuerpo.
El patrón de "Bearish Meeting Lines" indica la reversión de una tendencia a la baja.
Fig. 2. Patrón "Bearish Meeting Lines"
El reconocimiento del patrón de "Bearish Meeting Lines" se implementa en el método CheckPatternBearishMeetingLines() de la clase CCandlePattern:
//+--------------------------------------------------------------------+ //| Comprobaciones en la formación de patrones de velas | //| "Bearish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines if((Close(2)-Open(2)>AvgBody(1)) && // blanco largo ((Open(1)-Close(1))>AvgBody(1)) && // negro largo (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // cierre de doji close return(true); //--- return(false); }
El método CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) de la clase CCandlePattern se utiliza para comprobar la formación del patrón de candelabro "Bearish Meeting Lines".
2. Señales de trade, confirmadas por el indicador MFI
Las señales de trading para apertura de posiciones largas o cortas deben ser confirmadas por el indicador MFI. El valor del indicador MFI debe ser inferior a 40 (para posiciones largas) o mayor de 60 (para posiciones cortas).
El cierre de posiciones abiertas depende de los valores del indicador de MFI. Se puede hacer en 2 casos:
- Si el MFI ha alcanzado el nivel crítico opuesto (70 para la posición larga y 30 para posición corta
- Si no está confirmada la señal de reversión (cuando el indicador de MFI alcanza los siguientes niveles: 30 para la posición larga y 70 para posición corta)
Figura 3. El patrón de "Bearish Meeting Lines", confirmado por el indicador de MFI
- int CML_MFI::LongCondition() - comprueba las condiciones para abrir posición larga (regresa de 80) y el cierre de la posición corta (regresa de 40);
- int CML_MFI::ShortCondition() - comprueba las condiciones para abrir posición corta (regresa de 80) y el cierre de la posición larga (regresa de 40).
2.1. Apertura de posición larga/cierre de posición corta
La formación de patrón "Bearish Meeting Lines" debe ser confirmada por el indicador MFI: MFi(1)<40 (el valor del indicador MFI de la última barra completa debe ser menor que 40).
La posición corta debe estar cerrada si el indicador MFI ha cruzado hacia arriba los niveles críticos (30 o 70).
//+----------------------------------------------------------------------+ //| Comprobaciones de condiciones para la entrada y salida del mercado | //| 1) Entrada en el mercado (apertura de posición larga, resultado=80) | //| 2) Salida del mercado (cierre de posición corta, resultado=40) | //+----------------------------------------------------------------------+ int CML_MFI::LongCondition() { 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 larga //--- formación del patrón Bullish Meeting Lines y MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (MFI(1)<40)) result=80; //--- comprobando las condiciones para cierre de posición corta //--- cruce de líneas de señal de niveles de sobrecompra / sobreventa (por encima de 30, por encima de 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- devuelve resultado return(result); }
2.2. Apertura de corta/cierre de posición larga
La formación de patrones "Bearish Meeting Lines" deben ser confirmados por el indicador MFI: MFI(1)>60 (el valor del indicador de MFI de la última barra completa debe ser mayor de 60).
La posición larga debe estar cerrada si el indicador MFI ha cruzado por arriba/por abajo los niveles críticos (30 o 70).
//+-----------------------------------------------------------------------+ //| 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 CML_MFI::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 Bearish Meeting Lines y MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (MFI(1)>60)) result=80; //--- comprobando las condiciones para cierre de posición larga //--- cruce de líneas de señal de niveles de sobrecompra / sobreventa (por encima de 70, por debajo de 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- devuelve resultado return(result); }
2.3. Creación del EA utilizando el Asistente MQL5
Para usar la clase CML_MFI no incluida en las clases de la Librería Estándar, es necesario descargar el archivo aml_mfi.mqh (ver anexos) y guardarlo en client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Lo mismo debe hacerse con el archivo acandlepatterns.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
Vamos a especificar el nombre 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
En nuestro caso utilizamos sólo un módulo de señales de trade.
Añadiendo el módulo "Señales basadas en Bullish/Bearish Meeting Lines por MFI" de las señales de trading:
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
Puedes seleccionar cualquiera de las propiedades de trailing, pero usaremos "Trailing Stop no utilizado":
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
Pulsando el botón "Finish", obtendremos el código del EA generado, situado en Expert_AML_MFI.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
Consideramos backtesting del EA con los datos históricos (EURUSD H1, pruebas de período: 2000.01.01-2011.03.16, PeriodMFI = 12, MA_period = 4).
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 Bullish/Bearish Meeting Lines + MFI
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_aml_mfi.mq5.
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/320
El estilo DRAW_CANDLES traza las velas utilizando los valores de 4 buffers del indicador con la Apertura, Alto, Bajo y Cierre de los precios.
Asistente MQL5 - Señales de trade basadas en Bullish/Bearish Meeting Lines + CCISeñ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.
El estilo de dibujo DRAW_COLOR_LINE se utiliza para trazar líneas con diferentes colores, los colores se especifican en el buffer de color.
DRAW_COLOR_SECTIONEl estilo de dibujo DRAW_COLOR_SECTION se utiliza para trazar secciones con diferentes colores, los colores se especifican en el buffer de color.