Примечание: Библиотека работает на MetaTrader 4 build 1384 и выше.
Для работы нужно распаковать архив в папку каталог_данных_терминала.
Коды библиотеки размещаются в папке: <каталог_данных_терминала>\MQL4\Include\RegularExpressions\
Примеры тестовых скриптов размещаются в папке: <каталог_данных_терминала>\MQL4\Experts\RegExpressions Demo\Tests.m4
Регулярные выражения предоставляют формальный язык для быстрой и гибкой обработки текста. Каждое регулярное выражение является шаблоном(маской), для которого обработчик регулярных выражений пытается найти совпадения в исходном текстом. Шаблон состоит из односимвольных или многосимвольных литералов, операторов или конструкций.
Для реализации обработчика регулярных выражений в .NET Framework используется традиционная NFA-машина (NonDeterministic Finite-state Automaton – недетерминированные конечные автоматы), которая выполняет поиск с возвратом для регулярных выражений. Аналогичные обработчик регулярных выражений использовались в Perl, Python, Emacs и Tcl. Использование NFA-машины отличает его от более быстрых, но и менее функциональных DFA-машин (детерминированный конечный автомат), предназначенных только для регулярных выражений и используемых в awk, egrep или lex.
Обработчик регулярных выражений .NET Framework имеет в себе основные функции NFA-машины, а также полный набор структурных элементов, позволяющий управлять процессом поиска с возвратом. Используя данные структуры программист имеет возможность для существенного ускорения поиска или для выбора предпочтительных расширений.
Основные возможности обработчика регулярных выражений .NET Framework:
Ленивые кванторы: ??, *?, +?, {n,m}?.
Положительный поиск: (?=subexpression).
Отрицательный поиск: (?!subexpression).
Условная оценка: (?(expression)yes|no) and (?(name)yes"> no ) и (?(name)yes|no) ).
Сбалансированные определения групп: (?<name1-name2> subexpression).
Не возвращающаяся ("жадная") часть выражения: (?>subexpression).
Поиск совпадений справа налево. Для этого в метод сопоставления статических экземпляров или в сам конструктор класса Regex передаем параметер RegexOptions::RightToLeft.
Положительный и отрицательный поиск назад: (?<=subexpression) для положительного поиска назад и (?<!subexpression) для отрицательного поиска назад.
С данной библиотекой все эти возможности будут доступны средствами языка MQL4.
Описание:
Здесь представлен перевод RegularExpressions c .Net Framework 4.6.1.
Для работы с библиотекой необходимо подключить к вашему коду файл Regex.mqh из директории \MQL4\Include\RegularExpressions\.
Также вместе с библиотекой прилагается несколько демонстрационных примеров, одновременно выполняющих роль тест-кейсов. Все примеры взяты с официального сайта Microsoft Corporation, они наглядно показывают основные отличия от регулярных выражений на C# и особенности использования их на MQL4.
Подробнее о пакетах портированной библиотеки RegularExpressions MQL4:
| Пакеты | Описание |
|---|---|
| CharUnicodeInfo.mqh | Заархивированный txt для определения Unicode-категорий для всех символов (включая и нелатинские символы). |
| RegexCapture.mqh | Представляет результаты одной успешной записи части выражения. |
| RegexCaptureCollection.mqh | Представляет набор записей, сделанных одной группой записи. |
| RegexGroup.mqh | Представляет результаты отдельной группы записи. |
| RegexGroupCollections.mqh | Возвращает набор записанных групп в одном сопоставлении. |
| RegexMatch.mqh | Представляет результаты из отдельного совпадения регулярного выражения. |
| RegexMatchCollection.mqh | Представляет набор успешных совпадений, обнаруженных путем итеративного применения шаблона регулярного выражения к входной строке. |
| Regex.mqh | Представляет неизменяемое регулярное выражение. |
| RegexOptions.mqh | Предоставляет перечисленные значения для использования при задании параметров регулярных выражений. |
Параметры регулярных выражений из файла RegexOptions.mqh:
| Параметр | Описание |
|---|---|
| None | Параметры не установлены. |
| IgnoreCase | Регистр при поиске совпадений не учитывается. |
| Multiline | Указывает многострочный режим. |
| ExplicitCapture | Не захватывать неименованные группы. Единственные допустимые выделения — это явно именованные или нумерованные группы в формате (?<имя> часть выражения). |
| Singleline | Указывает однострочный режим. |
| IgnorePatternWhitespace | Устраняет из шаблона разделительные символы без escape-последовательности и включает комментарии, помеченные символом "#". |
| RightToLeft | Указывает, что поиск будет выполнен в направлении справа налево, а не слева направо. |
| Debug | Указывает, что программа работает под отладчиком. |
| ECMAScript | Включает ECMAScript-совместимое поведение для выражения. Это значение может быть использовано только вместе со значениями IgnoreCase и Multiline. |
//--- Код на 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) { //--- обработка }
//--- Код на 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(); //--- обработка } delete rx; delete matches; delete en; Regex::ClearCache();
Для более подробного ознакомления с библиотекой RegularExpressions для MQL4 и её возможностями создан эксперт Tests.mqh. В нем реализовано больше количество примеров использования регулярных выражений, затрагивающие весь основной функционал библиотеки.

CWebRequest
Класс-обертка для функции WebRequest.
MTF MovingAverage Double
Простой вариант построения средней для текущего/старшего временного периода, сразу отображаются две средних, рассчитанных по данным указанными в параметрах.
Паттерн поглощения в тренде
Построение тренда с применением паттерна поглощения
InfoPanel
InfoPanel - информационный индикатор по символу, на который он установлен.