El MQL5 Wizard te permite crear Asesores Expertos (EAs) listos para usar basados en las clases de la biblioteca estándar que vienen con el terminal del cliente. Si quieres verificar rápidamente tus ideas de trading, solo necesitas crear tu propia clase de señales de trading. La estructura de esta clase y ejemplos se pueden encontrar en el artículo MQL5 Wizard: Cómo Crear un Módulo de Señales de Trading.
La idea básica es la siguiente: la clase de señales de trading se deriva de CExpertSignal. Después, es necesario sobrescribir los métodos virtuales LongCondition() y ShortCondition() con tus propios métodos.
Existen libros como "Estrategias de los mejores traders" (en ruso), donde se consideran muchas estrategias de trading. Aquí nos enfocaremos en patrones de velas de reversión, confirmados por Stochastic, CCI, MFI y RSI.
La mejor manera es crear una clase separada, derivada de CExpertSignal para verificar la formación de patrones de velas. Para confirmar las señales de trading generadas por los patrones de velas, basta con escribir una clase, derivada de CCandlePattern y agregar las características necesarias (por ejemplo, confirmación por osciladores).
Aquí consideraremos las señales basadas en el patrón de velas de reversión "3 Cuervos Negros/3 Soldados Blancos", confirmadas por el índice de facilitación del mercado (MFI). El módulo de señales de trading se basa en la clase CCandlePattern, que es un ejemplo simple de su uso para crear señales de trading con patrones de velas.
1. Patrón de velas de reversión "3 Cuervos Negros" y "3 Soldados Blancos"
1.1. 3 Cuervos Negros
Un patrón de velas bajista que se usa para predecir la reversión de la tendencia alcista actual. Este patrón consta de tres velas largas consecutivas que han cerrado por debajo del día 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)) && // (negro largo) (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 usa 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 usa para predecir la reversión de la tendencia bajista actual. Este patrón consta de tres velas largas consecutivas que han cerrado por encima del día anterior, con cada apertura de sesión ocurriendo dentro del cuerpo de la vela anterior.
El patrón es válido mientras la vela del segundo día se abra en la mitad superior del rango del primer día. Al final del segundo día, debería 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í está el método para el reconocimiento del 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)) && // largo blanco (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 usa para verificar la formación del patrón de velas "3 Soldados Blancos".
2. Señales de trading, confirmadas por el indicador MFI
Las señales de trading para abrir 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 superior a 60 (para posiciones cortas).
El cierre de una posición abierta depende de los valores del indicador MFI. Esto puede hacerse en 2 casos:
- si MFI ha alcanzado el nivel crítico opuesto (70 para posición larga y 30 para posición corta)
- si la señal inversa no está confirmada (cuando el indicador MFI alcanza los siguientes niveles: 30 para posición larga y 70 para posición corta)

Fig. 3. Patrón de "3 Cuervos Negros", confirmado por el indicador MFI
- int CBC_WS_MFI::LongCondition() - verifica condiciones para abrir posición larga (devuelve 80) y cerrar posición corta (devuelve 40);
- int CBC_WS_MFI::ShortCondition() - verifica condiciones para abrir posición corta (devuelve 80) y cerrar posición larga (devuelve 40).
2.1. Abrir posición larga/Cerrar posición corta
-
La formación del patrón "3 Soldados Blancos" debe ser confirmada por el indicador MFI: MFi(1)<40 (el valor del indicador MFI de la última barra completada debe ser menor que 40).
-
La posición corta debe ser cerrada si el indicador MFI ha cruzado hacia arriba los niveles críticos (70 o 30).
//+------------------------------------------------------------------+ //| Verifica condiciones para entrada y salida 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_MFI::LongCondition() { int result=0; //--- idx se puede usar para determinar el modo de trabajo del EA //--- idx=0 - en este caso, el EA verifica condiciones de trading en cada tick //--- idx=1 - en este caso, el EA verifica condiciones de trading solo en barras de noticias int idx =StartIndex(); //--- verificando condiciones para abrir posición larga //--- formación del patrón 3 Soldados Blancos y MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40)) result=80; //--- verificando condiciones para cerrar posición corta //--- cruce de línea de señal de 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; //--- devolver resultado return(result); }
2.2. Abrir posición corta/Cerrar posición larga
-
La formación del patrón "3 Cuervos Negros" debe ser confirmada por el indicador MFI: MFI(1)>60 (el valor del indicador MFI de la última barra completada debe ser mayor que 60).
-
La posición larga debe ser cerrada si el indicador MFI ha cruzado hacia arriba los niveles críticos (70 o 30).
//+------------------------------------------------------------------+ //| Verifica condiciones para entrada y salida 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_MFI::ShortCondition() { int result=0; //--- idx se puede usar para determinar el modo de trabajo del EA //--- idx=0 - en este caso, el EA verifica condiciones de trading en cada tick //--- idx=1 - en este caso, el EA verifica condiciones de trading solo en barras de noticias int idx =StartIndex(); //--- verificando condiciones para abrir posición corta //--- formación del patrón 3 Cuervos Negros y MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60)) result=80; //--- verificando condiciones para cerrar posición larga //--- cruce de línea de señal de 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; //--- devolver resultado return(result); }
2.3. Crear un Asesor Experto usando MQL5 Wizard
La clase CBC_WS_MFI no está incluida en las clases de la biblioteca estándar, para usarla, es necesario descargar el archivo abc_ws_mfi.mqh (ver adjuntos) y guardarlo en la carpeta client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Lo mismo debe hacerse con el archivo acandlepatterns.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
Especifica el nombre del Asesor Experto:

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

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

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

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 de operación 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, ubicado en Expert_ABC_WS_MFI.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 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:
//--- 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 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 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 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 agregados) también se usa, 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 necesitamos tener en cuenta este hecho al establecer los valores de umbral. Debido a este hecho, 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 se establecen en 0, lo que significa que el cierre de las posiciones se hará solo cuando las condiciones de cierre sean verdaderas.
2.4. Resultados de pruebas históricas
Veamos las pruebas del Asesor Experto en datos históricos (EURUSD H1, periodo de prueba: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=13).
En la creación del Asesor Experto utilizamos el volumen fijo (Trading Fixed Lot, 0.1), no se utiliza el algoritmo de Trailing Stop (Trailing no utilizado).

Fig. 11. Resultados de pruebas del Asesor Experto, basado en 3 Cuervos Negros/3 Soldados Blancos + MFI
El mejor conjunto de parámetros de entrada se puede encontrar usando el Tester de Estrategias del terminal cliente MetaTrader 5.
El código del Asesor Experto, creado por MQL5 Wizard, se adjunta en expert_abc_ws_mfi.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
- Señales de Trading con MQL5: Patrones de Estrellas y MFI
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas de la Mañana/Atardecer y CCI
- Cómo Crear un Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas y Estocástico