Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

Simplest Logger class for MetaTrader 5 - librería para MetaTrader 5

Visualizaciones:
202
Ranking:
(5)
Publicado:
\MQL5\Include\DKStdLib\Logger\
CDKLogger.mqh (26.27 KB) ver
\MQL5\Scripts\
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Cada programador tiene su propio logger. Yo escribí el mío propio para MQL5, inspirado en el módulo de logging de Python.

Esta clase es la más simple. Sin jerarquías, rotadores o formateadores. Es simple y conveniente para cualquier proyecto.

Instalación

  1. Copia CDKLogger.mqh a la carpeta MQLInclude\DKStdLib\Logger.
  2. Importa la clase CDKLogger.

#include <DKStdLib\Logger\CDKLogger.mqh

Uso

CDKLogger logger;

// PASO 1. Init Logger con nombre "MyLoggerName" y nivel INFO
logger.Init("MyLoggerName", INFO);

// Puedes cambiar el formato por defecto del logger "%name%:[%level%] %message%" por el tuyo propio
// Utilizar cualquier combinación de patrones 
logger.Format = "%YYYY%-%MM%-%DD% %hh%:%mm%-%ss% - %name%:[%level%] %message%"; 

// PASO 2. Si desea filtrar el mensaje sólo con sustantivos,
// rellenar la FilterInList 
// 2.1. Añadir una substancia a FilterIntList
logger.FilterInList.Add("Including-Substring-#1");        
logger.FilterInList.Add("Including-Substring-#2");        

// 2.2. Dividir la cadena por el separador ";" para añadir todas las subcadenas a FilterInList en una sola línea.
logger.FilterInFromStringWithSep("Including-Substring-#3;Including-Substring-#4", ";");  

// PASO 3. Si desea filtrar el mensaje OUT con subcadenas, pero dejar todas las demás,
// rellenar la FilterOutList 
// 3.1. Añadir una subcadena a FilterOutList
logger.FilterOutList.Add("Excluding-Substring-#1");        
logger.FilterOutList.Add("Excluding-Substring-#2");        

// 3.2. Dividir la cadena por el separador ";" para añadir todas las subcadenas a FilterOutList en una sola línea.
logger.FilterOutFromStringWithSep("Excluding-Substring-#3;Excluding-Substring-#4", ";");  // use Filter In ponga su filtro str sep por ; aquí

// PASO 4. Registro
logger.Debug("Debug: Including-Substring-#1", false);                  // Depurar sin Alerta
logger.Info("Info: Including-Substring-#1", true);                     // Información con diálogo de alerta
logger.Warn("Warn: Including-Substring-#1"); 
logger.Error("Error: Including-Substring-#1: Excluding-Substring-#1"); // Omitido por FilterOutList
logger.Critical("Critical: Including-Substring-#1");

logger.Assert(true, 
              "Log msg if true", INFO,   // si ok
              "Log msg if false", ERROR, // si falla
              true);                     // Mostrar alerta también
logger.Assert(true, 
              "Same msg for true & false", 
              INFO,   // Nivel de registro si ok
              ERROR,  // Nivel de registro si falla
              false); // No hay alerta 

Los siguientes mensajes se mostrarán en el log como resultado de la ejecución:

Problemas abiertos

A menudo utilizo la clase de esta manera:

logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f",
                          __FUNCTION__, __LINE__,
                          my_param));

Pero aquí tenemos un problema. La función StringFormat parsea la cadena cada vez, incluso si el nivel de registro no requiere que el mensaje sea emitido.

Si necesitas enviar muchos mensajes de depuración, tendrás que envolver la salida en una condición:

if(DEBUG >= logger.Level)                          
  logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f",
                            __FUNCTION__, __LINE__,
                            my_param));      

La mejor manera de hacer esto sería utilizar StringFormat perezosamente, pero por desgracia MQL5 no admite pasar un número dinámico de parámetros de función a la Depuración, Información, Error, y así sucesivamente funciones.

Si tienes alguna idea de cómo se podría hacer esto, me encantaría escucharla.

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/52741

Ascending Sort A Struct Array By A Field Example Ascending Sort A Struct Array By A Field Example

Este es un ejemplo de ordenación ascendente de una lista de estructura por un campo. Usted puede averiguar y personalizar el algoritmo anterior en función de la finalidad de uso, este es el ejemplo más básico es también una dirección para resolver la ordenación en una matriz de estructura. El algoritmo utilizado en este ejemplo es Quick Sort y Merge Sort.

Bollinger Bands Crossover Signals Bollinger Bands Crossover Signals

Descripción del Indicador - Bollinger Bands Crossover Signals Nombre: Bollinger Bands Crossover Signals Versión: 1.1 Autor: BENALI Enlace: https://www.mql5.com/en/users/dahmi_benali

TimeServerDaylightSavings TimeServerDaylightSavings

Funciones relacionadas con la hora para la detección empírica de la zona horaria del servidor y el modo de ahorro de luz diurna (DST) a partir del historial de cotizaciones

Custom crosshair cursor with synchronization Custom crosshair cursor with synchronization

Indicador sincronizado de retícula personalizado que muestra el precio y la hora (servidor/local).