Para facilitar la depuración y obtener la información sobre el funcionamiento de un programa mql5 están previstas las constantes-macros especiales predefinidas, cuyos valores se establecen en el momento de compilación. La manera más fácil de usarlas consiste en la devolución de sus valores mediante la función Print(), como se muestra en el ejemplo de abajo.
Constante
Descripción
__DATE__
Fecha de compilación del archivo sin hora (horas, minutos y segundos son iguales a 0)
__DATETIME__
Fecha y hora de compilación del archivo
__LINE__
Número de cadena en el código fuente, en la que se ubica esta macro
__FILE__
Nombre del archivo corriente compilado
__PATH__
Ruta absoluta hacia el archivo actual a compilar
__FUNCTION__
Nombre de la función, en cuyo cuerpo está ubicado la macro
__FUNCSIG__
Signatura de la función en cuyo cuerpo se encuentra la macro. El mostrar en el log la descripción completa de la función con tipos de parámetros puede ser útil durante la identificación de las funciones sobrecargadas
__MQLBUILD__, __MQL5BUILD__
Número build del compilador
__COUNTER__
Para cada declaración __COUNTER__ encontrada, el compilador cambia en su lugar el valor del contador de 0 a N-1, donde N es el número de usos en el código. Al recompilar el código fuente sin cambios, el orden __COUNTER__ está garantizado.
El valor del contador __COUNTER__ se calcula de la forma siguiente:
el valor inicial del contador es 0,después de cada uso del contador, su valor aumenta en 1,primero, el compilador expande en su sitio todas las macros y plantillas en el código fuente,para cada especialización de la función de plantilla, se genera un código aparte,para cada especialización de la clase/estructura de plantilla, se genera un código aparte,a continuación, el compilador recorre el código fuente obtenido en el orden establecido y sustituye cada uso de __COUNTER__ encontrado por el valor actual del contador.
En el ejemplo de abajo, podemos ver con claridad cómo el compilador procesa el código fuente y va sustituyendo __COUNTER__ (a medida que encuentra dicho elemento) por valores en aumento secuencial.
__RANDOM__
Para cada declaración __RANDOM__, el compilador coloca en el código un número ulong aleatorio.
Ejemplo: