今天我们来聊聊自动交易系统(ATS)Combo。这个系统的核心理念是结合现有的基础交易系统(BTS)和神经网络(NN),为交易者提供更全面的市场分析与交易决策。
基本上,BTS是一种基础交易系统,而我们需要通过训练神经网络来补充BTS的不足。正如古话所说:“不必重走老路”,我们并不需要重新发明轮子,而是利用现有的工具,让我们的交易策略更为完善。
首先,我们要建立一个跟随趋势的ATS,同时教会神经网络如何在逆势中进行交易。因为单靠趋势交易,系统可能会在横盘走势或者市场回调时失去机会。你当然可以使用两个ATS,一个用于跟随趋势,另一个用于逆势,但我们可以选择训练神经网络来增强现有的交易系统。
神经网络的结构与功能
我们设计了一个两层的神经网络,底层有两个感知器,上层有一个感知器。神经网络的输出可以有三种状态:
- 进入市场,做多
- 进入市场,做空
- 不确定状态
在第三种状态下,控制权会交还给BTS,而前两种状态则是由神经网络发出交易信号。
训练神经网络的步骤
训练神经网络分为三个阶段,每个阶段负责训练一个感知器。在每个阶段中,优化过的BTS必须在场,以便感知器知道它能做到什么。
第一阶段是优化BTS。在输入参数中,我们将记录阶段号,标识为“pass”。相应的输入标识符将与阶段号相同。
接下来,我们开始优化和训练神经网络。初始资金设置为1000000美元(为了避免在优化过程中出现虚假的保证金追缴),在策略测试器的“测试”标签下,优化输入设置为“余额”。
我们将在EA属性的“输入”标签中指定开仓手数,将“lots”的值设为1。优化将根据模型进行:“仅开盘价(最快的分析方法,仅适用于明确控制开盘的EA)”。
优化阶段
阶段1:BTS的优化
将“pass”的值设置为1。我们将只优化以1结尾的输入参数,也就是说,只检查这些输入。
- tp1 - BTS的止盈,优化范围为10到100,步长1
- sl1 - BTS的止损,优化范围为10到100,步长1
- p1 - BTS使用的CCI周期,优化范围为3到100,步长1
阶段2:训练负责做空的感知器
将“pass”的值设置为2。取消上一阶段优化的输入参数,并保存为文件。
根据规则检查以2结尾的输入:
- x12、x22、x32、x42 - 负责识别做空的感知器权重,优化范围为0到200,步长1
- tp2 - 感知器开仓的止盈,优化范围为10到100,步长1
- sl2 - 感知器开仓的止损,优化范围为10到100,步长1
- p2 - 感知器分析的价格差异周期,优化范围为3到100,步长1
开始使用遗传算法进行优化。
阶段3:训练负责做多的感知器
将“pass”的值设置为3,取消上一阶段优化的输入参数,并保存为文件。
检查以3结尾的输入:
- x13、x23、x33、x43 - 负责识别做多的感知器权重,优化范围为0到200,步长1
- tp3 - 感知器开仓的止盈,优化范围为10到100,步长1
- sl3 - 感知器开仓的止损,优化范围为10到100,步长1
- p3 - 感知器分析的价格差异周期,优化范围为3到100,步长1
开始使用遗传算法进行优化。
阶段4(最终阶段):训练第一层的感知器
将“pass”的值设置为4,取消上一阶段优化的输入参数,并保存为文件。
检查以4结尾的输入:
- x14、x24、x34、x44 - 第一层感知器的权重,优化范围为0到200,步长1
- p4 - 感知器分析的价格差异周期,优化范围为3到100,步长1
开始使用遗传算法进行优化。
至此,神经网络的训练就完成了。
需要注意的是,ATS还有一个不可优化的输入,mn - 魔术数字。这个数字用来标识订单,确保交易系统的订单不会与其他手动订单或其他ATS的订单混淆。魔术数字的值必须唯一,不能与未通过该特定专家顾问开设的订单的魔术数字相同。
附注:
- 初始资金的大小是双倍绝对回撤,即我们考虑了一些安全资金。
- 提供的EA源代码未经优化。
- 如果需要将内置BTS替换为其他交易系统的算法,则必须修改basicTradingSystem()函数的内容。
- 为了避免输入初始值和最终值以及优化步骤的繁琐过程,可以直接使用combo.set文件,将其放入 ester MT4文件夹中,然后在Tester中上传到EA属性中。
- EA的重新优化应在周末进行,即星期六或星期日,只有在前一周的结果不盈利时才需进行。亏损意味着市场发生了变化,需要重新优化;而盈利则表示ATS能够很好地识别市场模式,不需要重新优化。