- Diseño de programas MQL de varios tipos
- Hilos
- Visión general de las funciones de gestión de eventos
- Funciones de inicio y parada de programas de varios tipos
- Eventos de referencia de indicadores y Asesores Expertos: OnInit y OnDeinit
- Función principal de scripts y servicios: OnStart
- Eliminación programática de Asesores Expertos y scripts: ExpertRemove
Principios generales de ejecución de programas MQL
Todos los programas MQL pueden dividirse a grandes rasgos en varios grupos según sus capacidades y características.
La mayoría de los programas, como Asesores Expertos, indicadores y scripts, funcionan en el contexto de un gráfico. En otras palabras: comienzan a ejecutarse sólo después de que se adjuntan a uno de los gráficos abiertos utilizando el comando del menú contextual Attach to Chart en el árbol Navegador o arrastrando y soltando desde Navegador al gráfico.
En cambio, los servicios no pueden colocarse en el gráfico, ya que están diseñados para realizar acciones largas y cíclicas en segundo plano. Por ejemplo, en un servicio, puede crear un símbolo personalizado y, a continuación, recibir sus datos y seguir actualizándolos en un bucle sin fin mediante funciones de red. Otra aplicación lógica de un servicio es la supervisión de la cuenta de trading y la conexión de red, como parte de una solución que notifica al usuario los problemas de comunicación.
Es importante tener en cuenta que los indicadores y los Asesores Expertos se guardan en el gráfico entre las sesiones de trabajo del terminal. En otras palabras: si, por ejemplo, un usuario ejecuta un indicador en el gráfico y luego, sin borrarlo explícitamente, cierra MetaTrader 5, la próxima vez que se inicie el terminal, el indicador se restaurará junto con el gráfico, incluyendo todos sus ajustes.
Por cierto, vincular indicadores y Asesores Expertos al gráfico es la base de las plantillas (véase la Documentación). El usuario puede crear un conjunto de programas para utilizarlos en un gráfico, configurarlos y guardar el conjunto en un archivo especial con la extensión tpl. Para ello se utiliza el comando del menú contextual Plantillas -> Guardar. Después, puede aplicar la plantilla a cualquier gráfico nuevo (comando Plantillas -> Subir) y ejecutar todos los programas vinculados. Por defecto, las plantillas se almacenan en el directorio MQL5/Profiles/Templates/.
Otra consecuencia de adjuntar a un gráfico es que el cierre de un gráfico da lugar a la descarga de todos los programas MQL que se colocaron en él. Sin embargo, MetaTrader 5 guarda todos los gráficos cerrados de una manera específica (al menos durante un tiempo) y, por lo tanto, si el gráfico se cerró por accidente, se puede restaurar junto con todos los programas (y objetos gráficos) mediante el comando Archivo -> Abrir remoto.
Si por alguna razón el terminal falla al cargar los archivos de gráficos, se perderá todo el estado de los programas MQL (configuración y ubicación). Básicamente, lo mismo se aplica a los objetos gráficos : los programas pueden añadirlos para sus propias necesidades y esperar que estos objetos se encuentren en el gráfico. Haga copias de seguridad de los gráficos. Cada gráfico es un archivo con la extensión chr. Estos archivos se almacenan por defecto en el directorio MQL5/Profiles/Charts/Default/. Este es el perfil estándar que se crea al instalar la plataforma. Puede crear otros perfiles con el comando de menú Archivo -> Perfiles y luego pasar de uno a otro (consulte la Documentación).
Si es necesario, puede detener un Asesor Experto y eliminarlo del gráfico utilizando el comando del menú contextual Lista de expertos (al que se llama pulsando el botón derecho del ratón en la ventana del gráfico). Esto abre el cuadro de diálogo Expertos con una lista de todos los Asesores Expertos que se están ejecutando en el terminal. En esta lista, seleccione un Asesor Experto que ya no necesite y pulse Eliminar.
Los indicadores también pueden eliminarse explícitamente mediante un comando similar del menú contextual Lista de indicadores que abre un cuadro de diálogo con una lista de indicadores que se ejecutan en el gráfico actual, en el que puede seleccionar un indicador específico y hacer clic en el botón Eliminar. Además, la mayoría de los indicadores muestran en el gráfico diversas construcciones gráficas, como líneas e histogramas, que también pueden borrarse mediante los comandos correspondientes del menú contextual.
A diferencia de los indicadores y los Asesores Expertos, los scripts no están permanentemente vinculados a un gráfico. En el modo estándar, el script se elimina automáticamente del gráfico una vez finalizada la tarea que se le ha asignado, si se trata de una acción puntual. Si un script tiene un bucle para acciones periódicas y repetitivas, continuará su trabajo, por supuesto, hasta que el bucle se interrumpa de un modo u otro, pero no más allá del final de la sesión. Cerrar el terminal provoca que el script se separe del gráfico. Después de reiniciar MetaTrader 5, los scripts no se restauran en los gráficos.
Tenga en cuenta que, si cambia el gráfico a otro símbolo o marco temporal, el script que se esté ejecutando en él se descargará. Sin embargo, los indicadores y Asesores Expertos seguirán funcionando, aunque se reiniciarán. Las reglas de inicialización para ellos son diferentes. Estos detalles se abordarán en la sección Funciones de inicio y parada de programas de varios tipos.
En el gráfico pueden colocarse sólo un Asesor Experto, sólo un script y cualquier número de indicadores. El Asesor Experto, el script y todos los indicadores trabajarán en paralelo (simultáneamente).
En cuanto a los servicios, sus instancias creadas y en ejecución se restauran automáticamente tras cargar el terminal. La instancia de servicio puede detenerse o eliminarse mediante el menú contextual de la sección Services de la ventana Navegador.
En la siguiente tabla se resumen de forma sintética las propiedades descritas anteriormente:
Tipo de programa |
Enlace al gráfico |
Cantidad |
Recuperación de la |
---|---|---|---|
Indicador |
Requerido |
Múltiples |
Con gráfico o plantilla |
Asesor Experto |
Requerido |
Máximo 1 |
Con gráfico o plantilla |
Script |
Requerido |
Máximo 1 |
No se admite |
Servicio |
No se admite |
0 |
Con terminal |
Todos los programas MQL se ejecutan en el terminal del cliente y, por tanto, sólo funcionan mientras el terminal está abierto. Para un control constante del programa sobre la cuenta, utilice un servidor privado virtual (VPS).