Mira cómo descargar robots gratis
¡Búscanos en Telegram!
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

MQL5 Wizard - Señales de comercio basadas en Dark Cloud Cover/Piercing Line + CCI - Asesor Experto para MetaTrader 5

Visualizaciones:
1366
Ranking:
(18)
Publicado:
2014.01.08 11:59
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
acdc_pl_cci.mqh (7.98 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

MQL5 Wizard le permite la creación de Asesores Expertos confeccionados en base a las clases de la libreria standard entregadas junto con el terminal del cliente (ver Creación de Asesores Expertos en MQL5 Wizard para más detalles) Permite comprobar sus ideas comerciales de forma rápida, lo único que necesita es crear sus propias clases de señales de operación. La estructura de esta clase y el ejemplo se puede encontrar en el artículo MQL5 Wizard: Cómo crear un módulo de señales de trading.

La idea genérica es la siguiente: la clase de señales de comercio se deriva de CExpertSignal, lo siguiente, es necesario reemplazar los métodos virtuales LongCondition() y ShortCondition() con sus propios métodos.

Hay un libro "Estrategias de mejores traders" (en ruso), allí hay muchas estrategias de negociación que se consideran, nos centraremos en la inversión de los patrones de vela, confirmados por los osciladores Estocástico, CCI, MFI y RSI .

La mejor manera es crear una clase separada, derivada de CExpertSignal para la comprobación de la formación de patrones de velas. Para la confirmación de las señales comerciales, generadas por los patrones de vela, es suficiente con escribir la clase, derivada de CCandlePattern y agregar allí las características necesarias (por ejemplo, la confirmación por osciladores).

Aquí vamos a considerar las señales, basadas en el patrón de velas de reversa "Dark Cloud Cover/Piercing Line" confirmadas por el indicadorCCI. El módulo de señales de comercio se basa en la clase CCandlePattern, es un simple ejemplo de su uso para la creación de las señales comerciales con los patrones de vela.


1. Patrones de vela de reversa "Dark Cloud Cover" y "Piercing Line"

1.1. Dark Cloud Cover

Es un patrón de reversa bajista que ocurre cuando acaba una tendencia alcista. Una larga vela blanca se forma en el primer día y un gap al alza se crea en el segundo día. Sin embargo, el segundo día se cierra por debajo del punto medio del primer día.

img alt="Fig. 1. Patrón de vela" "Dark Cloud Cover" title="Figure 1. Patrón de vela" "Dark Cloud Cover" src="http://p.mql5.com/data/18/298/dark_cloud_cover_en.png" style="vertical-align: middle;" width="341" height="280">

Fig. 1. Patrón de vela "Dark Cloud Cover"

El reconocimiento de patrones "Dark Cloud Cover" esta implementado en el método CheckPatternDarkCloudCover() de la clase : CCandlePattern

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón de velas "Dark Cloud Cover"    |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (larga blanca)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (cierra dentro del cuerpo anterior)
      (MidOpenClose(2)>CloseAvg(1))  && // (tendencia alcista)
      (Open(1)>High(2)))                // (abre en el nuevo alto)
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) de la clase CCandlePattern es utilizado para comprobar la formación del patrón de vela "Dark Cloud Cover".


1.2. Piercing Line

El gap a la baja en el segundo día perpetúa la tendencia bajista. Sin embargo, el segundo día el cierre está por encima del punto medio del cuerpo del primer día. Esto sugiere a los osos que un soporte se podría estar formando. Esta acción del precio no es tan perceptible mediante gráficos de barras como lo es con los gráficos de velas. Como mayor sea la penetración del cierre del segundo día al cuerpo del primer día, más probable será que la señal de inversión tenga éxito.

Fig. 2. Patrón de vela "Piercing Line"

Fig. 2. Patrón de vela "Piercing Line"

El Reconocimiento de patrones "Piercing Line" esta implementado en el método CheckPatternPiercingLine() de la Clase: CCandlePattern

//+------------------------------------------------------------------+
//| Comprueba la formación del patrón de velas "Piercing Line"       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (larga blanca)
      (Open(2)-Close(2)>AvgBody(1)) && // (larga negra)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (cierra dentro del cuerpo anterior) 
      (MidOpenClose(2)<CloseAvg(2)) && // (tendencia bajista)
      (Open(1)<Low(2)))                // (apertura a la baja más bajo que el bajo anterior) 
      return(true);
//---
   return(false);
  }

El método CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) de la clase CCandlePattern es utilizado para comprobar la formación del patrón de vela "Piercing Line".


2. Señales de comercio, confirmadas por el indicador CCI

Las señales de comercio para abrir posiciones largas o cortas deben ser confirmadas por el indicador CCI . El valor de CCI debe ser mayor / menor que los niveles críticos (-50 para la posición larga y 50 para la posición corta).

