MetaTrader 5帮助算法交易, 交易机器人优化类型

优化类型

在测试器里拥有两种优化类别。您可以在策略测试器的 设置 选卡上选择适宜的一种。

慢速完整算法

在此模式下, 优化过程将根据 相应选卡 里选择的输入变量, 执行所有可能的组合。

这种方法是最精确的。不过, 智能交易系统运行所有可能的组合需要较长的时间。

快速遗传算法

这类优化基于搜索输入参数最佳值的遗传算法。这种类型比第一种快得多, 且品质几乎相同。慢速完整优化需要执行几年时间, 而用遗传算法只需执行几个小时。

每一个体都有一组特殊的遗传集合与它们的参数集合相对应。遗传优化机遇持续选择最 "适合的" 参数 (给出最佳结果的数值)。在一般形式里, 算法可用如下方式表达:

  • 从参数所有可能组合的总数里, 通过随机抽样选取两个种群 (集合);
  • 两组集合经过测试, 其中结果最佳的一组 (根据 优化准则) 被留下;
  • 集合成员彼此随机交叉, 经历随机突变和参数反转;
  • 后代根据最佳结果排序, 并交叉反复;
  • 只要结果有改善 (后代中的最佳结果比父辈中最佳的那个更好), 重复排序和交叉操作。如果 优化准则 值在若干次交叉中没有改进 (后代), 优化过程完毕。

测试运行次数

在遗传优化期间, 测试运行的数量要低很多, 提供更爽捷的优化。遗传优化启动之后, 测试运行的评估数量显示在 设置 选卡上。它按照以下公式计算:

种群大小 * (绝对后代数量 + 收敛评估的后代数量)

此处:

  • 种群大小 基于优化参数可能的组合数量计算, 可能的范围从 64 到 256;
  • 绝对后代数量 可能的范围从 15 到 31。它由存在的改进优化准则来定义。在所有优化里测试 15 代。如果在范围 15 和 31 之间的一代没有任何优化准则的改进, 下一代会启动收敛评估的额外测试。
  • 收敛评估的后代数量 以绝对后代数量的三分之一计算。如果绝对后代数量为 18 (第 17 代显示为最佳结果, 且 18 代未显示任何改进) 则测试另外 5 代: 第 18 代未显示任何改进, 那么对于收敛评估, 我们需要 18/3 = 6 代无任何改进的优化准则。如果指定数量的后代没有显示出任何改进, 优化停止。
  • 如果优化步骤的总数在 32-位系统上超过 1,000,000, 或者在 64-位系统上超过 100,000,000, 遗传优化模式自动启动。
  • 遗传优化期间, 每一代计算之后过渡结果保存在高速缓冲区里 (位于 平台_数据_文件夹/tester/cache/*.gen 的一个文件)。因此, 优化过程可以在任意时间中断。即使遗传优化过程被外部因素中断 (例如, 电源故障), 在下次启动后, 优化将会自动从最后一次计算的后代继续。遗传优化高速缓存区一直保留, 直到 优化设置 被改变或优化过程完毕。
  • 在正常的优化停止时 (当您按下 停止按钮) 所有之前已计算的运行结果得以保存。当恢复优化过程时, 它从上次计算的运行处继续。

优化准则 #

一个优化准则是确定因子, 其值定义一组测试组参数的质量。优化准则的数值越高, 给定参数集合的测试结果越佳。这些因子可在 设置 选卡里 "优化" 右侧的字段里选择。

优化准则只有遗传算法需要。

以下优化准则可用:

  • 最大余额 ― 余额数值最高。
  • 最大盈利因子利润因子的最大值。
  • 最大期望收益期望收益的最大值。
  • 最低回撤 ― 在这种情况下,考虑了 以百分比表示的结余 相对减少。
  • 最大采收率采收率的最大值。
  • 最大夏普比率夏普比率的最大值。
  • 自定义最大 ― 此处的优化准则是智能交易系统里 OnTester() 函数的数值。此参数允许使用任意自定义值对智能交易系统进行优化。

另一个选项就是使用“最大复杂标准”。这是测试通过质量的完整且复杂的衡量标准。它会衡量多个参数:

  • 成交数
  • 盈亏
  • 采收率
  • 期望收益
  • 夏普比率

通过使用这个标准,您可以看到就复杂分析而言,参数的最大值(例如盈利)并不总是最佳选择。复杂标准逐渐选择最优通过:首先根据成交数,然后根据期望收益、采收率等。新选项可以根据所有参数接收最佳优化通过。此外,您可以根据所需参数(例如最高盈利)选择最佳通过。

在市场观察里选择的所有品种

不像上述优化类型, 这种允许智能交易系统以相同的 输入参数进行测试, 但品种不同。只有 主要测试品种 才会在每次递进时改变, 即, EA 加载所在图表的品种。

优化的执行只针对当前在 市场观察 里选择的品种。所以, 您可以通过调整选定品种的集合来管理优化。

  • 请注意, 从服务器下载所需价格数据可能需要很长的时间。不过, 因下载数据而导致的优化降速只在该品种首次启动时发生, 之后只会下载缺失数据。
  • 在 "数值" 字段指定的 输入参数 当前值用于品种的优化。