Input_Struct - MetaTrader 5 库

该库减少了使用输入参数时的常规操作。
作为使用示例,我们以交易顾问为例。在编写交易逻辑时使用 OOP 方法是合理的,因为它可以更轻松地将 EA 嵌入到更复杂的系统中。
从架构上来说,测试人员的 OOP 顾问看起来像这样。
班级系统 {民众: 虚拟的 空白 勾选() {} // 输入数据以字符串形式输出。 虚拟的 细绳转字符串(空白)常量=无效的; // 输入数据由字符串指定。 虚拟的 整数来自字符串(常量 细绳力 ) =无效的; }; 系统* 系统 =无效的;空白 初始化时() { 系统=新的系统; }空白 勾选() { 系统。勾选(); }空白 解初始化(常量 整数) { 删除系统; }
该 EA 不执行任何操作。但是,当涉及到不涉及交易逻辑而仅涉及输入参数时,代码会严重增长,这会降低可读性并增加出错的可能性。事实上,你需要执行不愉快的日常工作。
让我们稍微转向一下代码中突出显示的行。
交易实践表明,以字符串形式保存/读取输入参数是很方便的,这样您就可以快速清晰地看到您感兴趣(找到)的输入参数组。
金额=1, 计数 =2,时期=3, 科夫 =4.5, 对数 =6.7, 标志 =真的金额=2, 计数 =3,时期=4, 科夫 =4.56, 对数 =7.89, 标志 =错误的
例如,上面的文本中有两组输入参数。
输入 整数金额 =1;输入 整数计数 =2;输入 整数期间 =3; 输入 双倍的在科夫 =4.56;输入 双倍的输入日志 =7.89; 输入 布尔值标志=真的;结构体输入结构 { 整数数量; 整数数数; 整数 时期; 双倍的科夫; 双倍的日志; 布尔值旗帜; 细绳转字符串(空白)常量 { 细绳强度=无效的; #定义TOSTRING(A) Str += (::字符串长度(Str)?“,”:无效的) +#一个+”=“+ (细绳)(这。一个); TOSTRING(金额); TOSTRING(计数); 托字符串(时期); TOSTRING(科夫); TOSTRING(日志); TOSTRING(标志); #undef托斯特林 返回(Str); } // 没有开始写。 整数来自字符串(常量 细绳) { 返回(0); } inInputs = {inAmount, inCount, inPeriod, inKoef, inLog, inFlag}; #包括空白例子::勾选(空白) { // 系统代码... // this.Inputs 包含输入参数。}
上面的繁琐代码是相同的空 EA,但仅添加了处理输入参数的功能(突出显示的文本)。代码令人不愉快,甚至没有实现重要的INPUT_STRUCT::FromString方法。
如果要添加/删除一个输入参数,则必须在这段代码的五个地方进行相应的更改。每次都是如此!
#包括// 输入参数的结构。输入中的 INPUT_STRUCT; 宏输入(整数, 数量,1); 宏输入(整数, 数数,2); 宏输入(整数,时期,3); 宏输入(双倍的,科夫,4.56); 宏输入(双倍的, 日志,7.89); 宏输入(布尔值, 旗帜,真的); #包括空白例子::勾选(空白) { // 系统代码... // this.Inputs 包含输入参数。}
突出显示的文本明显较少。同时,所有的方法都实现了。

请注意,使用 OOP 方法,可以在 mqh 文件中隐藏大量重复文本 - 正如上面两个示例中所做的那样。 OOP也可以简洁。
EA 交易根据其输入参数中指定的时间处理挂单 Buy Stop 和 Sell Stop。
最简单的 EA 交易,可分析给定数量的柱上的价格变动并开立相应的仓位。
该指标是根据论坛请求编写的。
一个基于布林带的简单指标,用红色/绿色显示其收窄和加宽阶段。
附件下载
📎 system.mqh (0.48 KB)
📎 example.mqh (0.46 KB)
📎 example_ontick.mqh (0.62 KB)
📎 Input_Struct.mqh (43.33 KB)
📎 input_string_example_classic.mq5 (1.74 KB)
📎 Input_String_Example_Alternative.mq5 (1.41 KB)
Source: MQL5 #47932
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
