Aumente la velocidad de los cálculos con la red en la nube de MQL5

MetaQuotes | 11 diciembre, 2013

El probador multihilo en Meta Trader 5

Podemos enumerar las incontables ventajas de la nueva plataforma de trading Meta Trader 5 y decir que es mejor que otros programas para el análisis técnico y el trading en los mercados financieros. Hay un argumento más indiscutible a favor de la plataforma. Y este último argumento es el probador de estrategias en el terminal de cliente de Meta Trader 5. En este artículo describimos sus grandes cualidades y explicamos por qué los desarrolladores de MetaQuotes Software Corp. están tan orgullosos de él.

La quinta generación del terminal de cliente tiene no solo un nuevo, potente y rápido lenguaje MQL5 para programar estrategias de trading, sino que también dispone de un probador de estrategia completamente nuevo diseñado desde cero. El probador se usa no solo para recibir los resultados de las estrategias de trading probadas en datos históricos, sino que también permite optimizarlas, es decir, encontrar los parámetros óptimos.

La optimización de estrategias es una ejecución múltiple de una estrategia de trading en el mismo período histórico con diferentes parámetros. Es una tarea estándar de cálculos masivos que puede desarrollarse en paralelo, como puede que ya haya intuido. El probador en Meta Trader 5 ¡es multihilo! Vamos a ver ahora qué significa esto con un ejemplo de optimización de un asesor experto del paquete de la distribución estándar.


Condiciones de la prueba

Para esta finalidad usamos un ordenador Intel Core i7 (8 procesadores, 3.07 GHz) y 12 GB de memoria con el sistema operativo Windows 7 64 bit y Meta Trader 5 versión 1075.

Se ha probado el asesor experto Moving Average.mq5 del paquete estándar con los siguientes ajustes:

Parámetros optimizados:

Parámetros de la optimización


Optimización de agentes locales

En primer lugar iniciamos la optimización en los agentes locales. Tenemos 8 agentes de simulación, un número óptimo de cantidad de núcleos. Desactivamos el uso de los agentes a distancia de la red local y de los agentes de MQL5 Cloud Network:

Habilitar/deshabilitar grupos de agentes

Tras finalizar la optimización, entramos en el Registro y vemos que 14040 pasadas en 8 agentes locales han requerido de una hora, tres minutos y 46 segundos.

2015.02.05 16:44:38	Statistics	locals 14040 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2015.02.05 16:44:38	Statistics	optimization passed in 1 hours 03 minutes 46 seconds
2015.02.05 16:44:38	Tester	optimization finished, total passes 14040


Optimización con el uso de un grupo local de agentes

¿Cómo ejecutar más tareas paralelamente? Por supuesto que se puede adquirir un procesador con una gran cantidad de núcleos. Pero esto no le permitirá aumentar varias veces la cantidad de tareas ejecutables a la vez. El simulador de estrategias resuelve este problema. Usted puede crear su propio grupo de agentes de cálculo en la red local.


¿Cómo crear un grupo de agentes?

En cada computadora de la red local hay que realizar la instalación de los agentes. Si ya tiene instalado en la computadora el terminal de cliente MetaTrader 5, abra el administrador de agentes de simulación con el comando correspondiente en el menú "Servicio".

Administrador de agentes de simulación

En otra manera, puede descargar la aplicación por separado para la gestión de agentes MetaTrader 5 Strategy Tester Agent y realizar el sencillo proceso de instalación.

MetaTrader 5 Strategy Tester Agent

En el administrador, abra la carpeta Agentes:

  1. Elija la cantidad de agentes que necesite instalar. Los agentes se instalan según la cantidad de núcleos lógicos del procesador. 
  2. Indique la contraseña, según la cual será posible conectarse a estos agentes para su uso.
  3. Elija el diapasón de puertos para la conexión.
  4. Pulse añadir.

Y eso es todo. Los agentes están listos para ser usados desde otras computadoras en la red local.


¿Cómo conectar los agentes?

La conexión tiene lugar, literalmente, con solo unos clicks. Abra el simulador de estrategias en el terminal y entre en las pestaña "Agentes". Elija el puntos "Local Network Farm" y pulse "Añadir" en el menú de contexto.

Adición de agentes a distancia

El método más sencillo y rápido de adición es el escaneo automático de la red local según el diapasón de las direcciones IP y los puertos. Indíquelos, así como la contraseña para la conexión a los agentes que fue establecida durante la instalación.

Búsqueda de agentes en la red local

Pulse "Listo" y todos lo agentes hallados se encontrarán accesibles para la simulación.


Medición de la velocidad

A los 8 agentes locales les hemos añadido 20 a distancia. En total, tenemos a nuestra disposición 28 agentes, 3.5 veces más de los que teníamos en un principio. Realizamos la optimización de nuestro experto y vemos cuánto más rápido se realizará.

