Gold Dust - MetaTrader 5 专家 | 黄金EA下载 - MT4/MT5资源


想法来自 尤里·列舍托夫
mq5代码作者 - 巴拉巴什卡孔

一点理论
为了确定过度拟合的可能性,您可以使用所谓的经典前向测试,罗伯特·帕尔多(Robert Pardo)的书 [1] 中对此进行了描述。经典方法的思想如下:为交易系统选择两个不相交的历史区间。交易系统在其中一个间隔中进行优化,并在第二个间隔中执行第一个间隔中优化的参数的前向测试。如果在第二个(前向)历史间隔中的测试不成功,则交易系统被认为受到过度优化,并且不适合自动交易。如果前向测试给出肯定的结果,则执行额外的分析来检查测试间隔内的交易系统行为 - 这种分析可以识别系统特征。
但能够通过 Robert Pardo 的书 [1] 中描述的所有测试的系统实际上并不存在。因此作者没有给出具体的例子。一个间隔中的优化和不同间隔中的前向测试以及前向测试的进一步分析并不提供任何保证:
由于检查交易系统的经典方法有很多缺点,我开发并测试了另一种我认为更可靠的方法:金粉。
新方法与经典方法的区别在于,交易系统优化不是在一个区间内进行,而是在两个或多个区间内进行。因此,我们为每个区间获得不同的交易系统参数集。其中一些是相同的,另一些则不同。可能其中一些参数集过度优化,而另一些参数集则不然。这可以通过前向测试找到。
这能带来什么?
这里我们需要决定交易系统的稳健性。交易系统可能具有潜在的稳健性,即它们通过经典方法中的前向测试的概率高于零;并且不鲁棒,即过度拟合的可能性非常高。
我们在这里不会考虑非鲁棒交易系统,因为即使它们的信号基于一致性进行过滤,非优化区间的结果也不够稳定,无法进行交易。这样的交易系统更适合尝试。
让我们继续讨论一个强大的交易系统,该系统可在附件中找到。该交易系统基于未来价格方向预测,通过使用标准 MetaTrader 策略测试器遗传算法选择基本单层神经网络(基于历史数据的感知器)的权重系数来实现。
交易系统参数的优化、测试和稳健性检测方法
我们将在上半年时间范围内使用过去 9 个月或更长时间的 EURUSD 历史数据。让我们将整个时期分为三个独立的间隔,每个间隔三个月。第一个区间将用于最终测试,另外两个区间将用于历史优化。我将两个感知器组合成一个交易系统,因此无需每次都单独启动系统。
EA 代码中的 Supervisor() 切换器函数可启用三种 EA 操作模式,具体取决于“pass”输入参数:
正在优化感知器的以下权重系数:x11、x12 … x42,以及 MA:平均周期 和 止损。这 止损 输入参数对于所有间隔都是恒定的。这是所有未平仓头寸的止损水平。另一个输入参数 MA:平均周期 表示开盘价差异的滞后时间段;它也是恒定的。
市场进入是在新柱形成开始时执行的,即基于感知器信号的柱开盘价,具体取决于该柱的值经过范围。退出仅通过止损执行。使用遗传算法进行优化,该算法搜索极值(即我们案例中的最大平衡)。
为了避免追加保证金对算法的影响,初始金额应该很大,例如1,000,000美元。
第一阶段,我们需要确定
输入值的MA:平均周期和止损变量。为此,我们选择最后两个历史区间,即从 6 个月前到今天。设置感知器权重的所有参数,从 Start = 0 到 Stop = 100,步长为 10。MA:平均周期 从Start=3到Stop=100,步长为10;的值 止损 从 Start = 10 到 Stop =75,步长为 10。 值经过= 1. 选择优化参数:x11,x21,x31,x41, MA:平均周期 和 止损。所有其他复选框均应禁用。开始优化。之后根据最佳通道设置输入参数值。
第二阶段。优化第二历史数据区间中的第一感知器权重。设置优化日期和时间从 6 年前到 3 个月前。删除复选框MA:平均周期 和 止损。开始优化。之后根据最佳通道设置输入参数值。这经过值仍为 1。
第三阶段。优化第三历史数据区间中的第二感知器权重。设置从 3 个月前到今天的优化日期和时间。从参数中删除选择x11,x21,x31,x41并选择x12,x22,x32和x42。其他参数应禁用。放经过=2。开始优化。之后根据最佳通道设置输入参数值。
第四阶段。交易系统已经针对过去六个月的历史数据进行了优化。将输入参数的值保存到配置文件中。设置经过输入变量为 3。现在我们需要检查系统的稳健性,即输入参数没有过度拟合以及它们可能在非优化时间段内显示利润的概率。所以现在,我们设置 9 到 6 个月前的日期(在此区间内没有进行优化)并进行测试。
如果在模式 3 中测试结果为负(失败),那么我们很可能发现两个感知器的系数都过拟合。在这种情况下,我们需要再次进行优化,以获得第一阶段的sl和p参数的其他值——损失的可能原因可能就在这些参数中。失败的另一个原因可能是第一和第二优化阶段的交易数量较少(交易数量不应少于 100 笔)——在这种情况下,应减小 sl 参数的最大止损范围。
如果第四阶段成功,那么我们可以假设第一或第二感知器,甚至它们两者都可以在优化区间之外产生利润,因此可以用于交易。现在我们需要选择感知器。为此,我们将日期设置为从 9 个月前到当前日期,并以以下模式运行 EA 测试:经过1 和 2。
结果较好的模式很可能是过度拟合程度较低的模式,并且被认为适合交易。将 EA 切换到此模式,将 EA 设置保存到文件中。之后在图表上运行 EA,将时间范围设置为 H1 并从之前保存的文件中加载设置。
当然,为了确保这种交易系统稳健性检测方法确实有效,所有历史数据区间都应该移至历史深处,以便多获得一个额外区间并测试我们在该区间内设置的参数。
上述确定交易系统稳健性的方法并不简单。但与 Robert Pardo 的书 [1] 中描述的经典方法相比,它要简单得多,在大多数情况下也更可靠,因为它消除了前向测试后几乎无用且占用资源的交易系统分析。
参考文献列表
1.罗伯特·帕尔多。交易系统的设计、测试和优化。 - Minax,2002 年。 - 224 页。 ISBN 5-902270-01-4
附件下载
📎 gold_dust.mq5 (72.74 KB)
Source: MQL5 #23220
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
📌 热门专题入口
- •
- •
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •