Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿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

Asistente MQL5 - Señales de trading basadas en la Estrella de la Mañana y en la Estrella de la Tarde + MFI - Asesor Experto para MetaTrader 5

Visualizaciones:
1634
Ranking:
(23)
Publicado:
2014.01.14 08:36
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
acms_es_mfi.mqh (7.99 KB) ver
¿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 Asesores Expertos automáticamente, listos para usar, a partir de las clases de la Librería Estándar que vienen junto con el terminal cliente (para más detalles, ver Crear Asesores Expertos listos para usar). Esto permite comprobar ideas de trading de forma rápida, tan sólo necesita crear su propia clase de señales de trading. En el artículo Asistente MQL5, Cómo Crear un Módulo de Señales de Trading encontrará un ejemplo de la estructura que tiene esta clase, así como un ejemplo práctico.

Esta es la idea general: la clase de señales de trading hereda de CExpertSignal; a continuación, hay que sobreescribir los métodos virtuales LongCondition() y ShortCondition() con nuestros propios métodos.

El libro "Strategies of best traders" -Estrategias de los mejores traders- (escrito en ruso) expone muchas estrategias de trading, sin embargo, nosotros vamos a centrarnos en los patrones de reversión de velas confirmados por los osciladores Estocástico, CCI, MFI y RSI.

Una buena idea consiste en crear una clase a parte que hereda de CExpertSignal para comprobar la creación de patrones de velas. Para confirmar las señales de trading que generan los patrones basta con escribir una clase derivada de CCandlePattern y añadir allí las características necesarias (por ejemplo, la confirmación de los osciladores).

Nosotros vamos a considerar las señales basadas en los patrones de reversión Estrella de la Mañana/Estrella de la Tarde (Estrella de la Mañana Doji/Estrella de la Tarde Doji), confirmados por el indicador MFI. El módulo de señales de trading se basa en la clase CCandlePattern, que es un ejemplo sencillo que ilustra la creación de señales de trading con patrones de velas.


1. Patrones de velas Estrella de la Mañana y Estrella de la Tarde

1.1. Estrella de la Mañana

Este patrón indica la inversión de una tendencia bajista. Está formado por tres velas (Fig. 1). Después de una vela negra larga viene una vela (cuyo color no es importante) de cuerpo pequeño, fuera del cuerpo de la vela negra. Los cuerpos de vela pequeños indican que las fuerzas de los toros y de los osos, es decir, de los compradores y de los vendedores, están igualadas, y que el mercado está listo para cambiar de tendencia.

La tercera vela del patrón es la vela alcista, cuyo cuerpo no se solapa con el cuerpo de la segunda vela, y cuyo precio de cierre se encuentra dentro del cuerpo de la primera vela (bajista). La vela resultante de este modelo también se representa gráficamente en la Figura 1.

Cuando la segunda vela es una Doji, este modelo recibe el nombre de "Estrella de la Mañana Doji".

Fig. 1. Patrones de velas Estrella de la Mañana y Estrella de la Mañana Doji

Fig. 1. Patrones de velas Estrella de la Mañana y Estrella de la Mañana Doji

La identificación del patrón Estrella de la Mañana se implementa en los métodos CheckPatternMorningStar() y CheckPatternMorningDoji() de la clase CCandlePattern:

//+----------------------------------------------------------------------------------+
//| Comprobación de la formación del patrón Estrella de la Mañana                    |
//+----------------------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- Estrella de la Mañana
   if((Open(3)-Close(3)>AvgBody(1))              && // vela bajista, su cuerpo es mayor que la media del cuerpo de la vela
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // la segunda vela tiene un cuerpo pequeño (inferior a la mitad del cuerpo medio)
      (Close(2)<Close(3))                        && // el cierre de la segunda vela es menor que el de la primera 
      (Open(2)<Open(3))                          && // la apertura de la segunda vela es menor que la de la primera
      (Close(1)>MidOpenClose(3)))                   // el cierre de la última vela completada es más alto que el centro de la primera
      return(true);
//---
   return(false);
  }
