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

RegularExpressions in MQL4 per lavorare con le espressioni regolari - libreria per MetaTrader 4

Pubblicati da::
MetaQuotes
Visualizzazioni:
442
Valutazioni:
(30)
Pubblicato:
2021.11.15 16:28
\MQL4\Experts\RegExpressions Demo\
Tests.mq4 (139.5 KB) visualizza
\MQL4\Include\Internal\
Array.mqh (22.36 KB) visualizza
\MQL4\Include\Internal\Generic\
List.mqh (38.77 KB) visualizza
\MQL4\Include\Internal\TimeSpan\ \MQL4\Include\RegularExpressions\
Regex.mqh (57.05 KB) visualizza
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Autore:

Microsoft Corporation. Il codice sorgente è stato preso da .Net Framework 4.6.1

Nota: La libreria lavora su MetaTrader 4 build 1384 e superiore.

Scompatta l'archivio in terminal_data_folder.
I codici della libreria sono posizionati in: <terminal_data_folder>\MQL4\Include\RegularExpressions\
Gli script d'esempio possono essere trovati in <terminal_data_folder>\MQL4\Scripts\RegularExpressionsExamples\

Qui c'è una traduzione della RegularExpressions da .Net Framework 4.6.1.

Per lavorare con la libreria, includere il file Regex.mqh dalla directory "\MQL4\Include\RegularExpressions\" nel tuo codice.

Con la libreria sono forniti diversi esempi illustrativi, che allo stesso tempo fungono da casi test. Tutti gli esempi sono stati presi dal sito ufficiale di Microsoft Corporation, dimostrano chiaramente le principali differenze dalle espressioni regolari in C# e le caratteristiche del loro utilizzo in MQL4.

Di seguito informazioni più dettagliate circa i pacchetti della libreria RegularExpressions portata a MQL4:

Pacchetti
Descrizione
CharUnicodeInfo.mqh
File txt archiviato per determinare le categorie Unicode per tutti i simboli (compresi i caratteri non latini).
RegexCapture.mqh
Rappresenta i risultati di acquisizione di una singola sottoespressione avvenuta con successo.
RegexCaptureCollection.mqh
Rappresenta l'insieme di acquisizioni effettuate da un singolo gruppo di acquisizioni.
RegexGroup.mqh
Rappresenta i risultati di un singolo gruppo di acquisizione.
RegexGroupCollections.mqhRappresenta una raccolta di oggetti Group.
RegexMatch.mqhRappresenta i risultati di una singola corrispondenza di espressione regolare.
RegexMatchCollection.mqhRappresenta una raccolta di corrispondenze riuscite trovate applicando in modo iterativo il modello di espressione regolare alla stringa di input.
Regex.mqhRappresenta un'espressione regolare immutabile
RegexOptions.mqh Fornisce valori enumerati da utilizzare per impostare le opzioni delle espressioni regolari.

I parametri delle espressioni regolari dal file RegexOptions.mqh:

Parametri
Descrizione
None
Specifica che nessuna delle opzioni sono impostate.
IgnoreCase
Specifica corrispondenze nei case-insensitive.
MultilineSpecifica la modalità multilinea.
ExplicitCaptureNon acquisisce gruppi senza nome. Specifica che le uniche acquisizioni valide sono i gruppi esplicitamente denominati o numerati nella forma (?<nome> sottoespressione).
SinglelineSpecifica la modalità linea singola:
IgnorePatternWhitespaceElimina gli spazi bianchi senza caratteri di escape dal modello e abilita i commenti contrassegnati con #.
RightToLeftSpecifica che la ricerca sarà da destra a sinistra anzichè da sinistra a destra.
DebugSpecifica che il programma lavora in modalità debug.
ECMAScriptAbilita il comportamento conforme a ECMA Script per l'espressione. Questo valore può essere utilizzato solo insieme ai valori IgnoreCase e Multiline.


Lavorando con RegularExpressions per MQL4:

  1. Come con la versione per .Net, questa libreria implementa una memorizzazione (cache statica) di espressioni regolari. Tutte le espressioni regolari create implicitamente (istanze della classe Regex) vengono scritte in quella memoria. Questo approccio velocizza il funzionamento degli script, in quanto elimina la necessità di ricostruire l'espressione regolare se il suo pattern corrisponde a uno di quelli esistenti. La dimensione predefinita della memoria è 15. Il metodo Regex::CacheSize() restituisce o imposta il numero massimo di voci nell'attuale cache statica delle espressioni regolari rispettate.
  2. La seconda caratteristica di lavorare con le espressioni regolari in MQL4 segue direttamente dalla prima. E sta nel fatto che la memoria di cui sopra deve essere cancellata. Per fare questo, chiamare la funzione statica Regex::ClearCache(). E' raccomandato chiamare questa funzione solo dopo che il lavoro con l'espressione regolare è stato completato, altrimenti c'è il rischio di cancellare i puntatori necessari.
  3. A differenza di .Net, MQL4 non implementa il ciclo foreach e quindi la gestione dell'enumerazione sarà diversa. Esempio:
    //--- Code in 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) 
      {
       //--- handling
      }
    
    //--- Code in 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();
       //--- handling
      }
    delete rx;
    delete matches;
    delete en;
    Regex::ClearCache();
    
  4. Come si può notare dall'esempio sopra, la sintassi del C# consente di inserire il simbolo "@" davanti alle stringhe per ignorare tutti i segni di formattazzione in esso. In MQL4, questo approccio non è fornito, quindi tutti i caratteri di controllo in un modello di espressione regolare dovrebbero essere definiti in modo esplicito.

Per ulteriori informazioni su RegularExpressions per MQL4 e sulle sue funzionalità, utilizza l'esperto Tests.mqh fornito. Implementa numerosi esempi di utilizzo delle espressioni regolari, che coprono tutte le principali funzionalità della libreria.

Tr



Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/16566

Fuzzy - libreria per lo sviluppo di modelli fuzzy Fuzzy - libreria per lo sviluppo di modelli fuzzy

La libreria FuzzyNet per lo sviluppo di modelli fuzzy è stata scritta in C#. Durante la conversione a MQL4, sono state aggiunte alla libreria 8 funzioni di appartenenza e 4 metodi di defuzzificazione per i sistemi di tipo Mamdani.

QuotesDemo QuotesDemo

L'Expert Advisor mostra i valori correnti degli Indici Azionari Mondiali di Google Finance utilizzando la funzione WebRequest.

DMH DMH

Directional Movement using Hann windowing - metatrader 4 version

Limit channels Limit channels

ATR based limit channels - metatrader 4 version