Rejoignez notre page de fans
RegularExpressions dans MQL4 pour travailler avec des expressions régulières - bibliothèque pour MetaTrader 4
- Publié par:
- MetaQuotes
- Vues:
- 709
- Note:
- Publié:
- 2022.01.31 10:19
- Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Véritable auteur :
Microsoft Corporation. Code source extrait de .Net Framework 4.6.1.
Remarque : la bibliothèque fonctionne sur MetaTrader 4 build 1384 et versions ultérieures.
Décompressez l'archive dans le terminal_data_folder.
Les codes de bibliothèque se trouvent dans : <terminal_data_folder>\MQL4\Include\RegularExpressions\
Des exemples de scripts de test sont disponibles dans <terminal_data_folder>\MQL4\Scripts\RegularExpressionsExamples\
Voici une traduction des RegularExpressions de .Net Framework 4.6.1.
Pour travailler avec la bibliothèque, incluez le fichier Regex.mqh du répertoire "\MQL4\Include\RegularExpressions\" dans votre code.
Plusieurs exemples illustratifs sont fournis avec la bibliothèque, qui servent en même temps de cas de test. Tous les échantillons sont tirés du site officiel de Microsoft Corporation, ils démontrent de manière frappante les principales différences par rapport aux expressions régulières en C# et les fonctionnalités de leur utilisation dans le MQL4.
Vous trouverez ci-dessous des informations plus détaillées sur les packages de bibliothèques portés par RegularExpressions MQL4 :
Paquets | Description |
---|---|
CharUnicodeInfo.mqh | Fichier txt archivé pour déterminer les catégories Unicode pour tous les symboles (y compris les caractères non latins). |
RegexCapture.mqh | Représente les résultats d'une seule capture de sous-expression réussie. |
RegexCaptureCollection.mqh | Représente l'ensemble des captures effectuées par un seul groupe de capture. |
RegexGroup.mqh | Représente les résultats d'un seul groupe de capture. |
RegexGroupCollections.mqh | Représente une collection d'objets Group. |
RegexMatch.mqh | Représente les résultats d'une seule correspondance d'expression régulière. |
RegexMatchCollection.mqh | Représente une collection de correspondances réussies trouvées en appliquant de manière itérative le modèle d'expression régulière à la chaîne d'entrée. |
Regex.mqh | Représente une expression régulière immuable |
RegexOptions.mqh | Fournit des valeurs énumérées à utiliser pour définir des options d'expression régulière. |
Les paramètres d'expression régulière du fichier RegexOptions.mqh :
Paramètre | Description |
---|---|
None | Spécifie qu'aucune options n'est définie. |
IgnoreCase | Spécifie une correspondance insensible à la casse. |
Multiline | Spécifie le mode multiligne. |
ExplicitCapture | Ne pas capturer de groupes sans nom. Spécifie que les seules captures valides sont des groupes explicitement nommés ou numérotés de la forme (?<nom> sous-expression). |
Singleline | Spécifie le mode ligne simple. |
IgnorePatternWhitespace | Élimine les espaces blancs non échappés du motif et active les commentaires marqués d'un #. |
RightToLeft | Spécifie que la recherche se fera de droite à gauche au lieu de gauche à droite. |
Debug | Indique que le programme fonctionne en mode débogage. |
ECMAScript | Active le comportement conforme à ECMAScript pour l'expression. Cette valeur ne peut être utilisée qu'avec les valeurs IgnoreCase et Multiline. |
Travailler avec RegularExpressions pour MQL4 :
- Comme pour la version pour .Net, cette bibliothèque implémente un stockage (cache statique) d'expressions régulières. Toutes les expressions régulières créées implicitement (instances de la classe Regex) sont écrites dans ce stockage. Cette approche accélère le fonctionnement des scripts, car elle élimine le besoin de reconstruire l'expression régulière si son modèle correspond à l'un des modèles existants. La taille par défaut du stockage est de 15. La méthode Regex::CacheSize() renvoie ou définit le nombre maximal d'entrées dans le cache statique actuel des expressions régulières conformes.
- La deuxième caractéristique du travail avec les expressions régulières dans MQL4 découle directement de la première. Et cela réside dans le fait que le stockage ci-dessus doit être effacé. Pour ce faire, appelez la fonction statique Regex::ClearCache(). Il est recommandé de n'appeler cette fonction qu'une fois le travail avec les expressions régulières terminé, sinon il y a un risque de supprimer les pointeurs nécessaires.
- Contrairement au .Net, le MQL4 n'implémente pas la boucle foreach, et donc la gestion de l'énumération sera différente. Exemple :
//--- Code en C# Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b", RegexOptions.IgnoreCase); string text = "The the quick brown fox fox jumped over the lazy dog dog."; MatchCollection matches = rx.Matches(text); foreach (Match match in matches) { //--- gestion } //--- Code en MQL4 Regex *rx = new Regex("\\b(?<word>\\w+)\\s+(\\k<word>)\\b", RegexOptions::IgnoreCase); string text = "The the quick brown fox fox jumped over the lazy dog dog."; MatchCollection *matches = rx.Matches(text); IEnumerator<Match*> *en = matches.GetEnumerator(); while(en.MoveNext()) { Match *match = en.Current(); //--- gestion } delete rx; delete matches; delete en; Regex::ClearCache();
- Comme le montre l'exemple ci-dessus, la syntaxe C# permet de mettre le symbole '@' devant les chaînes pour ignorer toutes les marques de formatage qu'elle contient. Dans MQL4, cette approche n'est pas fournie, donc tous les caractères de contrôle dans un modèle d'expression régulière doivent être explicitement définis.
Pour en savoir plus sur les RegularExpressions pour MQL4 et ses fonctionnalités, utilisez l'expert Tests.mqh fourni. Il implémente de nombreux exemples d'utilisation d'expressions régulières, qui couvrent toutes les fonctionnalités principales de la bibliothèque.
Tr
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/16566
La bibliothèque FuzzyNet pour le développement de modèles flous a été écrite en C#. Lors de la conversion en MQL4, 8 fonctions d'appartenance et 4 méthodes de défuzzification pour les systèmes de type Mamdani ont été ajoutées à la bibliothèque.
QuotesDemoL'Expert Advisor affiche les valeurs actuelles des indices boursiers mondiaux de Google Finance à l'aide de la fonction WebRequest.
This is an EA to generate signals based on RSI signal crossing the upper level or lower level.
Bollinger Bands Crossover IndicatorThis is an MT4 indicator which generates signals based on Bollinger bands crossover with price.