请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

程序库

用来处理正则表达式的MQL4 RegularExpressions - MetaTrader 4程序库

Microsoft Corporation | Chinese English Русский Español Deutsch 日本語 Português

发布者:
MetaQuotes Software Corp.
显示:
1761
等级:
投票: 21
已发布:
2017.10.04 12:18
已更新:
2018.09.12 09:59
\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\
TimeSpan.mqh (31.7 KB)预览
\MQL4\Include\RegularExpressions\
Regex.mqh (57.05 KB)预览
RegexCode.mqh (22.25 KB)预览
RegexFCD.mqh (31.25 KB)预览
RegexNode.mqh (32.45 KB)预览

真正的作者:

Microsoft Corporation. 源代码来自.Net Framework 4.6.1。 

注意:程序库适用于MetaTrader 4 build 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
存档 txt 文件以确定所有符号的Unicode类别(包括非拉丁字符)。
RegexCapture.mqh
表示一个成功子表达式获得的结果。
RegexCaptureCollection.mqh
表示由一个要匹配的组完成的采集设置。
RegexGroup.mqh
表示来自一个要匹配的组的结果。
RegexGroupCollections.mqh表示组对象的集合。
RegexMatch.mqh表示来自一个正则表达式匹配的结果。
RegexMatchCollection.mqh表示通过迭代应用正则表达式模式到输入字符串所发现的成功匹配集合。
Regex.mqh表示一个不可变的正则表达式
RegexOptions.mqh 提供用于设置正则表达式选项的枚举值。

来自RegexOptions.mqh文件的正则表达式参数:

参数
描述
None
指定没有 选项设置。
IgnoreCase
说明不区分大小写匹配。
Multiline指定多行模式。
ExplicitCapture不收集未命名的组。 指定唯一有效采集是(?<name> subexpression)表格的明确命名或编号的组。
Singleline指定单行模式。
IgnorePatternWhitespace消除模式费转义的空白区,启用#标记的评论。
RightToLeft指定从右向左搜索,而不是从左向右。
Debug指定 程序 工作 在调试模式
ECMAScript为表达式启用ECMAScript-compliant 行为。该值只能用于结合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,不提供这个方法,所以正则表达式模式中所有控制字符都应该明确定义。

使用该格式时,选择所需的表格,选择筛选表格的列和值。按下查找 按键,筛选的表格将显示在下方,并包括一些统计数据。 保存 按键存储当前显示的表格到csv 文件。已保存的文件也将位于沙箱,命名为 Result.csv

要了解有关 MQL4 RegularExpressions 和其功能的更多信息,请使用提供的 Tests.mqh 专家。它实施了大量的正则表达式的使用示例,涵盖了程序库所有的主要功能。

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/16566

简单的均线EA 简单的均线EA

维加斯通道给方向,15EMA,50SMA交叉进出场。

Price Speed Indicator Price Speed Indicator

价格的速度和加速度指标

观测趋势利器---均线通道 观测趋势利器---均线通道

针对不同品种,不同周期需要调节指标值。

显示当前K线剩余时间 显示当前K线剩余时间

这个指标的作用是显示当前K线剩余时间。