Вы находитесь на странице: 1из 13

MQL5 Wizard: Nueva Versión

MetaQuotes Software Corp. | 26 diciembre, 2013

El terminal MetaTrader 5 continua mejorando y adquiriendo nuevos elementos. El nuevo MetaTrader 5 versión
439 contiene el MQL5 Wizard actualizado, que permite crear Asesores Expertos (EAs, por sus siglas en inglés)
basados en reglas de comercio más flexibles. En este artículo describiremos las nuevas posibilidades del MQL5
Wizard y explicaremos los cambios en la arquitectura de Asesores Expertos generados usando esta aplicación.

Fondo
Originariamente, el MQL5 Wizard se diseñó como una práctica herramienta para ayudar a comerciantes a
crear programas en MQL5 de forma fácil. Ya en la primera versión del MQL5 Wizard, usted podía crear un
Asesor Experto listo para usar rápidamente como un conjunto de módulos sencillos, obteniendo su código
fuente en MQL5. Lo importante era que usted no necesitaba saber el lenguaje MQL5; todo lo que necesitaba
era leer el artículo Create Your Own Expert Advisor in MQL5 Wizard (Crear Su Propio Asesor Experto en MQL5
Wizard).

Un Asesor Experto generado por el Wizard contiene tres módulos:

Un módulo de señales de trading;


Un módulo de rastreo de posición;
Un módulo de riesgo y gestión de dinero.

Cada módulo de EA está basado en una clase determinada y facilita muchas oportunidades para modificar el
comportamiento de su Asesor Experto.

La Biblioteca estándar incluye un conjunto de clases completas y listas para usar para implementar varios
mecanismos de gestión de dinero, mantenimiento de posiciones abiertas y generación de señales de trading.

Este enfoque nos permite crear robots de trading basados en módulos funcionales y probados. Únicamente
necesita realizar unos pocos pasos y especificar los parámetros necesarios. Pero la experiencia demuestra que
incluso los buenos ejemplos que explican los principios de escritura de clases personalizadas no son siempre
de ayuda para programadores de MQL5 principiantes. 

Otra desventaja de la versión anterior del MQL5 Wizard es que para implementar un nuevo algoritmo de
trading ligeramente modificado, debe escribir una clase nueva.

Con esta experiencia y comentarios de usuarios, MetaQuotes decidió crear una versión avanzada del MQL5
Wizard con aún más funciones.

Un Nuevo Concepto de Generación de Señales de Trading


El obstáculo principal en la versión anterior del MQL5 Wizard estaba relacionado con los problemas que podían
ocurrir al crear señales de trading propias. Por tanto, al desarrollar la nueva versión del Wizard, el énfasis se
puso en simplificar la creación de señales de trading combinadas basadas en principios sencillos.

Por este motivo, se realizaron los siguientes cambios a la clase base del generador de señales de trading (a
partir de aquí, se referirá a él como la Señal):

Cualquier Señal (derivada de la clase CExpertSignal) se basa en los pronósticos de "asesores" que dan su
opinión sobre los posibles movimientos de precios. Estos asesores, a su vez, derivan también de la clase
CExpertSignal, y por tanto pueden tener sus propios asesores. El número de asesores en cada Señal
puede llegar a 64.
Se han añadido nuevos métodos a la clase CExpertSignal, que implementan la "votación" en la dirección
del movimiento de precios. Además, contiene un nuevo mecanismo para participar en tal "votación".
Para aumentar la flexibilidad para tomar una decisión, cada Señal involucrada en la toma de decisiones
(no olvide que los "asesores" también son señales) puede ahora recibir información de sus propios
instrumentos de mercado (diferentes de los actuales) y/o de su propio intervalo temporal.

Por tanto, la decisión sobre entrar en el mercado en una dirección u otra se puede tomar ahora
"colectivamente", es decir, teniendo en cuenta la "opinión considerada" de cada asesor.
La Señal "vota" en la dirección del movimiento de precios en base a los algoritmos incrustados de detección de
patrones de mercado (específicos a esta Señal). Por ejemplo, una señal basada en valores estocásticos será
capaz de identificar una inversión, divergencia con el precio, etc.

