使用伪智能交易程序(EA)提高智能交易程序优化效率(含mql4代码)

   带有多个指标的智能交易程序需要花费大量时间来组合参数进行测试。为了减少组合的数量,我们可以编写伪智能交易程序(EA)。伪 EA 只针对行情查询特殊问题,不用于交易。我们可以将一个大问题细分为一个个小问题,并分别解决它们。

    例如,我们可以选择ADX指标,检查它是否能够区分横盘行情和趋势行情。如果可以,我们也许能够获得额外的信息。

     假设我们有一个短线交易 EA,它根据行情是否横盘来进行「振荡交易」(回至移动均线)或「顺势交易」(沿着移动均线交易)。为了区分,我们的交易 EA 应在较高的时间帧使用 ADX(此处是 1 小时柱线)。除了 ADX 外,交易 EA 也许还有 5 个指标(用于短线交易管理)。每个指标大约有 4 个设置参数,并且由于它们的步长较小所以它们当中的每一个都有 2000 个不同的数值。这将总计产生 200054 = 40,000。让我们现在来加入 ADX。对于 ADX 的每个参数组合,理论上,我们要进行额外的 40,000 次计算。

    但是,如果我们首先使用伪 EA 来检查 ADX 指标的性能,我们可以减少需要进行的计算次数。我们可以使用伪 EA 来生成 ADX 指标的输出,然后使用这些输出来训练一个机器学习模型。机器学习模型可以学习如何区分横盘行情和趋势行情,而无需进行大量的计算。

    一旦我们训练了机器学习模型,我们就可以将它应用到我们的交易 EA 中。机器学习模型可以帮助我们自动选择参数,这将大大减少需要进行的计算次数。

     这种方法可以帮助我们快速有效地优化智能交易程序。我们可以使用伪 EA 来生成输出,然后使用这些输出来训练机器学习模型。机器学习模型可以帮助我们自动选择参数,这将大大减少需要进行的计算次数

我们建立的伪 EA 不进行交易。它只实现了三个重要功能:

  • OnTick(): 在此函数中,我们查验指标并判断行情状态。
  • OnTester(): 在此函数中,我们输出最终结果到我们的 CSV 文件。
  • calcOptVal(): 在此函数中,我们计算 OptVal 值,它将由 OnTester() 返回到策略测试器用于排序和遗传算法。

函数 OnTester() 将在一次优化过程的结尾调用,返回一个特殊值,并且它在 CSV 文件中添加一个新行,用来在整个优化完成后进行分析。

下载本文EA otimIndi_Publ.mq4

关注作者正在打造的两个EA:

Easy Deal.ex4https://blog.csdn.net/aa84758481/article/details/128343585

Nerve Knife.ex4https://blog.csdn.net/aa84758481/article/details/126648698

猜你喜欢

转载自blog.csdn.net/aa84758481/article/details/132035257
今日推荐