Rejoignez notre page de fans
- Vues:
- 53
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Chaque programmeur a son propre logger. J'ai écrit le mien pour MQL5, en m'inspirant du module de logging de Python.
Cette classe est la plus simple. Pas de hiérarchie, de rotateurs ou de formateurs. Elle est simple et pratique pour n'importe quel projet.
Installation de la classe
- Copier CDKLogger.mqh dans le dossier MQL\Include\DKStdLib\Logger.
- Importer la classe CDKLogger.
#include <DKStdLib\Logger\CDKLogger.mqh
Utilisation
CDKLogger logger; // ÉTAPE 1 : Init Logger with "MyLoggerName" name and INFO level (Démarrer l'enregistreur avec le nom "MyLoggerName" et le niveau "INFO") logger.Init("MyLoggerName", INFO); // Vous pouvez modifier le format de l'enregistreur par défaut "%name% :[%level%] %message%" pour le remplacer par le vôtre. // Utiliser n'importe quelle combinaison de motifs logger.Format = "%YYYY%-%MM%-%DD% %hh%:%mm%-%ss% - %name%:[%level%] %message%"; // Si vous souhaitez filtrer les messages uniquement à l'aide de substitutions, // remplir la liste des filtres // 2.1. Ajouter une sous-catégorie à FilterIntList logger.FilterInList.Add("Including-Substring-#1"); logger.FilterInList.Add("Including-Substring-#2"); // 2.2. Diviser la chaîne par le séparateur " ;" pour ajouter toutes les sous-chaînes à FilterInList en une seule ligne logger.FilterInFromStringWithSep("Including-Substring-#3;Including-Substring-#4", ";"); // Si vous souhaitez filtrer les messages OUT avec des sous-chaînes, mais laisser tous les autres, // remplir la liste des filtres (FilterOutList) // 3.1. Ajouter une sous-chaîne à FilterOutList logger.FilterOutList.Add("Excluding-Substring-#1"); logger.FilterOutList.Add("Excluding-Substring-#2"); // 3.2. Diviser la chaîne par le séparateur " ;" pour ajouter toutes les sous-chaînes à FilterOutList en une seule ligne logger.FilterOutFromStringWithSep("Excluding-Substring-#3;Excluding-Substring-#4", ";"); // utiliser Filter In mettre votre chaîne de filtre séparée par ; ici // ÉTAPE 4 : Enregistrement logger.Debug("Debug: Including-Substring-#1", false); // Débogage sans alerte logger.Info("Info: Including-Substring-#1", true); // Info avec boîte de dialogue d'alerte logger.Warn("Warn: Including-Substring-#1"); logger.Error("Error: Including-Substring-#1: Excluding-Substring-#1"); // Ignoré à cause de FilterOutList logger.Critical("Critical: Including-Substring-#1"); logger.Assert(true, "Log msg if true", INFO, // si ok "Log msg if false", ERROR, // si échec true); // Afficher également l'alerte logger.Assert(true, "Same msg for true & false", INFO, // Niveau de journalisation si ok ERROR, // Niveau de journalisation en cas d'échec false); // Pas d'alerte
Les messages suivants seront affichés dans le journal à la suite de l'exécution :
Questions en suspens
J'utilise souvent la classe de cette manière :
logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f", __FUNCTION__, __LINE__, my_param));
Mais ici, nous avons un problème. La fonction StringFormat analyse la chaîne de caractères à chaque fois, même si le niveau de journalisation n'exige pas que le message soit affiché.
Si vous avez besoin de sortir des messages de débogage souvent, vous devrez envelopper la sortie dans une condition :
if(DEBUG >= logger.Level) logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f", __FUNCTION__, __LINE__, my_param));
La meilleure façon de le faire serait d'utiliser StringFormat paresseusement, mais malheureusement MQL5 ne prend pas en charge le passage d'un nombre dynamique de paramètres de fonction aux fonctions Debug, Info, Error, etc.
Si vous avez des idées sur la façon dont cela pourrait être fait, je serais ravi de les entendre.
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/52741

L'indicateur montre quand le marché commence à évoluer plus rapidement. En outre, il indique au trader quand acheter, vendre et sortir d'une transaction.

Il existe de nombreux algorithmes de lissage, cet indicateur est un lissage de l'indicateur ADX standard.

Fonctions liées au temps pour la détection empirique du fuseau horaire du serveur et du mode d'heure d'été (DST) à partir de l'historique des cotations

Introducing MP by SPLpulse, a sophisticated and highly versatile Expert Advisor designed for the modern trader. Whether you are a scalper, a trend follower, or a reversal trader, MP by SPLpulse combines multiple trading strategies with an institutional-grade risk management suite to adapt to your unique trading style. Take control of your trading with unparalleled customization and powerful automation.