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:
- 170
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Logify es una librería de registro para MQL diseñada para simplificar la depuración, seguimiento y monitorización de EAs e indicadores. Proporciona registros estructurados, personalizables y organizados directamente en el gráfico o en el terminal, con soporte para niveles de registro, formatos flexibles y múltiples gestores. Una solución ligera y elegante que es fácil de integrar en sus proyectos MQL.
📦 Características
- Múltiples niveles de registro: DEBUG, INFO, ALERT, ERROR, FATAL
- Visualización de logs directamente en gráfico, terminal, archivos o incluso base de datos
- Formato y diseño de registro personalizables
- Arquitectura modular con múltiples manejadores
- Ligero y fácil de integrar y utilizar
Instalación
- Copie la carpeta /Logify a:
MQL5/Include/
- Incluye Logify en tu EA, indicador o script:
#include <Logify/Logify.mqh> - Es posible instalar usando Git, sólo tienes que acceder al repositorio y seguir los pasos.
🔧 Ejemplo de inicio rápido
Ejemplo sencillo con configuración por defecto:
//+------------------------------------------------------------------+ //| Importar| //+------------------------------------------------------------------+ #include <Logify/Logify.mqh> CLogify Logify; //+------------------------------------------------------------------+ //| Función de inicialización experta| //+------------------------------------------------------------------+ int OnInit() { //--- Ejemplo de registros Logify.Debug("Initialization started"); Logify.Info("Account balance is OK"); Logify.Alert("Take profit reached"); Logify.Error("Failed to send order", "Order", "Reason: No money"); Logify.Fatal("Critical error: Invalid input parameters"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+
Ejemplo avanzado, con configuración personalizada del manejador. En este ejemplo, guardamos el registro de logs en ficheros y en el comentario de la gráfica. Personalizando la configuración de cada uno de ellos.
//+------------------------------------------------------------------+ //| Importar| //+------------------------------------------------------------------+ #include <Logify/Logify.mqh> CLogify Logify; //+------------------------------------------------------------------+ //| Función de inicialización experta| //+------------------------------------------------------------------+ int OnInit() { //--- Configurar el gestor de comentarios MqlLogifyHandleCommentConfig config_comment; config_comment.size = 10; config_comment.frame_style = LOG_FRAME_STYLE_SINGLE; config_comment.direction = LOG_DIRECTION_UP; config_comment.title = "My Expert"; //--- Crear y configurar el gestor de comentarios CLogifyHandlerComment *handler_comment = new CLogifyHandlerComment(); handler_comment.SetConfig(config_comment); handler_comment.SetLevel(LOG_LEVEL_DEBUG); handler_comment.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg}","hh:mm:ss")); //--- Configurar manejador de archivos MqlLogifyHandleFileConfig file_config; file_config.CreateDateRotationConfig("my_expert","logs",LOG_FILE_EXTENSION_LOG,10,100,CP_UTF8); //--- Crear y configurar el manejador de archivos CLogifyHandlerFile *handler_file = new CLogifyHandlerFile(); handler_file.SetConfig(file_config); handler_file.SetLevel(LOG_LEVEL_DEBUG); handler_file.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg} ({filename} | {origin} | {function})","hh:mm:ss")); //--- Attach handler Logify.AddHandler(handler_comment); Logify.AddHandler(handler_file); //--- Ejemplo de registros Logify.Debug("Initialization started"); Logify.Info("Account balance is OK"); Logify.Alert("Take profit reached"); Logify.Error("Failed to send order", "Order", "Reason: No money"); Logify.Fatal("Critical error: Invalid input parameters"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+
Para entender cada una de las configuraciones, recomiendo leer los artículos a continuación, donde explico cada paso del desarrollo de la librería:
- Dominando los Registros de Bitácora (Parte 1): Conceptos Fundamentales y Primeros Pasos en MQL5
- Dominando los Registros (Parte 2): Formateo de Logs
- Dominando los Registros (Parte 3): Explorando los Manejadores para Guardar Registros
- Dominando los Registros (Parte 4): Guardar registros en archivos
- Dominio de los Registros (Parte 5): Optimizando el Handler con Caché y Rotación
- Dominio de los Registros (Parte 6): Guardar registros en la base de datos
- Dominio de los Registros (Parte 7): Cómo Mostrar los Registros en un Gráfico
- Dominio de los Registros (Parte 8): Registros de error que se traducen solos
- Dominio de los Registros (Parte 9): Implementando el patrón constructor y añadiendo configuraciones por defecto
- Dominando los Registros (Parte 10): Evitar la Repetición de Registros Implementando una Supresión
✔️ Niveles de Registro
| Nivel | Descripción |
|---|---|
| DEBUG | Información detallada para depuración |
| INFO | Información general |
| ALERTA | Advertencias o eventos importantes |
| ERROR | Errores que requieren atención |
| FATAL | Errores críticos, detener la ejecución |
🖥️ Manejadores incluidos
Cada manejador define dónde se mostrarán o almacenarán los registros.
| Manejador | Descripción |
|---|---|
| Comentario | Muestra los registros directamente en el gráfico (Comentario) |
| Consola | Muestra los registros en el terminal de MetaTrader |
| Archivo | Guardar registros en archivos .txt o .log |
| Base de datos | Almacena los registros en la base de datos local SQLite |
Puede utilizar uno o combinar varios manejadores al mismo tiempo, como gráfico + archivo + consola, por ejemplo.
🛠️ Formato de registro
Ejemplo de patrón de formato:
"{date_time} [{levelname}]: {msg}" Tokens disponibles:
- {levelname}: Nombre del nivel (DEBUG, INFO, ERROR, etc.)
- {msg}: Mensaje principal
- {args}: Argumentos adicionales o detalles
- {timestamp}: Timestamp en segundos (Hora Unix)
- {date_time}: Fecha y hora formateadas (hh:mm:ss, etc.)
- {level}: Código numérico para el nivel (0 = DEBUG, 1 = INFO...)
- {origen}: Origen o contexto definido en la llamada al log
- {filename}: Nombre del archivo de origen (si está disponible)
- {función}: Nombre de la función desde la que se llamó
- {línea}: Número de línea en el código donde se produjo el registro
⚖️ Licencia
Licencia MIT - Uso libre para proyectos personales y comerciales.
👨💻 Autor
Desarrollado por joaopedrodev, con un enfoque en hacer el desarrollo MQL más profesional, organizado y eficiente.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/59821
Rsi Ema Engulfing Bar V3
La barra envolvente se produce por debajo de la media móvil Ema que está subiendo - Operación de compra -
QuickTrend Scalper
Este Asesor Experto (EA) está diseñado para la negociación de alta frecuencia en el gráfico de 1 minuto (M1) en los mercados de divisas y criptomonedas. Utiliza el RSI y patrones de velas para identificar señales de compra y venta, ejecutando automáticamente operaciones con niveles dinámicos de stop loss, take profit y trailing stop basados en la volatilidad del mercado.
Rsi Engulfing Bar V2
Indicador Rsi
Un script para un probador que amplía las funciones estándar de optimización de MetaTrader 5
Se trata de un script probador que amplía las capacidades estándar de optimización de MetaTrader 5, permitiéndole evaluar estrategias según criterios complejos definidos por el usuario (con separación en periodos dentro y fuera de la muestra, métricas avanzadas y pruebas estadísticas).