La Biblioteca estándar ya incluye veinte Señales listas para usar basadas en varios indicadores.

Un Nuevo Mecanismo para Tomar Decisiones sobre Trading


El mecanismo para tomar decisiones sobre trading por la Señal se puede presentar en forma de las siguientes
provisiones clave:

Cada Señal tiene su propio conjunto de patrones de mercado (alguna combinación de precio y valores
de indicador).
Cada patrón de mercado tiene un valor de pero de 1 a 100. Cuanto más alto sea el valor, más fuerte
será el patrón.
Cada patrón genera un pronóstico de movimiento de precios en una dirección determinada.
Al comparar los pronósticos recibidos de los patrones aplicados, se selecciona el más fuerte, y se da un
pronóstico en un rango de valores de entre -100 y +100, en el que el signo determina la dirección del
movimiento pronosticado (negativo: el precio caerá; positivo: el precio subirá). Un valor absoluto se
corresponde con la fuerza del mejor patrón encontrado. Este resultado se envía a la votación general.
El pronóstico de cada asesor en el módulo va a la votación con el factor de peso entre 0 y 1,0, que se
especifica en su configuración ("Weight", o "Peso").
El resultado de la votación es un número entre -100 y +100, en el que el signo determina la dirección
del movimiento pronosticado, y el valor absoluto caracteriza la fuerza de la señal. Se calcula como el
medio aritmético de pronósticos calculados de todos los asesores del módulo. Este resultado es un
pronóstico de la Señal, y el valor absoluto es una indicación de lo fuerte que es la Señal.

La configuración de cada Asesor Experto generado contiene dos parámetros: el umbral para tomar una
decisión para abrir o cerrar una posición (ThresholdOpen y ThresholdClose),— que puede tener un valor entre
0 y 100. Si la fuerza de una Señal supera el valor de umbral, se toma la decisión de conducir una operación de
trading.

El EA creado usando el MQL5 Wizard consta de tres partes. De ellas, la más importante es la cabeza, que
contiene el módulo para generar señales de trading. Entonces, los procesos en el módulo de señales se pueden
representar así:
La figura muestra que el módulo de Señal puede contener dos bloques: un bloque de patrones de mercado y
un bloque de asesores. El bloque de patrones produce pronósticos de cada patrón, tras lo cual se elige el más
fuerte de ellos. Los pronósticos de asesores (otras Señales) se multiplican por el peso correspondiente, y los
valores resultantes se resumen durante la votación para producir el medio aritmético pronosticado. En este
caso, el módulo de Señal ha producido -36.6 = (-100+60-54)/3 para la situación actual. Esto significa que el
pronóstico de Venta tiene una fuerza absoluta de 36,6.
Considere el mecanismo de toma de decisiones en dos ejemplos sencillos.
Supongamos que hay un Asesor Experto con ThresholdOpen=20 y ThresholdClose=90. Los módulos de Señal
basados en MA (Media Móvil, por sus siglas en inglés) con un peso de 0.4 y Stochastic (Estocástico) con un peso
de 0.8 están involucrados a la hora de tomar una decisión sobre trading. Considere dos opciones para obtener
señales de trading:

Opción 1.
El precio ha cruzado hacia arriba un indicador MA ascendente. Esto se corresponde con uno de los
patrones de mercado que implican crecimiento de precio, que está incrustado en el módulo MA. Su
significado es 100. Al mismo tiempo, el Oscilador Estocástico se ha apagado y ha formado una
divergencia con el precio. Esto es un patrón que implica una caída de precio, que se implementa en el
módulo Estocástico . El valor de este patrón es 80.
Calcular el resultado de la votación final. El pronóstico sopesado, obtenido del módulo MA, se calcula
como 0.4 * 100 = 40. El pronóstico sopesado del módulo Estocástico se calcula como 0.8 * (-80) = -64. El
pronóstico final se calcula como el medio aritmético de las dos predicciones sopesadas: (40 - 64)/2 =
-12. Esta es la señal para vender con el poder condicionante de 12. El valor umbral de 20 no se ha
alcanzado. Por tanto, no se llevará a cabo la operación de trading.

