- Obtener una lista general de las propiedades del terminal y del programa
- Número de versión del terminal
- Tipo de programa y licencia
- Modos de funcionamiento del terminal y del programa
- Permisos
- Comprobación de las conexiones de red
- Recursos informáticos: memoria, disco y CPU
- Especificaciones de la pantalla
- Propiedades del terminal y de la cadena de programa
- Propiedades personalizadas: límite de barras e idioma de la interfaz
- Vincular un programa a propiedades en tiempo de ejecución
- Comprobar el estado del teclado
- Comprobar el estado del programa MQL y motivo de finalización
- Cierre programático del terminal y establecimiento de un código de retorno
- Tratamiento de errores en tiempo de ejecución
- Errores definidos por el usuario
- Gestión de depuración
- Variables predefinidas
- Constantes predefinidas del lenguaje MQL5
Recursos informáticos: memoria, disco y CPU
Como todos los programas, las aplicaciones MQL consumen recursos del ordenador, incluida memoria, espacio en disco y CPU. Teniendo en cuenta que el propio terminal consume muchos recursos (debido, en especial, a la posible descarga de cotizaciones y ticks para múltiples instrumentos financieros con un largo historial), a veces es necesario analizar y controlar la situación en cuanto a la proximidad de los límites disponibles.
La API de MQL5 proporciona varias propiedades que le permiten calcular los recursos máximos alcanzables y gastados. Las propiedades se resumen en las enumeraciones ENUM_MQL_INFO_INTEGER y ENUM_TERMINAL_INFO_INTEGER.
Identificador |
Descripción |
---|---|
MQL_MEMORY_LIMIT |
Cantidad máxima posible de memoria dinámica para un programa MQL en Kb |
MQL_MEMORY_USED |
Memoria utilizada por un programa MQL en Mb |
MQL_HANDLES_USED |
Número de objetos de clase |
TERMINAL_MEMORY_PHYSICAL |
RAM física del sistema en Mb |
TERMINAL_MEMORY_TOTAL |
Memoria (física+archivo de intercambio, es decir, virtual) disponible para el proceso del terminal (agente) en Mb |
TERMINAL_MEMORY_AVAILABLE |
Memoria libre del proceso del terminal (agente) en Mb, parte de TOTAL |
TERMINAL_MEMORY_USED |
Memoria utilizada por el terminal (agente) en Mb, parte de TOTAL |
TERMINAL_DISK_SPACE |
Espacio libre en disco, teniendo en cuenta posibles cuotas para la carpeta MQL5/Files del terminal (agente), en Mb |
TERMINAL_CPU_CORES |
Número de núcleos de procesador del sistema |
TERMINAL_OPENCL_SUPPORT |
Versión OpenCL admitida como 0x00010002 = 1.2; «0» significa que OpenCL no está admitido |
La cantidad máxima de memoria disponible para un programa MQL se describe mediante la propiedad MQL_MEMORY_LIMIT. Esta es la única propiedad de la lista que utiliza kilobytes (Kb). Todas las demás se devuelven en megabytes (Mb). Por regla general, MQL_MEMORY_LIMIT es igual a TERMINAL_MEMORY_TOTAL, es decir, toda la memoria disponible en el ordenador puede asignarse a un programa MQL por defecto. No obstante, el terminal, en particular su implementación en la nube para MetaTrader VPS, y los agentes de prueba en la nube pueden limitar la memoria para un solo programa MQL. Así, MQL_MEMORY_LIMIT será significativamente menor que TERMINAL_MEMORY_TOTAL.
Dado que Windows normalmente crea un archivo de intercambio que es igual en tamaño a la memoria física (RAM), la propiedad TERMINAL_MEMORY_TOTAL puede ser de hasta 2 veces el tamaño de TERMINAL_MEMORY_PHYSICAL.
Toda la memoria virtual disponible TERMINAL_MEMORY_TOTAL se divide entre la memoria utilizada (TERMINAL_MEMORY_USED) y la aún libre (TERMINAL_MEMORY_AVAILABLE).
El libro viene con el script EnvProvision.mq5, que registra todas las propiedades especificadas.
void OnStart()
|
Tras la salida inicial de las propiedades, asignamos 10 Mb para el array y volvemos a comprobar la memoria. A continuación se muestra un ejemplo de resultado (usted tendrá sus propios valores).
MQLInfoInteger(MQL_MEMORY_LIMIT)=8388608 / ok
|
Observe que la memoria virtual total (8190) es el doble de la memoria física (4095). La cantidad de memoria disponible para el script es de 8388608 Kb, que es casi igual a toda la memoria de 8190 Mb. La memoria del sistema libre (7842) y utilizada (348) también suman 8190.
Si antes de asignar memoria para un array, el programa MQL ocupaba 1 Mb; después de asignarla ocupa ya 11 Mb. Mientras tanto, la cantidad de memoria ocupada por el terminal sólo aumentó en 5 Mb (de 348 a 353), ya que algunos recursos se reservaron de antemano.