Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Bibliothèque

RegularExpressions dans MQL4 pour travailler avec des expressions régulières - bibliothèque pour MetaTrader 4

Publié par:
MetaQuotes
Vues:
639
Note:
(30)
Publié:
2022.01.31 10:19
\MQL4\Experts\RegExpressions Demo\
Tests.mq4 (139.5 KB) afficher
\MQL4\Include\Internal\
Array.mqh (22.36 KB) afficher
Wrappers.mqh (17.96 KB) afficher
\MQL4\Include\Internal\Generic\
IList.mqh (5.7 KB) afficher
List.mqh (38.77 KB) afficher
\MQL4\Include\Internal\TimeSpan\ \MQL4\Include\RegularExpressions\
Regex.mqh (57.05 KB) afficher
RegexCode.mqh (22.25 KB) afficher
RegexFCD.mqh (31.25 KB) afficher
RegexNode.mqh (32.45 KB) afficher
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.mqhReprésente une collection d'objets Group.
RegexMatch.mqhReprésente les résultats d'une seule correspondance d'expression régulière.
RegexMatchCollection.mqhRepré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.mqhRepré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.
MultilineSpécifie le mode multiligne.
ExplicitCaptureNe 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).
SinglelineSpécifie le mode ligne simple.
IgnorePatternWhitespaceÉlimine les espaces blancs non échappés du motif et active les commentaires marqués d'un #.
RightToLeftSpécifie que la recherche se fera de droite à gauche au lieu de gauche à droite.
DebugIndique que le programme fonctionne en mode débogage.
ECMAScriptActive 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 :

  1. 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.
  2. 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.
  3. 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();
    
  4. 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

Fuzzy - bibliothèque pour développer des modèles flous Fuzzy - bibliothèque pour développer des modèles flous

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.

QuotesDemo QuotesDemo

L'Expert Advisor affiche les valeurs actuelles des indices boursiers mondiaux de Google Finance à l'aide de la fonction WebRequest.

RSI based Overbought Oversold Detection and Signal Generation RSI based Overbought Oversold Detection and Signal Generation

This is an EA to generate signals based on RSI signal crossing the upper level or lower level.

Bollinger Bands Crossover Indicator Bollinger Bands Crossover Indicator

This is an MT4 indicator which generates signals based on Bollinger bands crossover with price.