Opción 2.
El precio ha cruzado hacia abajo un indicador MA ascendente. Esto se corresponde con uno de los
patrones de mercado que implican crecimiento de precio, que está incrustado en el módulo MA. Su
significado es 10. Al mismo tiempo, el Oscilador Estocástico se ha apagado y ha formado una
divergencia con el precio. Este es un patrón que implica caída de precio, que se implementa en el
módulo Estocástico . El significado de este patrón es 80.
Calcular el resultado de la votación final. El pronóstico sopesado, obtenido del módulo MA, se calcula
como 0.4 * 10 = 4. El pronóstico sopesado del módulo Estocástico se calcula como 0.8 * (-80) = -64. El
pronóstico final se calcula como el medio aritmético de las dos predicciones sopesadas: (4 - 64)/2 = -30.
Esta es una señal para vender con el poder condicionante de 30. El valor umbral de 20 se ha alcanzado.
Por tanto, el resultado es una señal para abrir una posición corta.

Figura 1. Un ejemplo de patrones de mercado en el gráfico

La figura muestra los patrones de mercado descritos en los ejemplos:


a) La divergencia entre el precio y el Oscilador Estocástico se usa en las opciones 1 y 2.
b) El precio ha cruzado el indicador MA de abajo hacia arriba - se usa en la opción 1.
c) El precio ha cruzado el indicador MA de arriba hacia abajo - se usa en la opción 2.

Combinar Señales en el EA
Para crear nuestro Asesor Experto propio, es necesario primero decidir en qué instrumento y en qué intervalo
de tiempo haremos trading. En segundo lugar, deberíamos seleccionar Señales en la base de los indicadores
que queremos usar para trading.
Para nuestro ejemplo, tendremos las siguientes condiciones:

1. El símbolo de trading es EURUSD. Nuestro intervalo es M10.


2. Las Señales usadas:
EMA('EURUSD',M10,31) - señales basadas en una media móvil exponencial;
Estocástico('EURUSD',M10,8,3,3) - señales basadas en el Oscilador Estocástico;
EMA('EURUSD',H1,24) - señales basadas en una media móvil exponencial de un intervalo diferente;
Estocástico('EURJPY',H4,8,3,3) - señales basadas en el Oscilador Estocástico de un símbolo e
intervalo diferentes;
IntradayTimeFilter - un filtro por hora del día y el número del día de la semana.

Crear un Robot de Trading en el Nuevo MQL5 Wizard


El código fuente del Asesor Experto se genera usando el MQL5 Wizard en el MetaEditor.
Las clases de estrategias de trading básicas se guardan en terminal_data_folder\MQL5\Include\Expert\.
Algoritmos listos para usar de clases de señales de trading, clases de rastreo de posiciones abiertas y clases de
gestión de dinero y riesgo se pueden encontrar en las subcarpetas Signal, (Señal) Trailing (Rastreo)
y Money (Dinero). El MQL5 Wizard analiza los archivos en estas carpetas y los usa para generar el código
del Asesor Experto.

Figura 2. Clases base para el MQL5 Wizard

Para ejecutar el MQL5 Wizard debe hacer click en "New" ("Nuevo") en la barra de herramientas o seleccionar
"Nuevo" del menú "Archivo" (o pulsar Ctrl+N):

Figura 3. Ejecutar el MQL5 Wizard

A continuación, seleccione el tipo de programa que desea crear. En nuestro caso, seleccionaremos la
opción "Expert Advisor (generate)" ("Asesor Experto (generar)"):
Figura 4. Seleccionar el tipo de programa

Paso 1. Propiedades Generales del Asesor Experto


A continuación se abre el cuadro de diálogo en el que puede configurar las propiedades generales del Asesor
Experto:

Figura 5. Propiedades generales de un Asesor Experto

Especifique el nombre de su Asesor Experto, el nombre del autor y el enlace a su página web en los
campos "Name" ("Nombre"), "Author" ("Autor") y "Link" ("Enlace"), respectivamente.
El Asesor Experto también tiene los siguientes parámetros de entrada:

Symbol (el tipo de cadena de caracteres)                            - el símbolo en el que se ejecuta el EA;


