首页 系统交易 帖子

MTC组合 - 为MetaTrader 5打造的智能交易系统

附件
16762.zip (3.54 KB, 下载 0次)

本文将介绍MTC组合的智能交易系统(EA),并分享一些小编辑,因为现在的货币对已经采用五位小数。

EA的目标如下:

假设我们有一个 基础交易系统BTS),我们需要设计并训练一个 神经网络NN),以便它能补充BTS,执行后者无法完成的操作。因此,我们将获得一个由BTS和NN组合而成的交易系统。

没有必要重新发明轮子,轮子早已被发明出来。假如有车,何必教人跑得快;有直升机,何必教人飞?

如果我们有一个趋势交易系统,则只需教会神经网络反趋势策略。趋势系统无法在震荡市中交易,也无法准确识别回调和反转。当然,我们可以使用两种交易策略(趋势和反趋势)并在同一个图表中同时运行,或者训练神经网络,使其补充交易系统。

为此,我们开发了一个包含两层的神经网络,底层有两个感知器,顶层有一个感知器。

神经网络可能处于三种状态之一:

  1. 做多
  2. 做空
  3. 未定义

第三种状态意味着控制权交给BTS,而前两种状态则由网络生成交易信号。

神经网络的训练分为三个阶段。在每个阶段中训练一个感知器。优化后的BTS在每个阶段都在,以便让感知器了解它可以做什么。

使用遗传算法单独训练感知器是由于算法的一个缺点,即可选参数的数量有限。无论如何,每个训练阶段都是逻辑一致的,神经网络也不是很庞大,因此整个优化过程在合理的时间内完成。

但在NN训练之前的第一个阶段是为了优化BTS。

为了避免混淆,阶段编号在EA输入中通过“pass” ID指明。与阶段编号对应的输入ID以该数字结尾。

让我们为NN优化和训练做准备。

将测试器中的初始存款设置为100美元(以免在优化过程中产生虚假的保证金呼叫),优化“Balance + max Sharpe Ratio”参数,选择“快速遗传算法”优化类型。

现在,转到EA属性的输入选项卡。
通过将“lots” ID的值设置为0.01来设置开仓头寸的手数。

优化将根据“仅开放价格”模型进行。这种方法因其高速而被选择。此外,EA算法具备新条管理功能。

第一阶段:BTS优化:

将pass设置为1。
仅优化与第一阶段相对应的输入,其ID以1结尾。因此,只在这些参数上设置优化标记,去掉其他参数的标记。

tp1 - BTS止盈。优化值范围为100到1000,步长为10。
sl1 - BTS止损。优化值范围为100到1000,步长为10。
p1 - 在BTS中应用的CCI振荡器周期。优化值范围为3到100,步长为1。

开始通过遗传算法优化进行训练。

第二阶段:训练负责做空头寸的感知器:

将“pass”输入设置为2(以便与阶段编号匹配)。
去掉在前一阶段设置的优化标记。将前一阶段获得的输入保存到文件中以备不时之需。

为第二阶段参数(ID以2结尾)设置优化标记:

x12, x22, x32, x42 - 识别做空头寸的感知器的权重比。优化值范围为0到200,步长为1。
tp2 - 由感知器打开的头寸的止盈。优化值范围为100到1000,步长为10。
sl2 - 由感知器打开的头寸的止损。优化值范围为100到1000,步长为10。
p2 - 感知器分析的价格差值周期。优化值范围为3到100,步长为1。

开始通过遗传算法优化进行训练。

第三阶段:训练负责做多头寸的感知器:

将“pass”输入设置为3(以便与阶段编号匹配)。
去掉在前一阶段设置的优化标记。
将前一阶段获得的输入保存到文件中以备不时之需。

为第三阶段参数(ID以3结尾)设置优化标记:

x13, x23, x33, x43 - 识别做多头寸的感知器的权重比。优化值范围为0到200,步长为1。
tp3 - 由感知器打开的头寸的止盈。优化值范围为100到1000,步长为10。
sl3 - 由感知器打开的头寸的止损。优化值范围为100到1000,步长为10。
p3 - 感知器分析的价格差值周期。优化值范围为3到100,步长为1。

开始通过遗传算法优化进行训练。

最后第四阶段:

训练第一层(上层感知器):

将“pass”输入设置为4(以便与阶段编号匹配)。
去掉在前一阶段设置的优化标记。
将前一阶段获得的输入保存到文件中以备不时之需。

为第四阶段参数(ID以4结尾)设置优化标记:

x14, x24, x34, x44 - 第一层感知器的权重比。优化值范围为0到200,步长为1。
p4 - 感知器分析的价格差值周期。优化值范围为3到100,步长为1。

开始通过遗传算法优化进行训练。

以上就是。神经网络已完成训练。

EA还有一个不可优化的“mn”输入 - 魔法数字,允许系统在手动或其他EA打开的订单中区分自己的订单。魔法数字应是唯一的。

P.S.

  • 初始存款大小定义为绝对回撤乘以二(安全边际)。
  • EA的源代码尚未优化。
  • 如果想用另一种交易系统的算法替换内置的BTS,请更改basicTradingSystem()函数的内容。
  • 如果上周的结果不盈利,请在周末重新优化EA。亏损信号表明市场发生了变化,需要重新优化。如果EA盈利,则无需重新优化,因为机器人已能很好地识别市场模式。

相关帖子

评论 (0)