这款专家顾问(EA)是基于MQL4重新编写的,由作者 lsv 提供,源码链接 - https://www.mql5.com/ru/code/9431。
工作原理
该专家顾问基于每个价格波动进行操作,无论在什么时间框架下都能正常运行。它通过对当前市场价格的平均模式进行分析,形成多个具有不同参数的价格模式。模式的数量由Nidelt变量设定。第一个模式使用dstop参数,第二个使用dstop*2,以此类推,直到dstop*N,其中N为模式数量。当价格变动至dstop*N时,新的模式点被捕获。最新点会被删除,确保模式的长度固定为Nidelt点。模式的参数设置越多,所捕获的历史就越深,市场同时在不同的历史深度中被追踪。
当某个模式发生变化(即市场情况改变)时,会开启虚拟头寸。其任务是将头寸与特定市场情况关联。具体做法是:将价格值序列转换为二进制序列,如果某点的值高于前一个点的值,则为1,否则为0。在这个序列中计算出唯一的模式编号(即将二进制数字转换为十进制)。
该专家顾问可以同时开启一到三个虚拟头寸,每个头寸都有各自的止损和止盈,止损和止盈值是相同的。止损/止盈的值由dstop参数定义,第一位置使用dstop*1,第二位置使用dstop*2,以此类推。如果价格在止损/止盈的概率值上升,可能会增加该模式的上涨概率,反之则增加下跌概率。每个模式、模式编号(即其形状)和每个止损/止盈值都有相应的虚拟头寸,同时计算出这些组合的上涨或下跌概率。
如果根据三组参数(参数、编号、止损/止盈)创建了不少于10个虚拟交易,当市场再次出现相同情况(即特定参数和编号模式被自动检测到)时,可以认为将开启一个定向的头寸,基于统计数据计算出的止损/止盈值。
收集统计数据可能需要较长时间。正如作者所说:“这可能需要几周时间”。不过,通过使用测试器可以加速统计数据的收集。然而,测试器中的每个点价格变化与真实市场可能会有很大差异。作者建议的做法是:先在测试器中训练专家顾问,然后在模拟账户中运行约一周。如果专家顾问显示出正向结果(在此期间将进行一定的学习),那么就可以在真实账户中使用。
准备专家顾问
专家顾问的准备工作第一步是优化其参数:Nidel、Nstop、dstop、forg、Probab、NN、delta。在这一阶段,优化是在关闭ReadHistory和SaveHistory参数的情况下进行的。在找到一个可接受的参数组合后,必须进行一次测试,SaveHistory=true。然后在ReadHistory=true的账户上运行专家顾问——此时专家顾问会立即开始工作,因为它已经在测试器中收集了足够的统计数据。建议在账户运行时开启SaveHistory,以便当专家顾问过度学习并准备重新启动时,能自动保存数据。
使用SaveHistory进行测试后,学习数据会保存在文件中,文件名为FD_[Symbol]。如果专家顾问在EURUSD上测试,文件名将为“FD_EURUSD”;如果在GBPUSD上测试,文件名将为“FD_GBPUSD”,以此类推。这些文件保存在所有终端的公共数据文件夹中。你可以通过MetaEditor的主菜单找到通用数据文件夹——打开通用数据文件夹。在这个文件夹中,ReadHistory会读取数据。
除了保存学习结果外,专家顾问还会保存两个在交易过程中必要的文件,文件名为:FDlast_buy[Symbol][TimeFrame] 和 FDlast_sell[Symbol][TimeFrame]。对于这些文件不必过于关注。
专家顾问仅在学习数据保存的周期性和虚拟交易之间的最小时间上依赖于时间框架。这个时间等于两根K线的密度,因此在不同时间框架上,专家顾问的工作结果可能会有一些差异。
下图展示了在EURUSD M15上使用默认设置的专家顾问学习结果。
参数说明
- ReadHistory - 读取已保存的学习历史。
- SaveHistory - 保存学习历史。在测试期间,历史保存至测试结束,账户工作期间则定期通过过度学习的方式保存。
- Lots - 头寸大小。
- Nidelt - 模式数量不得超过30。
- Nstop - 虚拟头寸参数数量(止损和止盈的不同值,止损和止盈相等),取值为1、2或3。
- dstop - 虚拟头寸参数变化的步长(止损和止盈)。
- forg - 忘记学习结果的速率,值应略大于1。
- Probab - 基于学习结果的开仓概率水平。
- NN - 模式大小不得超过12。
- delta - 模式参数变化步长。
- ReplaceStops - 在新开仓信号时修改止损/止盈。止损/止盈移动仅在头寸方向上进行。
- Trailing - 移动止损水平;当值为0时,移动止损被禁用。