無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

MQL4での正規表現の動作の為のRegularExpressions - MetaTrader 4のためのライブラリ

発行者:
MetaQuotes
ビュー:
2283
評価:
(30)
パブリッシュ済み:
2017.10.04 13:01
アップデート済み:
2018.09.12 10:02
\MQL4\Experts\RegExpressions Demo\
Tests.mq4 (139.5 KB) ビュー
\MQL4\Include\Internal\
Array.mqh (22.36 KB) ビュー
Wrappers.mqh (17.96 KB) ビュー
\MQL4\Include\Internal\Generic\
IList.mqh (5.7 KB) ビュー
List.mqh (38.77 KB) ビュー
\MQL4\Include\Internal\TimeSpan\ \MQL4\Include\RegularExpressions\
Regex.mqh (57.05 KB) ビュー
RegexFCD.mqh (31.25 KB) ビュー
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

実際の制作者:

Microsoft Corporation. ソースコードは.Net Framework 4.6.1から転載されています。 

備考:ライブラリは、MetaTrader 4のビルド1384以降で動作します。

動作の為には、アーカイブをterminal_data_folderフォルダ
に解凍する必要があります。ライブラリのコードはフォルダに格納されます: <terminal_data_folder>\MQL4\Include\RegularExpressions\
テストスクリプトの例はフォルダで見ることができます: <terminal_data_folder>\MQL4\Scripts\RegularExpressionsExamples\

ここでは、.Net Framework 4.6.1からRegularExpressionsへの翻訳が掲載されています。

ライブラリの使用には、\MQL4\Include\RegularExpressions\ディレクトリのRegex.mqhファイルをあなたのコードに接続する必要があります。

また、ライブラリと一緒に一度にテストケースの役割を実行するいくつかのデモンストレーション例が含まれています。全ての例はMicrosoft Corporationの公式サイトより転載されており、これらの例はC#正規表現とMQL4での使用の特徴との、主要な違いを明確に示しています。

MQL4 RegularExpressionsの詳細は以下の通りです。

パッケージ
詳細
CharUnicodeInfo.mqh
全ての文字列(非ラテン文字を含む)のUnicodeカテゴリを定義する為のアーカイブされたtxt。
RegexCapture.mqh
表現の一部の一つの成功記録の結果を表示します。
RegexCaptureCollection.mqh
一つのグループによって作成された記録のセットが表示されます。
RegexGroup.mqh
個別のグループの記録結果を表します。
RegexGroupCollections.mqh一つの照合での記録されたグループのセットを返します。
RegexMatch.mqh正規表現の個別照合の結果を表示します。
RegexMatchCollection.mqh入力文字列への正規表現パターンの反復適用によって判定された成功照合のセットを表します。
Regex.mqh不変正規表現を表します。
RegexOptions.mqh 正規表現パラメータ設定時に使用する為の列挙値を表示します。

RegexOptions.mqhファイルの正規表現パラメータ:

パラメータ
詳細
None
パラメータは設定されていません。
IgnoreCase
大文字小文字の違いを無視します。
Multiline複数行モードを指定します。
ExplicitCapture名前のあるグループを取得しません。明示的に名前または番号を指定したグループのみをキャプチャします。(?<名前> 表現の一部)
Singleline単一行モードにします。
IgnorePatternWhitespaceエスケープされない空白をパターンから除外し、#でマークされたコメントを入れます。
RightToLeft検索の方向を左から右ではなく、右から左にします。
Debugプログラムが、デバッガの下で動作していることを示します
ECMAScriptECMAScript互換の動作にします。この値はIgnoreCaseMultilineと一緒に使用することができます。


MQL4の為のRegularExpressionsの動作の特徴:

  1. .Netバージョンと同様に、このライブラリでは正規表現のストレージ(静的キャッシュメモリ)が実装されています。全ての暗黙的に作成された正規表現(Regexクラスのコピー)は、このストレージに格納されます。このアプローチはスクリプトの動作を高速化し、既存のいずれかと一致する場合、正規表現パターンを再構築する必要はありません。デフォルトのストレージサイズは15です。Regex::CacheSize()メソッドは、コンパイルされた正規表現の現在の静的キャッシュ内の最大エントリー数を取得または設定します。
  2. MQL4で正規表現を扱う際の二つ目の特徴は、一つ目から直接続いています。そして、それは上記で触れたストレージをクリーニングする必要があるという点にあります。この為には静的関数Regex::ClearCache()を呼び出す必要があります。この関数は、必要な指標を失う可能性が大きい為、正規表現の使用を完了した後に呼び出すことを勧められています。
  3. .Netとは異なり、MQL4ではforeachサイクルは実装されておらず、従って、列挙値の使用が異なります。例:
    //--- 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();
    
  4. 上記の例から分かるように、C#言語構文はその中の全ての書式設定マークを無視する為に、文字列の前に「@」記号を配置することができます。MQL4では、このようなアプローチは想定されていないので、正規表現パターン内の全ての制御文字は、明示的に書く必要があります。

このフォームを使用する時、私達は興味のあるリストを選択し、リストがフィルタリングされる列と数値を選択します。Findボタンを押すと、いくつかの統計とともにフィルタリングされたリストが下に表示されます。Save ボタンは、現在表示されているリストをcsvファイルへ保存します。保存されたファイルは、サンドボックスにも配置され、Result.csvの名前を持ちます。

MQL4用RegularExpressionsのより詳細に知る為、またその機能でエキスパートアドバイザTests.mqhが作成されました。ここでは、ライブラリ全体の基本的な機能に働きかける、正規表現の使用例の多くが実装されています。

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/16566

Engulfing with RSI Engulfing with RSI

Not really profitable but the code fits on one page.

Previous Candle Hi-Lo Previous Candle Hi-Lo

Previous Candle Hi-Lo is used to check the last candle multi-timeframe position relative to the current price.

Symbol Movement Symbol Movement

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.

BarNumbers BarNumbers

Displays the number of each bar - both, relative to the most current bar and in absolute terms from the beginning of the chart.