El MQL5 Wizard es una herramienta fantástica que te permite crear Asesores Expertos listos para usar basados en las clases de la biblioteca estándar que vienen junto con el terminal del cliente (puedes consultar más detalles en Cómo crear Asesores Expertos en MQL5 Wizard). Esta herramienta te permite validar rápidamente tus ideas de trading; solo necesitas crear tu propia clase de señales de trading. La estructura de esta clase y un ejemplo se pueden encontrar en el artículo MQL5 Wizard: Cómo crear un módulo de señales de trading.
La idea general es la siguiente: la clase de señales de trading se deriva de CExpertSignal. Luego, es necesario sobreescribir los métodos virtuales LongCondition() y ShortCondition() con tus propios métodos.
Existen libros como "Estrategias de los mejores traders" (en ruso), que abordan muchas estrategias de trading, y aquí nos centraremos en los patrones de velas de reversión, confirmados por Estocástico, CCI, MFI y RSI osciladores.
La mejor forma de proceder es crear una clase separada, derivada de CExpertSignal, para verificar la formación de los patrones de velas. Para la confirmación de las señales de trading generadas por los patrones de velas, basta con escribir la clase derivada de CCandlePattern y añadir las características necesarias (por ejemplo, la confirmación a través de osciladores).
A continuación, veremos las señales basadas en el patrón de velas de reversión "3 Cuervos Negros/3 Soldados Blancos", confirmado por el indicador Commodity Channel Index. El módulo de señales de trading se basa en la clase CCandlePattern, que es un ejemplo sencillo de su uso para la creación de señales de trading con patrones de velas.
1. Patrones de Velas de Reversión: "3 Cuervos Negros" y "3 Soldados Blancos"
1.1. 3 Cuervos Negros
Este es un patrón de velas bajista que se utiliza para predecir la reversión de una tendencia alcista actual. Este patrón consiste en tres velas largas y consecutivas que han cerrado por debajo de la anterior, con cada apertura de sesión ocurriendo dentro del cuerpo de la vela anterior.

Fig. 1. Patrón de velas "3 Cuervos Negros"
El reconocimiento del patrón "3 Cuervos Negros" se implementa en el método CheckPatternThreeBlackCrows de la clase CCandlePattern:
//+------------------------------------------------------------------+ //| Verifica la formación del patrón de velas "3 Cuervos Negros" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 Cuervos Negros if((Open(3)-Close(3)>AvgBody(1)) && //(vela negra larga) (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // (puntos medios inferiores) (MidPoint(1)<MidPoint(2))) return(true); //--- return(false); }
El método CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) de la clase CCandlePattern se utiliza para verificar la formación del patrón de velas "3 Cuervos Negros".
1.2. Patrón de Velas 3 Soldados Blancos
Un patrón de velas alcista que se utiliza para predecir la reversión de una tendencia bajista actual. Este patrón consiste en tres velas largas y consecutivas que han cerrado por encima de la anterior, con cada apertura de sesión ocurriendo dentro del cuerpo de la vela anterior.
El patrón es válido siempre que la vela del segundo día se abra en la mitad superior del rango del primer día. Al final del segundo día, debe cerrar cerca de su máximo, dejando una sombra superior muy pequeña o inexistente. El mismo patrón se repite en el tercer día.

Fig. 2. Patrón de velas "3 Soldados Blancos"
Aquí tienes el método para reconocer el patrón "3 Soldados Blancos":
//+------------------------------------------------------------------+ //| Verifica la formación del patrón de velas "3 Soldados Blancos" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 Soldados Blancos if((Close(3)-Open(3)>AvgBody(1)) && // vela blanca larga (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // puntos medios superiores (MidPoint(1)>MidPoint(2))) return(true); //--- return(false); }
El método CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) de la clase CCandlePattern se utiliza para verificar la formación del patrón de velas "3 Soldados Blancos".
2. Señales de Trading, Confirmadas por el Indicador CCI
Las señales de trading para abrir posiciones largas o cortas deben estar confirmadas por el indicador CCI. El valor del CCI debe ser mayor/menor que los niveles críticos (-50 para posición larga y 50 para posición corta)
El cierre de la posición abierta depende de los valores del CCI. Esto puede hacerse en 2 casos:
- si la línea del CCI ha alcanzado el nivel crítico opuesto (80 para posición larga y -80 para posición corta)
- si la señal inversa no está confirmada (cuando el CCI alcanza los siguientes niveles: -80 para posición larga y 80 para posición corta)