TimeFrame (el tipo de ENUM_TIMEFRAMES) - el intervalo en el que se ejecuta el EA.

Por defecto, ambas opciones están configuradas como "current" ("actual", es decir, el Asesor Experto se
simulará y realizará operaciones de trading en cualquier símbolo/intervalo).

¿Pero es esa siempre una buena opción? Por ejemplo, imagine que ejecuta por accidente un Asesor
Experto configurado para day trading en EURUSD (además, usa una confirmación de un par cruzado), en un
gráfico semanal de AUDNZD. No parece una buena idea.
Por tanto, sería mejor configurar los parámetros necesarios. En el siguiente paso, seleccione el tipo de señales
de trading en los que el EA realizará sus operaciones. Para ir a la selección de símbolo, haga click en "Next"
("Siguiente").

Paso 2. Seleccionar los Módulos de Señales de Trading

El algoritmo de apertura y cierre de posiciones se determina por los módulos de señales de trading. Los
módulos de señales de trading contienen reglas para abrir, cerrar e invertir posiciones.
Un Asesor Experto puede usar simultáneamente hasta 64 módulos de señales de trading diferentes (o iguales,
pero con configuraciones diferentes).

Figura 6. Parámetros de señales de EA (comienzo)

La Biblioteca estándar tiene módulos de señales de trading listas para usar:

1. Señales del indicador 'Accelerator Oscillator' ('Oscilador del Acelerador');


