Demostración de un Indicador Pseudo con Cálculos Multi-Hilo en MetaTrader 5

Mike 2020.01.17 05:13 13 0 0
Archivos adjuntos

¡Hola, traders! Hoy quiero compartir con ustedes un interesante indicador que se utiliza para demostrar la técnica de cálculos multi-hilo. Este indicador es un pseudo-indicador que no utiliza buffers y su único propósito es enseñarnos cómo manejar cálculos extensos en hilos separados, gracias a un Asesor Experto (AE) que trabaja con objetos de gráfico.

El archivo cabecera MultiThreadedObjectWorker.mqh que viene incluido, se encargará de crear automáticamente los objetos de gráfico y aplicar la plantilla con el Asesor Experto especificado en cada objeto. Una vez que se completan los cálculos, el objeto se elimina automáticamente del gráfico.

Este ejemplo está dirigido a usuarios con conocimientos de programación.

La idea de este indicador proviene de un artículo sobre Solicitudes Web Asíncronas Multi-Hilo. En ese artículo podrás encontrar todos los detalles técnicos sobre cómo se envían los mensajes (eventos) y cómo se utilizan los recursos para pasar datos entre gráficos.

Este indicador implementa una versión más "compacta" de la técnica al utilizar objetos de gráfico en lugar de ventanas completas, lo que lo hace más eficiente. Puedes encontrar más detalles en el foro.

Asegúrate de compilar primero el Asesor Experto MultiThreadedObjectWorker antes de compilar y ejecutar el indicador MultiThreadedIndicator.

Parámetros de Entrada

  • sinput int _Cores = 1; - número de hilos a utilizar (no uses más de los núcleos físicos disponibles).
  • sinput int _Tasks = 1; - número de pseudo-tareas a ejecutar en paralelo (usa un número mayor que el de núcleos para ver el rendimiento en paralelo).
  • input string MultiThreadedScriptPath = "Experts\MultiThreadedObjectWorker.ex5"; - debe indicar la ruta del Asesor Experto trabajador.

Cada pseudo-tarea calcula un conjunto de funciones sqrt (solo para fines de demostración). Esto se puede modificar en tus proyectos MQL para cualquier otro algoritmo que consuma tiempo.

Para iniciar los cálculos en paralelo después de añadir el indicador a un gráfico, simplemente haz clic en el gráfico. Todas las fases importantes del proceso (tanto en el programa cliente como en el MQL5 del trabajador) se registran.

El programa MQL cliente que emite solicitudes de cálculos en paralelo puede ser no solo indicadores, sino también Asesores Expertos. Scripts y servicios no son compatibles con la plataforma.

Utilizando el archivo cabecera MultiThreadedObjectWorker.mqh, deberías implementar tu propia gestión de datos entre el cliente MQL5 y el Asesor Experto trabajador.

Aquí tienes 2 ejemplos de los registros.

Ejecución de 4 tareas en 2 núcleos (2 hilos en paralelo)

Ejecución de 4 tareas en 2 núcleos (2 hilos en paralelo)

Al ejecutar 4 tareas en 2 núcleos, tenemos 2 hilos paralelos, lo que proporciona el doble de rapidez en la ejecución en comparación con 1 núcleo (compara 3354ms arriba y 6240ms abajo).

Ejecución de 4 tareas en 1 núcleo (hilo único - programa MQL estándar)

Ejecución de 4 tareas en 1 núcleo (hilo único - programa MQL estándar)

Recuerda: ¡más núcleos significa más velocidad!

Lista
Comentarios 0