//+----------------------------------------------------------------------------------+
//| Comprobación de la formación del patrón Estrella de la Mañana Doji               |
//+----------------------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningDoji()
  {
//--- Estrella de la Mañana Doji
   if((Open(3)-Close(3)>AvgBody(1)) && // vela bajista con cuerpo mayor que el cuerpo medio de la vela
      (AvgBody(2)<AvgBody(1)*0.1)   && // la segunda vela tiene un cuerpo muy pequeño (doji) 
      (Close(2)<Close(3))           && // el cierre de la segunda vela es menor que el de la primera
      (Open(2)<Open(3))             && // la apertura de la segunda vela es menor que la de la primera
      (Open(1)>Close(2))            && // hueco al alza en la última vela completada
      (Close(1)>Close(2)))             // el cierre de la última vela completada es más alto que el de la segunda
      return(true);
//---
   return(false);
  }

Los métodos CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) y CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) de la clase CCandlePattern comprueban la formación de los patrones de velas Estrella de la Mañana y Estrella de la Mañana Doji.


1.2. Estrella de la Tarde

Este patrón indica la inversión de una tendencia alcista. Está formado por tres velas (Fig. 2). Después de una vela blanca larga viene una vela (cuyo color no es importante) de cuerpo pequeño, fuera del cuerpo de la vela blanca. Los cuerpos de vela pequeños indican que las fuerzas de los toros y de los osos, es decir, de los compradores y de los vendedores, están igualadas, y que el mercado está listo para cambiar de tendencia.

La tercera vela del patrón es la vela bajista, cuyo cuerpo no se solapa con el cuerpo de la segunda vela, y cuyo precio de cierre se encuentra dentro del cuerpo de la primera vela (alcista). La vela resultante de este modelo también se representa gráficamente en la Figura 2.

Cuando la segunda vela es una Doji, este modelo recibe el nombre de "Estrella de la Tarde Doji".

Fig. 2. Patrones de velas Estrella de la Tarde y Estrella Doji de la Tarde

Fig. 2. Patrones de velas Estrella de la Tarde y Estrella Doji de la Tarde

Los métodos para identificar los patrones Estrella de la Tarde y Estrella Doji de la Tarde son los siguientes:

//+----------------------------------------------------------------------------------+
//| Comprobación de la formación del patrón Estrella de la Tarde                     |
//+----------------------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- Estrella de la Tarde
   if((Close(3)-Open(3)>AvgBody(1))              && // vela alcista con cuerpo mayor que el cuerpo medio de la vela
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // la segunda vela tiene un cuerpo pequeño (inferior a la mitad del cuerpo medio)
      (Close(2)>Close(3))                        && // el cierre de la segunda vela es mayor que el de la primera
      (Open(2)>Open(3))                          && // la apertura de la segunda vela es mayor que la de la primera
      (Close(1)<MidOpenClose(3)))                   // el cierre de la última vela completada es menor que el centro de la primera
      return(true);
//---
   return(false);
  }
//+----------------------------------------------------------------------------------+
//| Comprobación de la formación del patrón Estrella de la Tarde Doji                |
//+----------------------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningDoji()
  {
//--- Estrella de la Tarde Doji
   if((Close(3)-Open(3)>AvgBody(1)) && // vela alcista con cuerpo mayor que el cuerpo medio de la vela
      (AvgBody(2)<AvgBody(1)*0.1)   && // la segunda vela tiene un cuerpo muy pequeño (doji)
      (Close(2)>Close(3))           && // el cierre de la segunda vela es mayor que el de la primera
      (Open(2)>Open(3))             && // la apertura de la segunda vela es mayor que la de la primera
      (Open(1)<Close(2))            && // hueco a la baja en la última vela completada
      (Close(1)<Close(2)))             // el cierre de la última vela completada es más bajo que el de la segunda
      return(true);
//---
   return(false);
  }

Los métodos CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) y CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) de la clase CCandlePattern comprueban la formación de los patrones de velas Estrella de la Tarde y Estrella de la Tarde Doji.


2. Señales de trading confirmadas por el indicador MFI

El indicador MFI debe confirmar las señales de trading que se generan para abrir posiciones largas o cortas. El valor del indicador MFI debe ser inferior a 40 (para las posiciones largas) o mayor que 60 (para las posiciones cortas).

El cierre de la posición abierta depende de los valores del indicador MFI. Esto se puede hacer de 2 formas:

  1. si el MFI alcanza el nivel crítico opuesto (70 en las posiciones largas, y 30 en las cortas)
  2. si no se confirma la señal de inversión (cuando el indicador MFI alcanza el nivel 30 en las posiciones largas y el 70 en las cortas)

Figura 3. El patrón Estrella de la Mañana confirmado por el indicador MFI