El cierre de la posición abierta depende de los valores de CCI. Se puede hacer de 2 formas:

  1. si la línea CCI ha alcanzado el nivel crítico opuesto (80 para la posición larga y -80 para la posición corta)
  2. si no se confirma la señal inversa (cuando CCI alcanza los siguientes niveles: -80 para la posición larga y 80 para la posición corta)

Fig. 3. Patrón "Dark Cloud Cover", confirmado por el indicador CCI

Fig. 3. Patrón "Dark Cloud Cover", confirmado por el indicador CCI


  • int CDC_PL_CCI::LongCondition() - Comprueba las condiciones para abrir posiciones largas (devuelve 80) y cierra la posición corta (devuelve 40);
  • int CDC_PL_CCI::ShortCondition() - comprueba las condiciones para abrir una posición corta (devuelve 80) y cierra la posición larga (devuelve 40).

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

  1. La formación del patrón "Piercing Line" debe ser confirmada por el indicador CCI : CCI(1)<-50 (el valor de CCI de la última barra completada debe ser inferior a -50).

  2. La posición corta debe estar cerrada si el indicador CCI ha cruzado al alza el nivel critico -80 o cruzado a la baja el nivel crítico 80.

//+------------------------------------------------------------------+
//| Comprueba las condiciones para las entradas y salidas al mercado |
//| 1) Entrada al mercado (abrir posición larga, resultado=80)       |
//| 2) Salida del mercado (cerrar posición corta, resultado=40)      |
//+------------------------------------------------------------------+
int CDC_PL_CCI::LongCondition()
  {
   int result=0;
//--- idx se puede utilizar para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso el EA comprueba las condiciones del comercio en cada tick
//--- idx=1 - en este caso el EA comprueba la condición de comercio sólo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de las condiciones para abrir posiciones largas
//--- formación del patrón Piercing Line y CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (CCI(1)<-50))
     result=80;
//--- comprobación de las condiciones para cerrar la posición corta
//--- cruce de la línea de señal de los niveles de sobre compra / sobre venta (a la baja -80, a la baja -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     result=40;
//--- devuelve el resultado
   return(result);
  }

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

  1. La formación del patrón "Dark Cloud Cover" debe ser confirmada por el indicador CCI : CCI(1)>50 (el valor del indicador CCI de la última barra completa debe ser mayor que 50).

  2. La posición larga debe ser cerrada si el indicador CCI ha cruzado a la baja los niveles -80 o 80 .

//+------------------------------------------------------------------+
//| Comprueba las condiciones para las entradas y salidas al mercado |
//| 1) Entrada al mercado (abrir posición larga, resultado=80)       |
//| 2) Salida del mercado (cerrar posición corta, resultado=40)      |
//+------------------------------------------------------------------+
int CDC_PL_CCI::ShortCondition()
  {
   int result=0;
//--- idx se puede utilizar para determinar el modo de trabajo del Asesor Experto
//--- idx=0 - en este caso el EA comprueba las condiciones del comercio en cada tick
//--- idx=1 - en este caso el EA comprueba la condición de comercio sólo en las barras nuevas
   int idx   =StartIndex();
//--- comprobación de las condiciones para abrir una posición corta
//--- formación del patrón Dark Cloud Cover y CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (CCI(1)>50))
     result=80;
//--- comprobación de las condiciones para abrir posiciones largas
//--- cruce de la línea de señal de los niveles de sobre compra / sobre venta (a la baja -80, a la baja -80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- devuelve el resultado
   return(result);
  }


2.3. Creando el Asesor Experto utilizando MQL5 Wizard

La clase CDC_PL_CCI no está incluida en la librería de clases estándar, para utilizarla, es necesario descargar el archivo acdc_pl_cci.mqh (ver archivos adjuntos) y guardarlo en la carpeta client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Se debe hacer lo mismo con el archivo candlepatterns.mqh. Se puede utlizar MQL5 Wizard después del reinicio del MetaEditor.

Para crear un Asesor Experto lanzaremos MQL5 Wizard:

Fig. 4. Creando el Asesor Experto utilizando MQL5 Wizard

Fig. 4. Creando el Asesor Experto utilizando MQL5 Wizard

Vamos a especificar el nombre del Asesor Experto:

Fig. 5. Propiedades generales del Asesor Experto

Fig. 5. Propiedades generales del Asesor Experto

Después de eso tenemos que seleccionar los módulos de señales comerciales utilizados.

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

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

En nuestro caso usamos sólo un módulo de señales comerciales.

Añadiendo los módulos de señales de comercio de las "Señales basadas en Dark Cloud Cover/Piercing Line confirmadas por el CCI":

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

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

El módulo de señales de comercio añadido:

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

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

Puedes seleccionar cualquier propiedad de trailing, pero vamos a utilizar "Trailing Stop not used":

