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:
- 39
- 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

La barra envolvente se produce por debajo de la media móvil Ema que está subiendo - Operación de compra -

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.

Indicador Rsi

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).