Figura 3. El patrón Estrella de la Mañana confirmado por el indicador MFI


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

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

  1. El indicador MFI debe confirmar la formación del patrón Estrella de la Mañana: MFi(1)<40 (el valor del indicador MFI correspondiente a la última barra completada debe ser menor que 40).

  2. Si el MFI cruza hacia arriba los niveles críticos (70 o 30) hay que cerrar la posición corta.

//+----------------------------------------------------------------------------------+
//| Comprueba las condiciones de entrada y salida del mercado                        |
//| 1) Entrar al mercado (abrir posición larga, result=80)                           |
//| 2) Salir del mercado (cerrar posición corta, result=40)                          |
//+----------------------------------------------------------------------------------+
int CMS_ES_MFI::LongCondition()
  {
   int result=0;
//--- idx se puede utilizar para determinar el modo de trabajo del Expert Advisor
//--- idx=0 - en este caso el EA comprueba en cada tick las condiciones del mercado
//--- idx=1 - en este caso el EA comprueba las condiciones del mercado sólo en las nuevas barras
   int idx   =StartIndex();
//--- comprobación de las condiciones para abrir una posición larga
//--- formación del patrón Estrella de la Mañana y MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (MFI(1)<40))
     result=80;
//--- comprobación de las condiciones para cerrar una posición corta
//--- señal de cruce de línea de los niveles de sobrecompra/sobreventa (hacia arriba 30, hacia arriba 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- return result
   return(result);
  }


2.2. Abrir posición corta/Cerrar posición larga

  1. El indicador MFI debe confirmar la formación del patrón Estrella de la Tarde: MFI(1)>60 (el valor del indicador MFI correspondiente a la última barra completada debe ser mayor que 60).

  2. Si el MFI cruza hacia arriba los niveles críticos (70 o 30) hay que cerrar la posición larga.

//+----------------------------------------------------------------------------------+
//| Comprueba las condiciones de entrada y salida del mercado                        |
//| 1) Entrar al mercado (abrir posición corta, result=80)                           |
//| 2) Salir del mercado (cerrar posición larga, result=40)                          |
//+----------------------------------------------------------------------------------+
int CMS_ES_MFI::ShortCondition()
  {
   int result=0;
//--- idx se puede utilizar para determinar el modo de trabajo del Expert Advisor
//--- idx=0 - en este caso el EA comprueba en cada tick las condiciones del mercado
//--- idx=1 - en este caso el EA comprueba las condiciones del mercado sólo en las nuevas barras
   int idx   =StartIndex();
//--- comprobación de las condiciones para abrir una posición corta
//--- formación del patrón Estrella de la Tarde y MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (MFI(1)>60))
     result=80;
//--- comprobación de las condiciones para cerrar una posición larga
//--- señal de cruce de línea de los niveles de sobrecompra/sobreventa (hacia arriba 70, hacia abajo 30)
   if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- return result
   return(result);
  }


2.3. Creación del Asesor Experto con el Asistente MQL5

La clase CMS_ES_MFI no viene incluida en la Libería Estándar; para poder utilizarla primero hay que descargar el archivo ams_es_mfi.mqh (ver adjuntos) y guardarlo en client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Hay que hacer lo mismo con el archivo acandlepatterns.mqh. Tras reiniciar MetaEditor ya podrá utilizar estos archivos en su Asistente MQL5.

Inicie el Asistente MQL5 y cree un nuevo Asesor Experto:

Fig. 4. Creación del Asesor Experto con el Asistente MQL5

Fig. 4. Creación del Asesor Experto con el Asistente MQL5

Especifique el nombre del Asesor Experto:

Fig. 5. Propiedades generales del Asesor Experto

Fig. 5. Propiedades generales del Asesor Experto

A continuación hay que seleccionar los módulos de señales de trading.

Fig. 6. Propiedades de señal del Asesor Experto

Fig. 6. Propiedades de señal del Asesor Experto

Nosotros sólo utilizamos un módulo de señales de trading.

Añadimos el módulo "Señales basadas en Estrella de la Mañana/Estrella de la Tarde confirmadas por MFI":

Fig. 7. Propiedades de señal del Asesor Experto

Fig. 7. Propiedades de señal del Asesor Experto

Módulo de señales de trading añadido:

Fig. 8. Propiedades de señal del Asesor Experto

Fig. 8. Propiedades de señal del Asesor Experto

