Pruebas y optimización de Asesores Expertos

El desarrollo de Asesores Expertos implica, no sólo y no tanto la implementación de una estrategia de trading en MQL5, sino en mayor medida probar su rendimiento financiero, encontrar los ajustes óptimos y depurar (buscar y corregir errores) en diversas situaciones. Todo esto se puede hacer en el probador integrado de MetaTrader 5.

El probador funciona para varias divisas y admite varios modos de generación de ticks: basados en los precios de apertura del marco temporal seleccionado, en los precios OHLC del marco temporal M1, en ticks generados artificialmente y en el historial de ticks reales. De este modo, puede elegir la relación óptima entre velocidad y precisión de la simulación de trading.

Los ajustes del probador le permiten establecer el intervalo de tiempo de simulación en el pasado, el tamaño del depósito y el apalancamiento; se utilizan para emular recotizaciones y características específicas de la cuenta (incluido el tamaño de las comisiones, los márgenes, los horarios de las sesiones y la limitación del número de lotes). Todos los detalles del trabajo con el probador desde el punto de vista del usuario se encuentran en la documentación del terminal.

Anteriormente comentamos brevemente el trabajo con el probador, en concreto, en la sección Simulación de indicadores. Recordemos que las funciones de control del probador y su optimización no están disponibles para los indicadores, pero sí para los Asesores Expertos. Sin embargo, personalmente, me gustaría ver una opción de autoajuste adaptativo de los indicadores: todo lo que se necesita es admitir el manejador OnTester en ellos, de lo que hablaremos en una sección aparte.

Como sabe, existen varios modos de optimización, como la enumeración directa de combinaciones de parámetros de entrada del Asesor Experto, el algoritmo genético acelerado, los cálculos matemáticos o las ejecuciones secuenciales a través de símbolos en Observación de Mercado. Como criterio de optimización, puede utilizar tanto métricas bien conocidas como la rentabilidad, el ratio de Sharpe, el factor de recuperación y la rentabilidad esperada, así como variables «personalizadas» integradas en el código fuente por el desarrollador del Asesor Experto. En el contexto de este libro, se supone que el lector ya está familiarizado con los principios de configuración, ejecución e interpretación de los resultados de optimización, porque en este capítulo comenzaremos a estudiar la API de control del probador. Los interesados pueden refrescar sus conocimientos con la ayuda de la sección correspondiente de la documentación.

Una función especialmente importante del comprobador es la optimización multihilo, que puede realizarse mediante programas agentes locales y distribuidos (en red), incluidos en la nube en MQL5 Cloud Network. Una sola ejecución de simulación (con parámetros de entrada específicos) lanzada manualmente por el usuario, o una de las muchas ejecuciones solicitadas durante la optimización (cuando implementamos la enumeración de los valores de los parámetros en rangos determinados) se realiza en un programa independiente: el agente. Técnicamente, se trata de un archivo metatester64.exe, y las copias de sus procesos pueden verse en el Administrador de tareas de Windows durante la simulación y optimización. Por ello, el probador es multihilo.

El terminal es un despachador que distribuye tareas a agentes locales y remotos. Si es necesario, lanza agentes locales. Al optimizar, por defecto, se lanzan varios agentes; su cantidad corresponde al número de núcleos del procesador. Después de ejecutar la siguiente tarea para probar un Asesor Experto con los parámetros especificados, el agente devuelve los resultados al terminal.

Cada agente crea su propio entorno de trading y de software. Todos los agentes están aislados entre sí y del terminal de cliente.

En concreto, el agente tiene sus propias variables globales y su propia sandbox de archivos, incluyendo la carpeta donde se escriben los registros detallados del agente, Tester/Agent-IPaddress-Port/Logs. Aquí Tester es el directorio de instalación del probador (durante una instalación estándar junto con MetaTrader 5, esta es la subcarpeta donde se instala el terminal). El nombre del directorio Agent-IPaddress-Port, en lugar de IPaddress y Port, contendrá la dirección de red y los valores de puerto específicos que se utilizan para comunicarse con el terminal. Para los agentes locales, esta es la dirección 127.0.0.1 y el rango de puertos, por defecto, a partir de 3000 (por ejemplo, en un ordenador con 4 núcleos, veremos agentes en los puertos 3000, 3001, 3002, 3003).

Al probar un Asesor Experto, todas las operaciones de archivo se realizan en la carpeta Tester/Agent-IPaddress-Port/MQL5/Files. Sin embargo, es posible implementar la interacción entre agentes locales y el terminal de cliente (así como entre diferentes copias del terminal en el mismo ordenador) a través de una carpeta compartida. Para ello, al abrir un archivo con la función FileOpen, debe especificarse la bandera FILE_COMMON. Otra forma de transferir datos de los agentes al terminal es la proporcionada por el mecanismo frames.

La sandbox local del agente se borra automáticamente antes de cada prueba por razones de seguridad (para evitar que diferentes Asesores Expertos lean los datos de los demás).

Se crea una carpeta con el historial de cotizaciones junto a la sandbox de archivos para cada agente, Tester/Agent-IPaddress-Port/bases/ServerName/Symbol/. En la siguiente sección le recordamos brevemente cómo se forma.

El terminal almacena los resultados de cada una de las ejecuciones de prueba y optimizaciones en una caché especial que se encuentra en el directorio de instalación, en la subcarpeta Tester/cache/. Los resultados de las pruebas se guardan en archivos con la extensión tst, y los resultados de la optimización se guardan en archivos opt. Ambos formatos son de código abierto para los desarrolladores de MetaQuotes, por lo que puede implementar su propio procesamiento de datos analíticos por lotes, o utilizar códigos fuente ya listos para usar de la base de código del sitio web mql5.com.

En este capítulo, en primer lugar, consideraremos los principios básicos del funcionamiento de los programas MQL en el probador y, a continuación, aprenderemos a interactuar con él en la práctica.