请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

EA

MTC Сombo - MetaTrader 5EA

Reshetov | Chinese English Русский Español Deutsch 日本語 Português

发布者:
Vladimir Karputov
显示:
863
等级:
投票: 23
已发布:
2017.02.06 12:40
已更新:
2018.06.27 15:57

以下是作者的描述,我做了少许修改,因为现今已经在货币对中大量使用5位小数了。

EA的目标如下:

假定我们有一个基本交易系统 (BTS),我们应该设计和训练一个神经网络 (NN),这样它就可以协助 BTS 进行它所不能做的工作。结果,我们就能得到一个包含两个组件的交易系统,相互辅助的 BTS 和 NN。

没必要重新发明轮子的,因为它们早已发明。如果有了汽车,飞机或者直升飞机,就没有必要让人去快跑了。 

如果我们有了一个趋势交易系统,只要训练神经网络执行反趋势策略。系统在有趋势的市场有用,不能在平盘中交易,也不能定义回滚和反转。当然,我们可以使用两种交易策略 (顺势和逆势的) 并且在一个图表上运行它们,另一方面,我们也可以训练神经网络来辅助一个交易系统。

为此,我们开发了两层神经网络,包含了两个底层感知机和一个上层感知机。该神经网络可以有三种状态中的一种:

  1. 进场买入
  2. 进场卖出
  3. 不确定

第三种状态的意思是控制传递给 BTS, 而在前两种状态下网络会生成信号。

神经网络的训练分成三步,每步训练它们中的一层。每步训练中都要使用优化过的 BTS,这样感知机就能知道它可以做什么。

使用遗传算法把感知机的训练分开会是由算法的缺点造成的,这样可以有助于选择较少数量的参数。但是,每个训练步骤在逻辑上都是稳定的,而神经网络不是很大,这样整个优化过程会在合理的有限时间内完成。

但是在神经网络训练之前,应该进行 BTS 的优化,

为了避免混淆,步骤的编号在EA的输入参数中使用 "pass" ID 来指定。输入参数中的 ID 对应了训练步骤的编号。

让我们为神经网络优化和训练做前期准备.

测试器中的初始存款设为 $100 (在优化过程中不要创建人为爆仓), 优化参数为 "余额 + 最大夏普比率", "快速遗传算法"优化类型。 

现在,到 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 (这样它就与步骤编号匹配). 
删除前一步的优化标记,把前一步得到的输入参数保存到文件中以防万一,

设置第二步参数的优化标记 (以2作结尾的ID):

x12, x22, x32, x42 - 识别卖出仓位的感知机权重比例。优化数值范围是从 0 到 200,步长为 1.
tp2 - 由感知机建仓的获利,优化数值范围是从 100 到 1000,步长为 10
sl2 - 由感知机建仓的止损,优化数值范围是从 100 到 1000,步长为 10
p2 - 分析的感知机的不同价格的周期数,优化数值范围是从 3 到 100,步长为 1。

开始通过快速遗传算法进行优化。

第三个步骤,训练用于建立买入仓位的感知机:

把 'pass' 输入参数设为 3 (这样它就和步骤编号匹配了). 
把前一步的优化标记删除, 
把前一步得到的输入参数保存到文件中以防万一,

设置第三步参数的优化标记 (以3做结尾的ID):

x13, x23, x33, x43 - 用于识别买入仓位的感知机的权重,优化数值范围是从 0 到 200,步长为 1.
tp3 - 由感知机建仓的获利,优化数值范围是从 100 到 1000,步长为 10
sl3 - 由感知机建仓的止损,优化数值范围是从 100 到 1000,步长为 10
p3 - 分析感知机价格差异的周期数,优化数值范围是从 3 到 100,步长为 1。

开始通过快速遗传算法进行优化。 

最后的第四步,

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

把 'pass' 输入参数设为 4 (这样它就与步骤编号匹配了)。 
把前一步的优化标记删除, 
把前一步得到的输入参数保存到文件中以防万一,

设置用于第四个优化步骤的优化标记 (以4做结尾的ID):

x14, x24, x34, x44 - 第一层感知机的权重比率,优化数值范围是从 0 到 200,步长为 1.
p4 - 由感知机分析不同价格的周期数,优化数值范围是从 3 到 100,步长为 1。

开始通过快速遗传算法进行优化。 

这就是全部了,神经网络已经训练好了。

EA 还有一个无法优化的 'mn' 输入参数 - 幻数,用于把它自己系统的订单与其他EA或者人工交易的订单区分开来。幻数应该是唯一的。

补充说明

  • 初始存款的大小定义为绝对回撤乘以2 (保证账户保证金安全). 
  • EA 的源代码还没有优化 
  • 如果您想要替换内建的 BTS,使用其他的交易系统算法,就要改掉 basicTradingSystem() 函数的内容
  • 如果前一周的结果是未能盈利的,要在周末重新优化EA。市场有变化的亏损信号,就需要重新优化。如果 EA 是获利的,就不需要重新优化,因为EA很好地识别了市场的模式。


本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/16762

MFI_Histogram_Round_HTF MFI_Histogram_Round_HTF

在输入参数中带有时段选择选项的 MFI_Histogram_Round 指标。

Exp_GTakeProfit Exp_GTakeProfit

本EA交易在总利润超过预先定义的限制时关闭所有仓位。

Exp_GStop Exp_GStop

本EA交易在总亏损/利润超过预先定义的限制时会关闭所有仓位。

WPR_Histogram_Round_HTF WPR_Histogram_Round_HTF

在输入参数中带有时段选择选项的 WPR_Histogram_Round 指标。