Puede utilizar cualquier propiedad de trailing, nosotros seleccionaremos "Trailing Stop not used" -Trailing Stop no utilizado-:

Fig. 9. Propiedades trailing del Asesor Experto

Fig. 9. Propiedades trailing del Asesor Experto

En cuanto a las propiedades de la gestión del dinero, vamos a utilizar "Trading with fixed trade volume" -Trading con volumen fijo-:

Fig. 10. Propiedades de gestión del dinero del Asesor Experto

Fig. 10. Propiedades de gestión del dinero del Asesor Experto

Tras clicar el bóton "Finalizar" obtendremos el código del Asesor Experto, Expert_AMS_ES_MFI.mq5, que se almacenará en terminal_data_folder\MQL5\Experts\.

Los parámetros de entrada predeterminados del Asesor Experto recién generado:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =10;     // Valor umbral de la 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 Stop Loss (en puntos)
input double         Signal_TakeLevel       =50.0// Nivel Take Profit (en puntos)

deben cambiarse por:

//--- entradas para la señal principal
input int            Signal_ThresholdOpen   =40;     // Valor umbral de la 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 Stop Loss (en puntos)
input double         Signal_TakeLevel       =0.0;    // Nivel Take Profit (en puntos)

Los parámetros de entrada Signal_ThresholdOpen/Signal_ThresholdClose permiten especificar los niveles de umbral para la apertura y el cierre de las posiciones.

Hemos especificado los valores fijos del umbral en los métodos LongCondition() y ShortCondition() de la clase de señales de trading:

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

El Asesor Experto generado con el Asistente MQL5 abre y cierra posiciones consultando los "votos" de los módulos de señales de trading. El voto del módulo principal (en tanto que contenedor, pues integra todos los módulos que se añaden) también se utiliza, pero sus métodos LongCondition() y ShortCondition() siempre devuelven 0.

El resultado de la votación del módulo principal también se utiliza en el promedio de los "votos". En nuestro caso tenemos:  módulo principal + 1 módulo de señales de trading, de modo que hay que contar con esto para determinar los valores del umbral. En consecuencia, ThresholdOpen y ThresholdClose se establecen, respectivamente, a 40=(0+80)/2 y 20=(0+40)/2.

Los parámetros de entrada Signal_StopLevel y Signal_TakeLevel se establecen a 0, de modo que las posiciones se cerrarán sólo cuando se satisfagan las condiciones de cierre, esto es, cuando sean verdaderas.


2.4. Resultados de backtesting

Vamos a analizar el backtesting del Asesor Experto sobre los datos históricos (EURUSD H1, testing period: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=3).

Durante la creación del Asesor Experto escogimos el volumen fijo (Trading Fixed Lot, 0.1), y decidimos no utilizar el algoritmo Trailing Stop (Trailing not used).

Fig. 11. Probando los resultados del Asesor Experto basado en las Estrellas de la Mañana/Tarde + MFI

Fig. 11. Probando los resultados del Asesor Experto basado en las Estrellas de la Mañana/Tarde + MFI


El Probador de Estrategias, disponible en el terminal cliente MetaTrader 5, nos puede ayudar a encontrar el mejor juego de parámetros de entrada.

El código del Asesor Experto creado con el Asistente MQL5 se adjunta en expert_ams_es_mfi.mq5.


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

Levels Levels

Otra versión del indicador que calcula los niveles de soporte / resistencia.

RSIImproved RSIImproved

Un indicador combinado, construido sobre la base de dos osciladores RSI

Asistente MQL5 - Señales de trading basadas en los patrones de velas Estrella de la Mañana y Estrella de la Tarde Asistente MQL5 - Señales de trading basadas en los patrones de velas Estrella de la Mañana y Estrella de la Tarde

A continuación vamos a estudiar las señales de trading basadas en los patrones de velas Morning Star -Estrella de la Mañana- y Evening Star -Estrella de la Tarde- confirmadas por el indicador Relative Strength Index (RSI) -Índice de Fuerza Relativa-. El código del Asesor Experto que implementa esta estrategia puede generarse automáticamente con el Asistente MQL5.

Demo_BitmapOffset (OBJPROP_XOFFSET y OBJPROP_YOFFSET) Demo_BitmapOffset (OBJPROP_XOFFSET y OBJPROP_YOFFSET)

Si sólo necesitas mostrar una parte de la imagen en un momento determinado, y ocultar otra, puedes utilizar la ventana en movimiento, especificando el área visible de la imagen.