- 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
Tipo de programa y licencia
El mismo código fuente puede incluirse de algún modo en programas MQL de distintos tipos. Además de la opción de incluir los códigos fuente (directiva de preprocesador #include) en un producto común en la fase de compilación, también es posible ensamblar las bibliotecas, es decir, módulos binarios del programa conectados al programa principal en la fase de ejecución.
No obstante, algunas funciones sólo pueden utilizarse en determinados tipos de programas. Por ejemplo, la función OrderCalcMargin no puede utilizarse en indicadores. Aunque esta limitación no parece estar fundamentalmente justificada, el desarrollador de un algoritmo universal para calcular fondos de garantía, que se puede incorporar no sólo a los Asesores Expertos sino también a los indicadores, debería tener en cuenta este matiz y proporcionar un método de cálculo alternativo para los indicadores.
En la sección correspondiente de cada capítulo se ofrece una lista completa de las restricciones de los tipos de programas. En todos estos casos es importante conocer el tipo de programa «padre».
Para determinar el tipo de programa, existe la propiedad MQL_PROGRAM_TYPE en ENUM_MQL_INFO_INTEGER. Los posibles valores de las propiedades se describen en la enumeración ENUM_PROGRAM_TYPE.
Identificador |
Valor |
Descripción |
---|---|---|
PROGRAM_SCRIPT |
1 |
Script |
PROGRAM_EXPERT |
2 |
Asesor Experto |
PROGRAM_INDICATOR |
4 |
Indicador |
PROGRAM_SERVICE |
5 |
Servicio |
En el fragmento de registro de la sección anterior vimos que la propiedad PROGRAM_SCRIPT está establecida en 1 porque nuestra prueba es un script. Para obtener una descripción en forma de cadena puede utilizar la función EnumToString.
ENUM_PROGRAM_TYPE type = (ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE);
|
Otra propiedad de un programa MQL que es conveniente analizar para habilitar/deshabilitar ciertas características es el tipo de licencia. Como sabe, los programas MQL pueden distribuirse libremente o dentro del Mercado MQL5. Además, el programa en la tienda se puede comprar o descargar como versión demo. Estos factores son fáciles de comprobar y, si se desea, se pueden adaptar los algoritmos para ellos. Para estos fines existe la propiedad MQL_LICENSE_TYPE en ENUM_MQL_INFO_INTEGER, que utiliza la enumeración ENUM_LICENSE_TYPE como tipo.
Identificador |
Valor |
Descripción |
---|---|---|
LICENSE_FREE |
0 |
Versión gratuita ilimitada |
LICENSE_DEMO |
1 |
Versión demo de un producto de pago del Mercado que sólo funciona en el probador de estrategias |
LICENSE_FULL |
2 |
Versión con licencia adquirida; permite al menos 5 activaciones (pueden aumentarlas el vendedor) |
LICENSE_TIME |
3 |
Versión de tiempo limitado (aún no implantada) |
Es importante señalar aquí que la licencia se refiere al módulo binario ex5 desde el que se realiza la solicitud mediante MQLInfoInteger(MQL_LICENSE_TYPE). Dentro de una biblioteca, esta función devolverá la licencia propia de la biblioteca, no el programa principal al que está enlazada la biblioteca.
Como ejemplo para probar las dos funciones de esta sección se incluye con el libro un sencillo servicio EnvType.mq5. No contiene ciclo de trabajo y, por lo tanto, terminará inmediatamente después de ejecutar las dos instrucciones en OnStart.
#property service
|
Para simplificar su lanzamiento, es decir, para eliminar la necesidad de crear una instancia del servicio y ejecutarla a través del menú contextual del Navegador en el terminal, se propone utilizar el depurador: basta con abrir el código fuente en MetaEditor y ejecutar el comando Depurar -> Empezar con datos reales (F5, o botón en la barra de herramientas).
Deberíamos obtener las siguientes entradas de registro:
EnvType (debug) PROGRAM_SERVICE
|
Aquí se puede ver claramente que el tipo de programa es un servicio, y en realidad no hay licencia (uso libre).