Fig. 9. Propiedades de trailing del Asesor Experto

Fig. 9. Propiedades de trailing del Asesor Experto

En cuanto a las propiedades de manejo del dinero, vamos a utilizar "Trading with fixed trade volume":

Fig. 10. Propiedades de la administración del dinero del Asesor Experto

Fig. 10. Propiedades de la administración del dinero del Asesor Experto

Al presionar el botón "Finish" obtendremos el código generado del Asesor Experto, ubicado en, Expert_ADC_PL_CCI.mq5, que se guardará en terminal_data_folder\MQL5\Experts\.

Loa parámetros de entrada generados por defecto del Asesor Experto

//--- entradas para la señal principal
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 la para cerrar [0...100]
input double         Signal_PriceLevel      =0.0;    // Nivel de 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)

deben ser reemplazado por:

//--- entradas para la señal principal
input int            Signal_ThresholdOpen   =40;     // Valor umbral de señal la para cerrar [0...100]
input int            Signal_ThresholdClose  =20;     // Valor umbral de señal la para cerrar [0...100]
input double         Signal_PriceLevel      =0.0;    // Nivel de 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 Signal_ThresholdOpen / Signal_ThresholdClose permiten especificar los niveles de umbral para la apertura y cierre de posiciones.

En el código de los métodos LongCondition () y ShortCondition () de la clase de señales de comercio hemos especificado los valores fijos del umbral:

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

El Asesor Experto, generado por MQL5 Wizard abre y cierra posiciones usando los "votos" de los módulos de señales de comercio. También se utiliza el voto del módulo principal (como contenedor, que consiste en todos los módulos añadidos), pero los métodos LongCondition () y ShortCondition ()siempre devuelven 0.

Los resultados de la votación del módulo principal también se utiliza en promedios de "votos". En nuestro caso tenemos: módulo principal + 1 módulo de señales de comercio, por lo que tenemos que tomar en cuenta este hecho al fijar los valores umbral. Debido a este hecho el ThresholdOpen y ThresholdClose se deben establecer como 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 hará sólo cuando las condiciones de cierre sean verdaderas.


2.4. Resultados del backtesting del Historial

Vamos a considerar el backtesting del Asesor Experto sobre los datos históricos (EURUSD H1, período de prueba: 2010.01.01-2011.03.16, 2010.01.01-2011.03.16, PeriodCCI=15, MA_period=19).

En la creación del Asesor Experto se utilizó el volumen fijo (Trading Fixed Lot, 0.1), El algoritmo de Trailing Stop algorithm no se utiliza (Trailing not used).

Fig. 11. Resultados de las pruebas del Asesor Experto, basadas en Dark Cloud Cover/Piercing Line + CCI

Fig. 11. Resultados de las pruebas del Asesor Experto, basadas en Dark Cloud Cover/Piercing Line + CCI


El mejor conjunto de parámetros de entrada se puede encontrar utilizando el Strategy Tester del terminal de cliente MetaTrader 5 .

El código del Asesor Experto, creado por MQL5 Wizard se adjunta en expert_adc_pl_cci.mq5.

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

MQL5 Wizard - Señales de comercio basadas en Dark Cloud Cover/Piercing Line + Estocástico MQL5 Wizard - Señales de comercio basadas en Dark Cloud Cover/Piercing Line + Estocástico

Vamos a considerar las señales de comercio basadas en el patrón de velas "Dark Cloud Cover/Piercing Line", confirmadas por el indicador Estocástico. El código del Asesor Experto basado en esta estrategia puede ser generado automáticamente utilizando MQL5 Wizard.

Average Directional Movement Index Wilder Average Directional Movement Index Wilder

El Average Directional Movement Index by Wilder (ADX Wilder, Índice de Movimiento Direccional Medio de Wilder) sirve para determinar si hay una tendencia en el precio.

MQL5 Wizard - Señales de comercio basadas en Dark Cloud Cover/Piercing Line + MFI MQL5 Wizard - Señales de comercio basadas en Dark Cloud Cover/Piercing Line + MFI

Vamos a considerar las señales de comercio basadas en el patrón de velas "Dark Cloud Cover/Piercing Line", confirmadas por Market Facilitation Index (MFI). El código del Asesor Experto basado en esta estrategia puede ser generado automáticamente utilizando MQL5 Wizard.

MQL5 Wizard - Señales de comercio basadas en Dark Cloud Cover/Piercing Line + RSI MQL5 Wizard - Señales de comercio basadas en Dark Cloud Cover/Piercing Line + RSI

Vamos a considerar las señales de comercio basadas en el patrón de velas "Dark Cloud Cover/Piercing Line" confirmadas por Relative Strength Index (RSI). El código del Asesor Experto basado en esta estrategia puede ser generado automáticamente utilizando MQL5 Wizard.