Fig. 3. Patrón "3 Cuervos Negros", confirmado por el indicador CCI
- int CBC_WS_CCI::LongCondition() - verifica las condiciones para abrir una posición larga (devuelve 80) y cerrar la posición corta (devuelve 40);
- int CBC_WS_CCI::ShortCondition() - verifica las condiciones para abrir una posición corta (devuelve 80) y cerrar la posición larga (devuelve 40).
2.1. Abrir posición larga/Cerrar posición corta
La formación del patrón "3 Cuervos Negros" debe estar confirmada por el CCI: CCI(1)<-50 (el valor del CCI de la última barra completada debe ser menor que -50).
La posición corta debe cerrarse si el CCI ha cruzado hacia arriba el nivel crítico -80 o cruzado hacia abajo el nivel crítico 80.
//+------------------------------------------------------------------+ //| Verifica condiciones para entrar y salir del mercado | //| 1) Entrada al mercado (abrir posición larga, resultado=80) | //| 2) Salida del mercado (cerrar posición corta, resultado=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::LongCondition() { int result=0; //--- idx puede usarse para determinar el modo de trabajo del Asesor Experto //--- idx=0 - en este caso EA verifica condiciones de trading en cada tick //--- idx=1 - en este caso EA verifica condiciones de trading solo en barras de noticias int idx =StartIndex(); //--- comprobando condiciones para abrir posición larga //--- formación del patrón de 3 Soldados Blancos y CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (CCI(1)<-50)) result=80; //--- comprobando condiciones para cerrar posición corta //--- cruce de línea de señal de niveles de sobrecompra/sobreventa (hacia abajo -80, hacia abajo -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- devolver resultado return(result); }
2.2. Abrir posición corta/Cerrar posición larga
La formación del patrón "3 Soldados Blancos" debe estar confirmada por el CCI: CCI(1)>50 (el valor del CCI de la última barra completada debe ser mayor que 50).
La posición larga debe cerrarse si el CCI ha cruzado hacia abajo los niveles -80 o 80.
//+------------------------------------------------------------------+ //| Verifica condiciones para entrar y salir del mercado | //| 1) Entrada al mercado (abrir posición corta, resultado=80) | //| 2) Salida del mercado (cerrar posición larga, resultado=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::ShortCondition() { int result=0; //--- idx puede usarse para determinar el modo de trabajo del Asesor Experto //--- idx=0 - en este caso EA verifica condiciones de trading en cada tick //--- idx=1 - en este caso EA verifica condiciones de trading solo en barras de noticias int idx =StartIndex(); //--- comprobando condiciones para abrir posición corta //--- formación del patrón de 3 Cuervos Negros y CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (CCI(1)>50)) result=80; //--- comprobando condiciones para cerrar posición larga //--- cruce de línea de señal de niveles de sobrecompra/sobreventa (hacia abajo -80, hacia abajo 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- devolver resultado return(result); }
2.3. Creando un Asesor Experto usando MQL5 Wizard
La clase CBC_WS_CCI no está incluida en las clases de la Biblioteca Estándar, por lo que para usarla es necesario descargar el archivo acbc_ws_cci.mqh (ver adjuntos) y guardarlo en la carpeta client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Lo mismo debe hacerse con el archivo candlepatterns.mqh. Puedes usarlo en MQL5 Wizard después de reiniciar el MetaEditor.
Para crear un Asesor Experto, lanza el MQL5 Wizard:

Fig. 4. Creando un Asesor Experto usando MQL5 Wizard
Especificamos el nombre del Asesor Experto:

Fig. 5. Propiedades generales del Asesor Experto
Después de eso, necesitamos seleccionar los módulos de señales de trading que utilizaremos.

Fig. 6. Propiedades de señales del Asesor Experto
En nuestro caso, usamos solo un módulo de señales de trading.
Añadiendo el módulo de Señales basadas en 3 Cuervos Negros/3 Soldados Blancos confirmadas por CCI:

Fig. 7. Propiedades de señales del Asesor Experto
Módulo de señales de trading añadido:

Fig. 8. Propiedades de señales del Asesor Experto
Puedes seleccionar cualquier propiedad de trailing, pero usaremos "Trailing Stop no utilizado":

Fig. 9. Propiedades de trailing del Asesor Experto
En cuanto a las propiedades de gestión monetaria, usaremos "Trading con volumen fijo":

Fig. 10. Propiedades de gestión monetaria del Asesor Experto
Al presionar el botón "Finalizar", obtendremos el código del Asesor Experto generado, localizado en Expert_ABC_WS_CCI.mq5, que se guardará en terminal_data_folder\MQL5\Experts\.
Los parámetros de entrada predeterminados del Asesor Experto generado:
//--- entradas para la señal principal 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 precio para ejecutar un trato 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:
//--- entradas para la señal principal 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 precio para ejecutar un trato 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 umbral para abrir y cerrar posiciones.
En el código de los métodos LongCondition() y ShortCondition() de la clase de señales de trading 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 las posiciones utilizando 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 se utiliza, pero sus métodos LongCondition() y ShortCondition() siempre devuelven 0.
Los resultados de los votos 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 trading, por lo que debemos tener en cuenta este hecho al establecer los valores de umbral. Debido a esto, el ThresholdOpen y ThresholdClose deben establecerse como 40=(0+80)/2 y 20=(0+40)/2.
Los valores de los parámetros de entrada Signal_StopLevel y Signal_TakeLevel están establecidos en 0, lo que significa que el cierre de las posiciones se realizará solo cuando las condiciones de cierre sean verdaderas.
2.4. Resultados de las pruebas históricas
Analicemos las pruebas del Asesor Experto en datos históricos (EURUSD H1, periodo de prueba: 2010.01.01-2011.03.16, PeriodCCI=37, MA_period=13).
En la creación del Asesor Experto, usamos el volumen fijo (Trading Fixed Lot, 0.1), no se utilizó el algoritmo de Trailing Stop (Trailing no utilizado).

Fig. 11. Resultados de las pruebas del Asesor Experto, basado en 3 Cuervos Negros/3 Soldados Blancos + CCI
El mejor conjunto de parámetros de entrada se puede encontrar utilizando el Probador de Estrategias del terminal cliente MetaTrader 5.
El código del Asesor Experto, creado por MQL5 Wizard se adjunta en expert_abc_ws_cci.mq5.
Publicaciones relacionadas
- Promedio Móvil: Asesor Experto para MetaTrader 5
- Señales de Trading con Patrón Hammer/Hanging Man y Estocástico en MetaTrader 5
- Procesamiento Visual de Órdenes: Mejora tu Trading en MetaTrader 4
- Crossover de 2 MA: Tu Asesor Experto para MetaTrader 4
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas de la Mañana/Atardecer y CCI