English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
MQL5 Wizard: Nueva Versión

MQL5 Wizard: Nueva Versión

MetaTrader 5Trading | 26 diciembre 2013, 08:55
2 096 0
MetaQuotes
MetaQuotes

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:

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.

Clases base para el MQL5 Wizard

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 2. Ejecutar el MQL5 Wizard

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 3. Seleccionar el tipo de programa

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 4. Propiedades generales de un Expert Advisor

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 5. Parámetros de señales de EA (comienzo)

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 6. Seleccionar señales

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 7. Configuración de los parámetros de señal

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 8. Parámetros de las señales de EA (final)

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 9. Seleccionar el algoritmo de rastreo de posición

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 10. Seleccionar el algoritmo de gestión de dinero

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 11. Parámetros de optimización del Expert Advisor

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

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

Figura 12. Resultados de la optimización del Expert Advisor.

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 13. Parámetros de optimización del Expert Advisor

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 14. Propiedades del Expert Advisor

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.

Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/275

Archivos adjuntos |
sample.mq5 (18.16 KB)
Cree sus propios paneles gráficos en MQL5 Cree sus propios paneles gráficos en MQL5
La funcionalidad del programa MQL5 viene determinada tanto por sus ricas características como por una interfaz de usuario muy desarrollada. A veces, la percepción visual es más importante que el funcionamiento rápido y estable. Esta es una guía paso a paso para que pueda crear por sí mismo paneles gráficos sobre la base de las clases de la librería estándar.
Uso de los recursos en MQL5 Uso de los recursos en MQL5
Los programas MQL5 no solo automatizan cálculos rutinarios, sino que también pueden crear un entorno gráfico completo. Las funciones para crear controles realmente interactivos son ahora virtualmente tan ricas como las de los lenguajes de programación. Si desea escribir un programa entero e independiente en MQL5, use los recursos disponibles en ellos. Los programas con recursos son más fáciles de mantener y distribuir.
Las bases de la programación orientada a objetos Las bases de la programación orientada a objetos
No necesita saber qué es poliformismo, encapsulación, etc. para usar la programación orientada a objetos (OOP)... puede simplemente utilizar estas funciones. Este artículo trata las bases de la OOP con ejemplos prácticos.
Operaciones de trading en MQL5 - Es fácil Operaciones de trading en MQL5 - Es fácil
Casi todos los operadores llegan al mercado para ganar dinero, pero algunos también disfrutan de ello. Sin embargo, no solo la operativa manual puede proporcionarle una experiencia apasionante. El desarrollo de sistemas de trading automatizados también puede ser fascinante. Crear un robot de trading puede ser tan interesante como leer una buena novela de misterio.