Unisciti alla nostra fan page
- Visualizzazioni:
- 74
- Valutazioni:
- Pubblicato:
-
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
- Copiare CDKLogger.mqh nella cartella MQLIncludeDKStdLibLogger.
- 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
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
Esistono molti algoritmi di smoothing, questo indicatore è uno smoothing dell'indicatore ADX standard.
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
Indicatore StepMA, progettato come una media mobile.
