Fecha y hora
MQL5 proporciona un tipo especial para almacenar datos de tiempo datetime. Como se deduce de su nombre, los valores de datetime incluyen tanto la fecha como la hora. No obstante, en caso necesario, pueden contener sólo la fecha o sólo la hora del día.
Los valores de este tipo se pueden utilizar en programas para supervisar eventos, como horas de trading, publicaciones de noticias o tiempos de espera para desactivar temporalmente la operación de trading del EA tras malas transacciones.
El tamaño de datetime en memoria es de 8 bytes. La representación interna de los datos es idéntica por completo a la del tipo ulong, ya que en su interior se almacena la cantidad de segundos que han transcurrido desde el 1 de enero de 1970. La fecha máxima admitida es 31 de diciembre de 3000.
Las constantes datetime se registran como una cadena literal encerrada entre comillas simples, precedida del carácter 'D'. Dentro de la cadena se asignan 6 campos, y los números de todos los elementos de fecha y hora tienen los siguientes formatos:
D'YYYY.MM.DD HH:mm:ss'
|
Aquí, YYYY indica el año; MM, el mes; DD, el día; HH, la hora; mm, los minutos, y ss, los segundos. Puede omitir la fecha o la hora. También es posible no especificar segundos o minutos con segundos.
Para el valor máximo permitido para la fecha se proporciona en MQL5 una constante especial, DATETIME_MAX, igual al valor entero 0x793406fff, que se corresponde con D"3000.12.31 23:59:59".
En el archivo MQL5/Scripts/MQL5Book/p2/TypeDateTime.mq5 se muestran ejemplos de registro de los valores del tipo datetime .
void OnStart()
|
Las cuatro primeras variables llaman la atención del compilador sobre la fecha incorrecta. En el caso de blank, el literal está completamente vacío. En la variable noday no hay día. En ambos casos, el compilador sustituye la fecha de compilación en la constante. Las variables feb30 y mon22 contienen números incorrectos de día y mes. El compilador los corrige automáticamente, transfiriendo el exceso al campo de orden superior (el 30 de febrero se convierte en 2 de marzo, mientras que el mes 22 pasa a ser el mes 10 del año siguiente). Sin embargo, siempre es recomendable deshacerse de los avisos.
La variable dt0 demuestra la inicialización del valor datetime con un número entero.
El tipo datetime admite el conjunto de operaciones inherentes a los números enteros (véase Expresiones). Esto permite, por ejemplo, añadir una cantidad predefinida de segundos a la hora (con lo que se obtiene un momento en el futuro) o calcular la diferencia entre fechas.