und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
RegularExpressions in MQL4 für die Arbeit mit regulären Ausdrücken - Bibliothek für den MetaTrader 4
- Veröffentlicht:
- MetaQuotes
- Ansichten:
- 1151
- Rating:
- Veröffentlicht:
- 2017.10.04 13:02
- Aktualisiert:
- 2018.09.12 10:01
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Autor des Artikels:
Microsoft Corporation. Quellcodes aus .Net Framework 4.6.1.
Hinweis: die Bibliothek funktioniert im MetaTrader 4 build 1384 und höher.
Entpacken Sie die Zip-Datei in den Dateiordner.
Die Codes der Bibliothek sind im folgenden Ordner zu finden: <Dateiordner>\MQL4\Include\RegularExpressions\
Beispiele von Test-Scripts finden Sie im Ordner: <Dateiordner>\MQL4\Scripts\RegularExpressionsExamples\
Hier ist eine Übersetzung von RegularExpressions aus .Net Framework 4.6.1.
Für die Arbeit mit der Bibliothek fügen Sie Ihrem Code die Datei Regex.mqh aus dem Verzeichnis \MQL4\Include\RegularExpressions\ hinzu.
Die Bibliothek wird durch einige Beispiele ergänzt, die zur Veranschaulichung und gleichzeitig als Testfälle dienen. Alle Beispiele sind der offiziellen Webseite von Microsoft Corporation entnommen. Sie veranschaulichen grundlegende Unterschiede von regulären Ausdrücken in C# sowie die Besonderheiten der Verwendung regulärer Ausdrücke in MQL4.
Nachfolgend finden Sie detaillierte Informationen über die Pakete der portierte Bibliothek RegularExpressions MQL4:
Pakete |
Beschreibung |
---|---|
CharUnicodeInfo.mqh |
Eine archivierte txt-Datei zum Bestimmen von Unicode-Kategorien für alle Zeichen (nicht-lateinische Zeichen eingeschlossen). |
RegexCapture.mqh |
Stellt Ergebnisse einer erfolgreichen Erfassung des Teilausdrucks dar. |
RegexCaptureCollection.mqh |
Stellt einen Set der Erfassungen dar, die durch eine Erfassungsruppe getan wurden. |
RegexGroup.mqh | Stellt Ergebnisse einer separaten Erfassungsgruppe dar. |
RegexGroupCollections.mqh | Gibt einen Set von Gruppenobjekten. |
RegexMatch.mqh | Stellt Ergebnisse aus einem separaten Treffer eines regulären Ausdrucks dar. |
RegexMatchCollection.mqh | Stellt einen Set erfolgreicher Treffer dar, die durch eine iterative Anwendung des Musters eines regulären Ausdrucks zur Eingabezeile gefunden wurden dar. |
Regex.mqh | Stellt einen unveränderlichen regulären Ausdruck dar. |
RegexOptions.mqh | Stellt alle aufgezählten Werte bereit, um Parameter regulärer Ausdrücke zu setzen. |
Parameter regulärer Ausdrücke aus der Datei RegexOptions.mqh:
Parameter | Beschreibung |
---|---|
None | Keine Parameter gesetzt. |
IgnoreCase | Klein-bzw. Großschreibung wird nicht berücksichtigt. |
Multiline | Zeigt einen mehrzeiligen Modus an. |
ExplicitCapture | Unbenannte Gruppen nicht erfassen. Die einzig zulässigen Erfassungen sind die explizit benannten oder nummerierten im Format (?<Name> Teilausdruck). |
Singleline | Zeigt einen einzeiligen Modus an. |
IgnorePatternWhitespace | Beseitigt Trennzeichen ohne Escape-Sequenz aus dem Muster und aktiviert die mit dem '#' Zeichen markierten Kommentare. |
RightToLeft | Zeigt, dass die Suche von rechts nach links erfolgt und nicht von links nach rechts. |
Debug | Zeigt, dass das Programm im Debug-Modus läuft. |
ECMAScript | Aktiviert ein ECMAScript-konformes Verhalten für den Ausdruck. Dieser Wert kann nur zusammen mit IgnoreCase und Multiline verwendet werden. |
Umgang mit RegularExpressions für MQL4:
- Ähnlich wie in der .Net Version wurde in dieser Bibliothek ein Speicher (statischer Cache-Speicher) regulärer Ausdrücke umgesetzt. Alle implizit erstellen regulären Ausdrücke (Instanzen der Regex Klasse) werden in diesem Speicher abgelegt. Solche Herangehensweise beschleunigt die Arbeit von Skripts, denn es besteht keine Notwendigkeit, einen regulären Ausdruck zu erstellten, wenn sein Muster mit einem der vorhandenen übereinstimmt. Die Standardgröße des Speichers beträgt 15. Die Regex::CacheSize() Methode gibt zurück oder setzt eine maximale Anzahl an Einträgen im aktuellen statischen Cache-Speicher der kompilierten regulären Ausdrücken.
- Die zweite Besonderheit der Arbeit mit regulären Ausdrücken in MQL4 ist unmittelbar mit der ersten verbunden. Sie besteht darin, dass der oben beschriebene Speicher aufgeräumt werden muss. Dafür muss die statische Funktion Regex::ClearCache() aufgerufen werden. Es ist empfehlenswert, diese Funktion nur dann aufzurufen, wenn die Arbeit mit regulären Ausdrücken beendet wurde, sonst ist das Risiko sehr noch, notwendige Pointer zu löschen.
- Im Gegensatz zu .Net ist in MQL4 die foreach Schleife nicht umgesetzt, und daher unterscheidet sich die Arbeit mit Aufzählungen. Beispiel:
//--- 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) { //--- Bearbeitung } //--- 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(); //--- Bearbeitung } delete rx; delete matches; delete en; Regex::ClearCache();
- Aus dem Beispiel oben folgt, dass die Syntax der Programmiersprache C# erlaubt, das '@' Zeichen vor Zeilen zu setzen, um alle Formatierungszeichen in jeweiligen Zeile zu ignorieren. MQL4 bietet eine solche Herangehensweise nicht, aus diesem Grund müssen alle Kontrollzeichen im Muster regulärer Ausdrücke explizit definiert werden.
Bei der Arbeit mit dieser Form wählen wir die gewünschte Tabelle, Spalte und den Wert, nach dem die Tabelle gefiltert wird. Klicken Sie auf Find und die gefilterte Tabelle wird unten mit einigen statistischen Daten angezeigt. Der Save Button speichert die aktuell angezeigte Tabelle in einer CSV-Datei. Die gespeicherte Datei wird auch in der Sandbox unter dem Namen Result.csv abgelegt.
Um mehr über die Bibliothek RegularExpressions für MQL4 und ihre Möglichkeiten zu erfahren, nutzen Sie den Expert Advisor Tests.mqh. Der EA setzt viele Beispiele für reguläre Ausdrücke um, die die ganze Funktionsvielfalt der Bibliothek umfassen.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/16566
Not really profitable but the code fits on one page.
Previous Candle Hi-LoPrevious Candle Hi-Lo is used to check the last candle multi-timeframe position relative to the current price.
This custom indicator will show you 28 pair's daily candle range, High-Low range, candle bullishness or bearishness from real tick market. So you can understand the overall market situation very short time. You can change the default timeframe from Daily to any period and default candle (bar) number from 0 to any previous number. Also you can open the required symbol by clicking the symbol button.
BarNumbersDisplays the number of each bar - both, relative to the most current bar and in absolute terms from the beginning of the chart.