文章 "神经网络在交易中的应用:用于多元时间序列预测的 LSTM 优化(终篇)"

 

新文章 神经网络在交易中的应用:用于多元时间序列预测的 LSTM 优化(终篇)已发布:

我们继续实现 DA-CG-LSTM 框架,该框架为时间序列分析和预测提供了创新方法。使用 CG-LSTM 和双重注意力机制可以更准确地检测数据中的长期和短期依赖关系,这在金融市场分析中尤其有用。

如前所述, DA-CG-LSTM 框架围绕两个基本组件构建:注意力模块和改进的 CG-LSTM 循环模块。这些要素共同构成了一个稳健的架构,为模型提供了所需的灵活性、噪声鲁棒性以及捕捉复杂多层次时间依赖性的能力,这些都是金融市场应用所必需的。在高波动性和市场不确定性的条件下,这些特性不仅重要,而且对于构建可靠的交易系统至关重要。

在上一篇文章的实践部分,我们详细研究了在 MQL5 中实现 CG-LSTM 模块的过程。由此产生的组件成功执行了三项关键功能:特征过滤以消除不必要的噪声,高效管理模型的内部状态以保留长期信息,以及跨多个时间尺度的数据聚合。它既能抑制非结构化噪声,又能保持稳定的学习动态,从而能够构建在较长历史时期内保持预测精度的模型。

神经网络在交易中的应用:用于多元时间序列预测的 LSTM 优化(终篇)


作者:Dmitriy Gizlyk

 
我想分享一下我的经验和感受。首先,要向作者致以特别的感谢和敬意。就在一两个月前,看到这样的文章我还会感到害怕,会觉得自己做不到。而今天,一切都发生了翻天覆地的变化。 神经网络是我们这个时代的魔法。我自己都不敢相信,但我现在正坐在这里收集数据来训练这个神经网络。它真的在运行。我只是向它输入了这两篇文章和ChatGPT o3的 原始指南,它就引导我一步步进行。 此外,我还有个关于技术指标的想法,在抽屉里尘封了好几年,当时因为不懂MQL,只能在Excel里草草拟出框架。 而就在短短几周内,我借助Grok和ChatGPT,用MQL5将其实现了。而且它真的能运行!还能进行交易!现在,甚至可以直接将这个神奇的神经网络整合到我的指标中。 总之,我激动不已,因为前方的道路竟以如此之快的速度向我敞开,而且似乎无边无际。
 
顺便说一下,当我运行Research并连接了多个集群时,这些集群遗憾的是只能在本地生成二进制文件(DACGLSTM.bd)。也就是说,这个文件最终并没有实现共享,而是每台计算机都有自己独立的本地副本。 我的神经网络给我提供了一个思路,但我没太在意:

如何让所有测试代理将同一个 .bd 文件写入网络共享——只需 4 个步骤

  1. 共享文件夹

    • 在“主”电脑上创建 D:\DACShare 文件夹。

    • 右键点击 → “访问” → “高级” → 共享资源DACGLSTM,“Everyone” 授予读写 权限。

    • 最终路径:\\MAINPC\DACGLSTM。

  2. 服务账户

    • compmgmt.msc → “用户” → 添加mqlagent(任意密码)。

    • 在 services.msc 中,针对每个MetaQuotes Tester Agent …→ “登录”选项卡 → “此帐户” → MAINPC\mqlagent,输入密码,然后重启服务。

  3. Research 代码修改

    input string SharedRoot = "\\\\MAINPC\\DACGLSTM\\"; string FileName = SharedRoot + "trajectories"; int handle = FileOpen(FileName + ".bd", FILE_WRITE|FILE_BIN|FILE_SHARE); // 替换 FILE_COMMON

    (读取操作同样需要进行此替换)。编译 .ex5 文件并复制到所有代理上。

  4. 验证
    运行优化;每个代理的日志中将出现:
    已保存至:\\MAINPC\DACGLSTM\DACGLSTM.bd 大小=…
    打开共享文件夹——文件在每次迭代后都会增大。

👉 现在,所有本地和远程代理都写入同一个数据缓冲区,而 Study.mq5 只需打开相同的 .bd 文件,即可从任何机器进行学习

 

不太清楚DACGLSTM.bd 是如何更新的

我以1个月为间隔运行Research任务。 进行了全面优化。优化参数为Agent 1至8。接着是下个月……但文件却完全没有更新。我看到文件的日期仅在开始新测试时才会更新,仅此而已,而文件大小始终保持不变。

 
Vladimir Sanin #:

不太清楚DACGLSTM.bd 是如何更新的

我以1个月为间隔运行Research任务。 进行了全面优化。优化参数为Agent数量从1到8。接着是下个月……但文件却完全没有更新。我看到文件日期仅在新测试开始时更新,仅此而已,而文件大小始终保持不变。

请告知您的DACGLSTM.bd 文件大小以及每月交易笔数。

 
Andrey Yankin #:

请告知您的DACGLSTM.bd 文件大小以及本月的交易笔数。

通过反复试错和多次尝试,我目前已经积累了800MB的交易轨迹数据。尝试了各种周期——10天、1个月、3-6-12个月…… 在最近一次运行2024年下半年数据后,文件大小从200左右增加到了800。之后我又运行了2023年下半年数据,但文件大小没有变化。 半年内的交易量大约有3000-3500笔,我使用15分钟的时间周期——包含所有 tick 数据。在更短的时间周期下,处理过程会变得非常漫长,我目前还不准备等待那么久。 对了,顺便提一下,我已将MaxReplayBuffer从500增加到了1000000。

 
不清楚该如何运行Study,是采用单例测试模式还是优化模式
 
Vladimir Sanin #:
Study

只需将Study直接添加到图表上。安装完成后,它会读取数据文件,随后开始优化。图表左上角会显示进度和结果。

在15分钟K线图上,半年内完成了3000笔交易…… 这意味着几乎每两根K线中就有一根会开仓,且全部为做空。您可以通过运行带可视化的单次回测,或在模拟账户上安装该策略来验证这一点。交易在开仓后于下一根K线时平仓。

 
在单例测试中运行了Study。迭代次数100000(默认值),批次大小128。显卡为Intel UHD Graphics 730。 我猜日期范围在这里根本不重要吧?总之,程序启动了,单核运行,显卡很热,但进度条甚至没有变化,只是显示“忙碌”状态。不知道还要等多久。我正尝试在另一台配置更强、显卡更好的电脑上运行……
 
Andrey Yankin #:

只需将Study放置在图表上即可。安装完成后,它会读取数据文件,然后开始优化。图表左上角会显示进度和结果。

在15分钟K线图上,半年内完成了3000笔交易…… 这意味着几乎每两根K线中就有一根会开仓,且全部为做空。您可以通过运行带可视化的单次回测,或在模拟账户上安装该策略来验证这一点。交易在开仓后于下一根K线时平仓。

那么,到底还是需要把它挂到图表上,并运行带优化功能的测试吗?毕竟现在讨论的不是在线版本,对吧? 不清楚应该为Study选择哪个日期区间,随便一个都可以吗?我运行了带可视化的测试,看到左上角的数据在变化,但图表却一动不动。数据中的百分比同时以相同的速度缓慢增加,而图表本身却纹丝不动。


 
Vladimir Sanin #:
学习
仅按图表 进行研究