Función principal de scripts y servicios: OnStart

Los programas de utilidades (scripts y servicios) se ejecutan en el terminal llamando a su función de gestión de eventos únicos OnStart.

void OnStart()

La función no tiene parámetros y no devuelve ningún valor. Sólo sirve como punto de entrada al programa de aplicación desde el lado del terminal.

Los scripts están pensados, por regla general, para acciones puntuales realizadas en un gráfico (más adelante estudiaremos todas las posibilidades que ofrece la API de gráficos). Por ejemplo, se puede utilizar un script a fin de establecer una parrilla de órdenes o, a la inversa, para cerrar todas las posiciones abiertas rentables, para aplicar automáticamente marcas con objetos gráficos o para ocultar temporalmente todos los objetos.

En los scripts puede utilizar acciones constantes envueltas en un bucle infinito, en el que, como se ha mencionado anteriormente, debe comprobar siempre la señal de stop (_StopFlag) y liberar periódicamente el procesador (Sleep). Hay que recordar aquí que cuando apague y encienda el terminal, el script tendrá que ejecutarse de nuevo.

Por lo tanto, para esa actividad constante, si no está directamente relacionada con el horario, es mejor utilizar el servicio. La técnica estándar en la implementación del servicio es simplemente un bucle «infinito».

En las partes anteriores del libro, casi todos los ejemplos se implementaban como scripts. Un ejemplo de servicio es el programa GlobalsWithCondition.mq5 de la sección Sincronización de programas mediante variables globales. Veremos otro ejemplo en la siguiente sección sobre la detención de Asesores Expertos y scripts utilizando la función ExpertRemove.