Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Librerie

Simplest Logger class for MetaTrader 5 - libreria per MetaTrader 5

Visualizzazioni:
74
Valutazioni:
(5)
Pubblicato:
\MQL5\Include\DKStdLib\Logger\ \MQL5\Scripts\
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Ogni programmatore ha il proprio logger. Io ho scritto il mio per MQL5, ispirandomi al modulo di logging di Python.

Questa classe è la più semplice. Non ha gerarchie, rotatori o formattatori. È semplice e comoda per qualsiasi progetto.

Installazione

  1. Copiare CDKLogger.mqh nella cartella MQLIncludeDKStdLibLogger.
  2. Importare la classe CDKLogger.

#include <DKStdLib\Logger\CDKLogger.mqh

Uso

CDKLogger logger;

// FASE 1. Avviare il logger con nome "MyLoggerName" e livello INFO
logger.Init("MyLoggerName", INFO);

// È possibile modificare il formato predefinito del logger "%name%:[%level%] %message%" con il proprio.
// Utilizzare qualsiasi combinazione di modelli 
logger.Format = "%YYYY%-%MM%-%DD% %hh%:%mm%-%ss% - %name%:[%level%] %message%"; 

// PASSO 2. Se si desidera filtrare i messaggi solo con le sostituzioni,
// riempire l'elenco FilterInList 
// 2.1. Aggiungere una sottostruttura a FilterIntList
logger.FilterInList.Add("Including-Substring-#1");        
logger.FilterInList.Add("Including-Substring-#2");        

// 2.2. Dividere la stringa con il separatore ";" per aggiungere tutte le sottostringhe a FilterInList in un'unica riga.
logger.FilterInFromStringWithSep("Including-Substring-#3;Including-Substring-#4", ";");  

// PASSO 3. Se si desidera filtrare il messaggio OUT con le sottostringhe, ma lasciare tutte le altre,
// riempire l'elenco FilterOutList 
// 3.1. Aggiungere una sottostringa a FilterOutList
logger.FilterOutList.Add("Excluding-Substring-#1");        
logger.FilterOutList.Add("Excluding-Substring-#2");        

// 3.2. Dividere la stringa con il separatore ";" per aggiungere tutte le sottostringhe a FilterOutList in un'unica riga.
logger.FilterOutFromStringWithSep("Excluding-Substring-#3;Excluding-Substring-#4", ";");  // utilizzare Filter In per inserire il proprio filtro str separato da ; qui

// FASE 4. Registrazione
logger.Debug("Debug: Including-Substring-#1", false);                  // Debug senza avviso
logger.Info("Info: Including-Substring-#1", true);                     // Informazioni con la finestra di dialogo di avviso
logger.Warn("Warn: Including-Substring-#1"); 
logger.Error("Error: Including-Substring-#1: Excluding-Substring-#1"); // Saltato a causa dell'elenco FilterOutList
logger.Critical("Critical: Including-Substring-#1");

logger.Assert(true, 
              "Log msg if true", INFO,   // se ok
              "Log msg if false", ERROR, // se fallisce
              true);                     // Mostra anche l'avviso
logger.Assert(true, 
              "Same msg for true & false", 
              INFO,   // Livello di log se ok
              ERROR,  // Livello di log se fallisce
              false); // Nessun avviso 

I seguenti messaggi saranno inviati al registro come risultato dell'esecuzione:

Problemi aperti

Uso spesso la classe in questo modo:

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

Ma qui abbiamo un problema. La funzione StringFormat analizza la stringa ogni volta, anche se il livello di log non richiede l'emissione del messaggio.

Se si ha bisogno di emettere spesso messaggi di debug, è necessario avvolgere l'output in una condizione:

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

Il modo migliore per farlo sarebbe usare StringFormat in modo pigro, ma purtroppo MQL5 non supporta il passaggio di un numero dinamico di parametri di funzione alle funzioni Debug, Info, Error e così via.

Se avete qualche idea su come si potrebbe fare, mi piacerebbe sentirla.

Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/52741

Esplosione di Waddah Attar Esplosione di Waddah Attar

L'indicatore mostra quando il mercato inizia a muoversi più velocemente. Inoltre, indica al trader quando acquistare, vendere e uscire da un'operazione.

ADX lisciato ADX lisciato

Esistono molti algoritmi di smoothing, questo indicatore è uno smoothing dell'indicatore ADX standard.

TimeServerDaylightSavings TimeServerDaylightSavings

Funzioni relative al tempo per il rilevamento empirico del fuso orario del server e della modalità di risparmio di luce diurna (DST) dallo storico delle quotazioni

Linea StepMA Linea StepMA

Indicatore StepMA, progettato come una media mobile.