Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 126
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Clase CDebugLogger: Una Utilidad de Registro Completa para MQL4/5
La clase CDebugLogger es una potente y flexible utilidad de registro específicamente diseñada para entornos MQL4/5. Es una herramienta esencial para los desarrolladores que necesitan monitorizar, depurar y rastrear el comportamiento de sus aplicaciones con precisión. A continuación, exploramos las principales características y capacidades de esta clase.
Características principales
- Múltiples niveles de registro: La clase CDebugLogger soporta el registro en diferentes niveles de importancia, incluyendo INFO, ADVERTENCIA, ERROR y DEBUG. Esto permite a los desarrolladores filtrar y centrarse en mensajes de especial importancia.
- Inclusión de marcas de tiempo: Los desarrolladores pueden optar por incluir marcas de tiempo en sus mensajes de registro, con formatos personalizables. Esta característica es crucial para el seguimiento de la hora exacta de los eventos y la depuración de problemas sensibles al tiempo.
- Registro de archivos: La clase proporciona un soporte robusto para el registro en archivos. Los desarrolladores pueden activar o desactivar el registro de archivos, especificar la ruta del archivo de registro y elegir si desean guardar los registros en una carpeta común. Además, los registros pueden guardarse en formato CSV, lo que facilita su análisis.
- Información contextual: Para mejorar la claridad de los mensajes de registro, la clase CDebugLogger permite la inclusión de firmas de función, nombres de archivo y números de línea. Esta información contextual ayuda a localizar con exactitud los problemas dentro del código.
- Palabras clave silenciosas: Una característica única de esta clase es la capacidad de silenciar los registros que contienen palabras clave específicas. Esto es especialmente útil para evitar que se registre información sensible, como contraseñas o datos confidenciales.
- Filtrar palabras clave: Otra característica única de esta clase es la capacidad de filtrar los registros que contienen palabras clave específicas. Esto es particularmente útil para la depuración, centrándose sólo en los registros que son relevantes para problemas específicos. Los desarrolladores pueden reducir la salida de registro para incluir sólo los mensajes que contienen ciertos términos, por lo que es más fácil de identificar y abordar los problemas relacionados con los términos sin ser abrumado por las entradas de registro no relacionados.
Ejemplo de uso
A continuación se muestra un ejemplo de cómo inicializar y utilizar la clase CDebugLogger:
// Inicializar el logger con nivel INFO registrando en un fichero CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true); // Registrar un mensaje simple logger.Log(INFO, "This is an info message"); // Silenciar una palabra clave logger.AddSilentKeyword("password"); // Registrar un mensaje que será silenciado logger.Log(INFO, "User entered password: 1234"); // Activar el registro de archivos logger.EnableFileLogging(true, "debug.log", false); // Eliminar una palabra clave silenciada logger.RemoveSilentKeyword("password"); // Registrar un mensaje después de eliminar la palabra clave de la lista de silencio logger.Log(INFO, "User entered password: 1234"); // Añadir una palabra clave para filtrar los registros logger.AddFilterKeyword("success"); // Registrar un mensaje que será filtrado logger.Log(INFO, "Operation failed"); // Registrar un mensaje que pase el filtro logger.Log(INFO, "Operation successful"); // Eliminar una palabra clave del filtro logger.RemoveFilterKeyword("success"); // Inicializar usando la función genérica Log logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true); // Registrar una advertencia utilizando la función genérica Log Log(WARNING, "This is a warning message");
Ejemplo de Script
Para utilizar la clase CDebugLogger en un script, simplemente incluya la librería necesaria al principio de su archivo, como se muestra a continuación:
//--- Es importante incluir este fichero de cabecera antes que todos los demás #include <Logging.mqh> //+------------------------------------------------------------------+ //| Función de inicio del programa de script| //+------------------------------------------------------------------+ void OnStart() { //--- Inicializar el logger con nivel INFO, registrando en un fichero //--- Incluir marcas de tiempo y guardar en formato CSV int log_options = 0; // NOMBRE DE ARCHIVO | LÍNEA | FUNCSIG; logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true); //--- Registrar un simple mensaje informativo Log(INFO, "Script started successfully."); //--- Registrar un mensaje de advertencia Log(WARNING, "This is a warning message."); //--- Registrar un mensaje de error Log(ERROR, "This is an error message."); //--- Registrar un mensaje de depuración Log(DEBUG, "This is a debug message for debugging purposes."); //--- Añade una palabra clave para silenciar los registros que contengan 'password' logging.AddSilentKeyword("password"); //--- Intento de registrar un mensaje que contiene la palabra clave silenciado Log(INFO, "User entered password: 12348"); // Este mensaje será silenciado //--- Eliminar la palabra clave silenciada logging.RemoveSilentKeyword("password"); //--- Registrar el mensaje de nuevo, ahora se registrará Log(INFO, "User entered password: 1234"); //--- Utiliza la función genérica Log para registrar un mensaje Log(INFO, "This message is logged using the generic Log function."); //--- Utilice la macro Imprimir para registrar un mensaje en el nivel INFO Print("This message is logged using the Print macro."); //--- Demostrar el registro con diferentes combinaciones de opciones logging.Initialize(INFO, true, "log_with_options.txt", true, TIME_DATE | TIME_MINUTES, false, FILENAME | LINE, true); Log(INFO, "This log includes only the file name and line number."); logging.Initialize(INFO, true, "log_with_funcsig.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, FUNCSIG, true); Log(INFO, "This log includes only the function signature."); logging.Initialize(INFO, true, "log_custom_order.txt", true, TIME_MINUTES, false, LINE | FILENAME | FUNCSIG, true); Log(INFO, "This log includes line number, file name, and function signature in a custom order."); //--- Añadir una palabra clave para filtrar los registros que contengan 'importante logging.AddFilterKeyword("important"); //--- Registrar algunos mensajes para demostrar el filtro Log(INFO, "This is an important message."); // Este mensaje será visible Log(INFO, "This is a regular message."); // Este mensaje no será visible //--- Eliminar la palabra clave de filtro para mostrar todos los registros logging.RemoveFilterKeyword("important"); //--- Registra un mensaje final indicando el fin del script Log(INFO, "Script execution completed."); }
Ejemplo de salida CSV:
Timestamp,Level,Message "2024.09.01 18:31:44","INFO","Script started successfully." "2024.09.01 18:31:44","WARNING","This is a warning message." "2024.09.01 18:31:44","ERROR","This is an error message." "2024.09.01 18:31:44","DEBUG","This is a debug message for debugging purposes." "2024.09.01 18:31:44","INFO","User entered password: 1234" "2024.09.01 18:31:44","INFO","This message is logged using the generic Log function." "2024.09.01 18:31:44","INFO","This message is logged using the Print macro."
Timestamp,Level,Message,Filename,Line "2024.09.01 18:31","INFO","This log includes only the file name and line number.","Logging.mq5","135"
Timestamp,Level,Message,Funcsig "2024.09.01 18:31:44","INFO","This log includes only the function signature.","void OnStart()"
Timestamp,Level,Message,Filename,Line,Funcsig "18:31","INFO","This log includes line number, file name, and function signature in a custom order.","Logging.mq5","141","void OnStart()" "18:31","INFO","This is an important message.","Logging.mq5","147","void OnStart()" "18:31","INFO","Script execution completed.","Logging.mq5","154","void OnStart()"
Conclusión
La clase CDebugLogger es una herramienta invaluable para cualquier desarrollador MQL4/5. Con su amplia gama de características personalizables, permite un registro y monitorización precisos de las aplicaciones, facilitando una depuración más sencilla y un mejor seguimiento del rendimiento de la aplicación. Tanto si necesita un simple registro de mensajes como información contextual detallada, la clase CDebugLogger proporciona una solución fiable y eficiente adaptada a sus necesidades de desarrollo.
Para más información sobre la clase CDebugLogger o para explorar otras herramientas y soluciones avanzadas, visite StormWave Technologies.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/51817
Max trade volume checker for your trading account
Un cuadro de diálogo para mostrar el tamaño máximo de lote permitido en el activo subyacente para diferentes tipos de órdenes (compra, venta, compra pendiente y venta pendiente).
HedgeCover EA
Protección de posición inteligente con lógica de una cobertura por posición. Dispone de separación por número mágico, temporizador de enfriamiento y límite máximo de cobertura. Evita bucles de cobertura infinitos. Licencia MIT gratuita.
HiLo
Indicador de línea alta y baja
Save OHLCV Data from Chart to CSV File
Este script guarda todos los datos OHLCV disponibles en el gráfico en un archivo CSV.