2. Señales del indicador 'Adaptive Moving Average' ('Media Móvil Adaptable');
3. Señales del indicador 'Awesome Oscillator' ('Gran Oscilador');
4. Señales del oscilador 'Bears Power';
5. Señales del oscilador 'Bulls Power';
6. Señales del oscilador 'Commodity Channel Index' ('Índice de Canal de Artículos');
7. Señales del oscilador 'DeMarker';
8. Señales del indicador 'Double Exponential Moving Average' ('Media Móvil Exponencial Doble');
9. Señales del indicador 'Envelopes' ('Sobres');
10. Señales del indicador 'Fractal Adaptive Moving Average' ('Media Móvil Adaptable Fractal');
11. Señales de filtro temporal de day trading;
12. Señales del oscilador 'Moving Average Convergence/Divergence' ('Convergencia/Divergencia de Media
Móvil');
13. Señales del indicador 'Moving Average' ('Media Móvil');
14. Señales del indicador 'Parabolic SAR' ('SAR Parabólico');
15. Señales del oscilador 'Relative Strength Index' ('Índice de Fuerza Relativa');
16. Señales del oscilador 'Relative Vigor Index' ('Índice de Vigor Relativo');
17. Señales del oscilador 'Stochastic' ('Estocástico');
18. Señales del oscilador 'Triple Exponential Average' ('Media Exponencial Triple');
19. Señales del indicador 'Triple Exponential Moving Average' ('Media Móvil Exponencial Triple');
20. Señales del oscilador 'Williams Percent Range' ('Rango de porcentaje de Williams').

Figura 7. Seleccionar señales

Según nuestros "Términos de Referencia", primero elegimos "Signals of indicator 'Moving Average" ("Señales del
indicador 'Media Móvil''').

Configure los parámetros necesarios (Período MA y Método). Haga doble click en el campo "Nombre" para
excluir de la optimización (por defecto, todos los parámetros de la señal están marcados como parámetros de
entrada, o "input-parameters") todos los parámetros excepto Peso.
Aquí deberá mencionar los campos de "Symbol" ("Símbolo") y "TimeFrame" ("Intervalo cronológico"). Estos
campos deben llenarse si la configuración apropiada de la señal es distinta a los parámetros actuales. Para una
señal, la configuración actual es la de la "inteligencia superior" (en este caso la del Asesor Experto).
Figura 8. Configuración de los parámetros de señal

Añada las señales restantes y configure los parámetros necesarios. Para la optimización, deje solo el
parámetro de Peso para todas las señales.

La configuración de las señales está completa. Haga click en "Siguiente" para continuar.

Figura 9. Parámetros de las señales de EA (final)

Paso 3. Seleccione el Módulo de Rastreo de Posiciones Abiertas


El siguiente paso es la selección del algoritmo para rastrear posiciones abiertas (Trailing Stop, o Rastreo de
Stop). Usar el rastreo le permitirá ahorrar beneficios ganados.
La configuración de este módulo se describe en detalle en el artículo MQL5 Wizard: Creating Expert Advisors
without Programming (MQL5 Wizard: Crear Asesores Expertos sin Programación). En nuestro caso, no usaremos
el rastreo.
Figura 10. Seleccionar el algoritmo de rastreo de posición

Paso 4. Seleccionar el Módulo de Gestión de Dinero y Riesgo


En el último paso, deberá seleccionar el sistema de gestión de dinero y riesgo que se usará en su Asesor
Experto. La configuración de este módulo se describe en detalle en el artículo MQL5 Wizard: Crear Asesores
Expertos sin Programación. En nuestro caso, usaremos un lote fijo.

Figura 11. Seleccionar el algoritmo de gestión de dinero<

Ya está. Haga click en "Finish" ("Finalizar").


Comprobar el Asesor Experto Creado en el Probador de Estrategias de MetaTrader 5
Si todos los componentes de la Biblioteca estándar están presentes, el código del Asesor Experto generado se
compilará con éxito. El mejor conjunto de parámetros del Asesor Experto se puede encontrar tras la
optimización en el Probador de Estrategias de MetaTrader 5.

Para la optimización del EA, seleccione el período del 01/01/10 al 01/01/11, y ejecútelo en dos fases.
La primera fase: "Selección de pesos de señal, umbral para la activación de condiciones de entrada/salida y
niveles de trading."

Figura 12. Parámetros de optimización del Asesor Experto

Aquí está el resultado de la mejor optimización.

Figura 13. Resultados de la optimización del Asesor Experto.

Ya tenemos buenos resultados (en términos de beneficio y reducción máxima). No debemos olvidar que
estamos haciendo "trading" con un lote fijo.
Pero tratemos de mejorar aún más los resultados. Para ello, tenemos otra señal (todavía no hemos usado su
configuración). Los valores que se encuentran optimizando los parámetros describen un patrón de mercado
reconocido por el Asesor Experto.
Pero imaginemos que el patrón de mercado resultante no siempre funciona igual de bien. Intentemos aplicar
el filtro temporal a los resultados de la optimización.
Para ello, optimicemos el Asesor Experto de acuerdo con el parámetro "Horas malas" de las Señales
"IntradayTimeFilter". El parámetro "Horas malas" es un esquema de 24 bits (el número de horas del día). Cada
parte del esquema coincide únicamente con una de las horas (el número de bits en el esquema y el número de
horas en un día coinciden). El valor de cualquier bit igual a 1 se pondrá por delante de cualquier resultado de
una votación si el número de la hora actual es igual al número de este bit (es decir, la hora se considera mala
para trading).
Para repasar todas las combinaciones posibles de horas "buenas" y "malas", optimizaremos los parámetros de 0
a 2^24-1 (en la forma natural 16 777 215) a un paso igual a 1.

Figura 14. Parámetros de optimización del Asesor Experto

Como resultado de la optimización, obtenemos 11 665 415. Para entender lo que esto significa, lo
expresaremos en su forma binaria:

 101100100000000000000111 - es decir, los números de horas "malas" son 0, 1, 2, 17, 20, 21 y 23.

Aquí están los parámetros del Asesor Experto tras todas las optimizaciones.

Figura 15. Propiedades del Asesor Experto

Encontrará adjunto el informe de una simulación con los mejores parámetros. El beneficio es más alto, y la
reducción más baja. Se puede concluir que, tras el filtro temporal, los resultados del sistema de trading en el
período del historial han mejorado.
Conclusión
Usar las clases de estrategias de trading facilita significativamente la creación de robots para simular ideas de
trading en el MetaEditor usando el MQL5 Wizard. Ahora, el código fuente entero del Asesor Experto se puede
construir basándose en la combinación de módulos listos para usar de la Biblioteca estándar o usando sus
módulos propios.

Вам также может понравиться