2015.02.05 15:14:44    Statistics    locals 3412 tasks (24%), remote 10628 tasks (75%), cloud 0 tasks (0%)
2015.02.05 15:14:44    Statistics    optimization passed in 15 minutes 47 seconds
2015.02.05 15:14:44    Tester    optimization finished, total passes 14040

Tres cuartas partes de las tareas han sido realizadas por agentes a distancia. El tiempo de optimización se ha abreviado hasta los 15 minutos 47 segundos, casi en 4 veces.

Se trata de un buen crecimiento de la velocidad, pero esta solución no está al alcance de todos. ¡No se desespere, existe la posibilidad de acelerar todo aún más, intentemos incorporar agentes de la red MQL5 Cloud Network!


Optimización usando la red en la nube de MQL5

Esta vez no usamos los agentes locales y en su lugar usamos los agentes de la red en la nube de MQL5. Haga clic en el botón "Inicio" y observe el proceso de optimización. El vídeo muestra el proceso en tiempo real.

 

¡MQL5 Cloud Network ha permitido hacer el proceso de optimización 150 veces más rápid

Durante la optimización, cada nodo de la red en la nube de MQL5 distribuye las tareas (ejecuciones únicas) entre los agentes disponibles. La optimización solo ha requerido 26 segundos, proporcionando una aceleración 147 veces superior. Es posible que los operadores necesiten ejecutar cientos de miles de pasadas de optimización en un tiempo razonable. Con el probador de Meta Trader 5 solo necesita una hora para los cálculos en la red en la nube de MQL5, mientras que sin la red necesitaría algunos días. Ahora, con un solo clic puede utilizar miles de procesadores para resolver una tarea. ¡Y está disponible para todo el mundo! Pero, ¿cómo funciona?


La red en la nube de MQL5 incluye miles de ordenadores

La red en la nube de MQL5 está compuesta por nodos (servidores dedicados) a los que se conectan los agentes de prueba para realizar las tareas. Estos nodos son gestores (poolers) ya que combinan agentes de todo el mundo en grandes grupos según su ubicación geográfica. En el modo inactivo, cada agente envía un mensaje notificando que está preparado para realizar una tarea. El intervalo entre estos mensajes depende de la carga actual de la red en la nube de MQL5.

Cada nodo de la red es al mismo tiempo tratado por Meta Trader 5 como un punto de acceso a la red en la nube de MQL5. Un terminal se conecta a ellos usando la información de la cuenta de MQL5. La lista de servidores de la red en la nube de MQL5 y el número de agentes de la nube disponibles a través de ellos puede consultarse en el terminal de la ventana del probador, pestaña "Agentes".

Un agente está libre, esto es, en modo inactivo, cuando no está ocupado realizando sus propias tareas localmente en un ordenador o red local. Mientras que el agente está ocupado, no hace ningún intento de realizar tareas en la red en la nube de MQL5. En varios minutos tras completar los cálculos localmente, el agente contacta con el nodo de la red en la nube de MQL5 más cercano y ofrece sus servicios. De esta forma, sus agentes de prueba están trabajando en la red solo si no los necesita. Y, por supuesto, los agentes trabajan en la red de acuerdo con la programación establecida.

Gracias a la facilidad de instalación y los ajustes mínimos necesarios del Gestor de Agentes de Meta Trader 5, miles de agentes de prueba se encuentran disponibles en la red en cualquier momento. Las estadísticas generales de los agentes de la red en la nube de MQL5 y las tareas completadas están disponibles en la página principal del proyecto en https://cloud.mql5.com.


Ejecutar cálculos distribuidos a través de los agentes de la red en la nube de MQL5

Al igual que ocurre con la optimización convencional, necesitamos establecer todas las opciones de prueba y parámetros de entrada de los asesores expertos. Antes de esto, no olvide indicar sus datos de acceso a la comunidad MQL5 en la configuración del terminal y permitir el uso de la red en la nube de MQL5. Los cuatro pasos requeridos se muestran en la figura a continuación.

Ejecutando la optimización usando la red en la nube de MQL5

Haga clic en el botón "Inicio" y comenzará el proceso de optimización. El terminal prepara una tarea para los agentes de prueba que incluye:

El terminal de Meta Trader 5 se comunica con los nodos de la red en la nube de MQL5 y da a cada nodo un paquete distinto de tareas para realizar pasadas concretas. Cada nodo es, en realidad, un servidor proxy, ya que recibe una tarea y un paquete de pases y a continuación empieza a distribuir estas tareas a los agentes a los que está conectado. En este caso los archivos de los asesores expertos, indicadores, librerías y archivos de datos no se almacenan en los discos duros de los servidores de la red en la nube de MQL5.

Los archivos EX5 tampoco se guardan en los discos duros de los agentes en la nube por razones de confidencialidad. Los archivos de datos se guardan en un disco pero se borran después de la optimización.

