黄金形态通APP下载

自动交易系统合集

jayMetaTrader 4 EA交易5年前 (2021-07-03)51
ATS 基于经典的趋势跟随策略, 并经双层神经网络训练, 逆势入场。 - 在MQL5代码库免费下载MetaTrader 4的'自动交易系统 "合集"' ('Reshetov')EA, 2016.03.29...

自动交易系统 (ATS) 的问题陈述如下:

试想我们已有一个基本交易系统 - BTS。有必要创建并训练一个神级网络来做事情, 但 BTS 不能胜任这个任务。必然结果是创建一个交易系统, 由两种组合构成, 且系统互补: BTS 和 NN (神经网络)。

或是, 像英文谚语所说: 没必要再去发现大陆, 它们都已经被发现。为什么要教导一些人跑得快些, 如果我们有一辆车, 或者飞翔, 如果我们有一架飞机?

一旦我们拥有一款趋势跟随 ATS, 我们仅需教导神经网络逆势策略。这是必然的, 因为一个目的在趋势基础上进行交易的系统, 不能在盘整, 或者识别出行情回撤或翻转时交易。您可以, 当然, 利用两个 ATS - 一个跟随趋势, 另一个逆势 - 并挂载到同一图表上。另一面, 您可以训练一个神经网络来补充您已存在的交易系统。

为此目的, 我们设计一个两层神经网络, 其构成在下层有两个感知, 在上层有一个感知。

神经网络的输出可以是这三种状态之一:

入场做多入场做空过渡状态实际上, 第三种状态是在 BTS 之上传递的控制状态, 而开头的二种状态是神经网络给出的交易信号。

神经网络训练划分为三个阶段, 每个阶段用于训练一种感知。在任何阶段, 优化的 BTS 必须要让感知明白可以做什么。

通过遗传算法单独训练感知是由算法缺乏确定的, 亦即: 在该算法的帮助下搜索输入数量是有限的。不过, 每个训练阶段是连贯的, 且神经网络不是很大, 所以整个优化不会花费太多时间。

在最初阶段, 训练神经网络之前, 包括在 BTS 的优化。

为了不会遗失自我, 我们将在 ATS 的输入里记录阶段号码, 标识为 "pass"。相应于阶段号码的输入标识将等于此阶段号码。

所以, 开始准备优化并训练神经网络。让我们来设置初始存款为 $1000000 (为了不会在优化期间产生假的爆仓), 并且在策略测试器里的 EA 属性 "测试" 栏将输入优化为 "余额", 然后开始遗传优化。

进入 EA 属性的 "输入" 栏, 并指定开仓交易量为 1 手。

优化执行将会遵照模型: "仅开盘价 (最快速的方法来分析刚完成的柱线, 仅用于 EA 明确控制柱线开盘)", 因为这个方法在 ATS 算法里可用。

优化阶段 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 开仓的魔幻数字冲突。

附言,

初始存款大小应是绝对回撤的两倍, 即, 我们认为的安全资源。

此 EA 给出的源代码未优化。

如果您需要用其它交易系统的算法替换内置的 BTS, 您必须修改函数 basicTradingSystem() 的内容。

为了免于输入优化步骤的初始和最终值, 您可以采用现成的文件e combo.set, 将其置于文件夹 \tester MT4, 并在测试器的 EA 属性里加载它。

在周末重新运行 EA 优化, 即, 在周六或周日, 但是只在前一周的结果不盈利时。亏损的存在意味着市场已经变化, 且重优化是必需的。盈利的存在意味着 ATS 不需要任何重新优化, 并识别市场形态十分良好。

----------------------

打包下載:ZIP下載

----------------------

您暂未设置收款码

请在主题配置——文章设置里上传

扫描二维码手机访问