欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

Input_Struct - MetaTrader 5 库

author emer | 458 人阅读 | 0 人评论 |

Input_Struct - library for 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 包含输入参数。}

突出显示的文本明显较少。同时,所有的方法都实现了。

Input_Struct - library for MetaTrader 5

请注意,使用 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

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录