Este es el procedimiento de comunicación entre su terminal de cliente y la red en la nube de MQL5. En realidad, envía paquetes de tareas a la red y espera los resultados.


Sincronización en la nube y distribución del historial a los agentes

Cada nodo de la red en la nube de MQL5 mantiene el historial de los símbolos requeridos y los envía a los agentes conectados según sea necesario. No se dispone de un historial de un símbolo XYZ de un broker ABC. El nodo descarga automáticamente el historial de datos necesarios para el terminal del usuario. Por tanto, su terminal debe estar preparado para proporcionar dicho historial.

Le recomendamos ejecutar una única prueba preliminar de una estrategia en su ordenador antes de enviarla a la red en la nube de MQL5. Este enfoque proporciona automáticamente la descarga y sincronización de todo el historial requerido de un servidor de trading.

Por lo general, en un ordenador moderno se instalan de 4 a 8 agentes, pero los datos históricos se guardan en una carpeta en el directorio de instalación del agente del probador de estrategia de MQL5. Todos los agentes de la nube instalados por un gestor del agente del probador de estrategia de MQL5 reciben el historial de esta carpeta. Si se instalan 8 agentes y todos están disponibles para la red en la nube de MQL5 solo se descarga una vez el historial necesario. Esto nos permite ahorrar ancho de banda y espacio en disco. También es conveniente realizar una sincronización entre los agentes de la nube y los nodos de la red de cálculo distribuido.

De esta forma, todos los agentes que realizan una optimización de una estrategia de trading en un intervalo dado y para un símbolo determinado se suministran automáticamente con el mismo historial y entorno de mercado sincronizado.


Calentando

¿Cómo se ejecuta una optimización en un ordenador local? Si tiene 8 procesadores, tiene normalmente 8 agentes locales disponibles. Cuando hace clic en "Inicio", se distribuyen las tareas a los agentes locales, se descargan las requeridas (si son necesarias) y el proceso comienza. En este caso la optimización comienza casi instantáneamente. Pero si distribuye tareas en la red en la nube de MQL5, el procedimiento cambia un poco.

Los agentes de la nube no están permanentemente conectados a los gestores de la red ya que no está justificado y resulta muy caro por muchas razones. En su lugar, los agentes consultan periódicamente a los servidores de la red en la nube de MQL5 por si hay nuevas tareas para ellos. Esto ocurre con la suficiente frecuencia para asegurar la movilización rápida del número requerido de agentes y al mismo tiempo no sobrecargar el tráfico de la red con estos mensajes. Por tanto, cuando ejecutamos una optimización, podemos ver cómo aumenta el número de agentes que se conectan para realizar nuestras tareas. Este es un proceso en tiempo real sobre cómo los agentes de la nube acceden a la red en la nube de MQL5 y reciben tareas para pases concretos.

Si no hay tareas, los agentes contactan con los gestores en pocas ocasiones. Pero si se realiza una orden para calcular miles (decenas de miles) de tareas, la situación cambia. Podemos decir que la actividad de la red en la nube de MQL5 se incrementa y tras completar la tarea el número de solicitudes de agentes para nuevas tareas se reduce. Y si después de completar una tarea, por ejemplo, desde Europa, llega una orden para otras tareas desde Asia, la red estará preparada para un inicio rápido. Puede llamar a este comportamiento de la red "calentamiento".

Ejecutando cálculos en la red en la nube de MQL5

De este modo, la red en la nube de MQL5 está preparada de nuevo para aceptar nuevas tareas y realizarlas en el menor tiempo posible.


Utilice la red en la nube de MQL5

La frase "el tiempo es dinero" se hace más evidente con el paso de los años, y no podemos permitirnos esperar decenas de horas o incluso días para realizar cálculos importantes. En la fecha en la que este artículo se escribe, la red en la nube de MQL5 proporciona un incremento de los cálculos en cientos de veces. Con su incremento posterior, la ganancia en tiempo puede aumentar en miles de veces o más. Además, la red de ordenadores distribuidos no solo le permiten resolver tareas de optimización de estrategias.

También puede desarrollar un programa en MQL5 que implemente cálculos matemáticos masivos y que requiera muchos recursos de la CPU. El lenguaje MQL5 en el que los programas para el terminal de Meta Trader 5 son escritos es muy similar a C++ y le permite traducir fácilmente algoritmos escritos en otros lenguajes de alto nivel.

Una característica importante del probador del terminal de Meta Trader 5 es que las tareas con grandes cálculos matemáticos pensadas para encontrar soluciones con grandes conjuntos de variables de entrada, pueden equipararse con facilidad en los agentes de prueba. Y no necesita escribir ningún código especial para ello, ¡conéctese a la red en la nube de MQL5 de cómputo distribuido!