神经网络变得轻松(第三十二部分):分布式 Q-学习·综合运用
📘

神经网络变得轻松(第三十二部分):分布式 Q-学习·综合运用

第 3/3 篇

用奖励分布代替均值来管风险

分布式 Q-学习把智能体在某一市场状态下执行动作的奖励建模成概率分布,而不是只预测一个平均奖励值。对比只取期望值的做法,拿到分布后能直接看到盈利与回撤的尾部形态,训练过程对异常样本更不敏感,稳定性倾向更好。 在 MetaTrader 5 策略测试器里跑过该模型,验证了这套方法存在潜在盈利空间;但外汇与贵金属属高风险品种,分布乐观不代表实盘必然占优,仍需自行压力测试。 附件里给了全部程序和函数库代码,想验证的人直接丢进 MT5 编译,把状态空间里的动作奖励打印出来,就能看到分布和均值的差异。

◍ 顺着这条线继续挖 RL 的几个坑

上节把强化学习在 MT5 里的落地骨架搭完了,但真要上实盘前还有几条分支值得翻原文。MQL5 系列里第 26–28 部分分别讲了 RL 基础、DQN 和政策梯度,这三篇是递进关系:26 是概念铺垫,27 给了一套可直接抄的 Q 网络结构,28 转向更稳的梯度策略。 如果你已经在跑 DQN 了,下一步建议看「分布视角」和「分位数回归」两篇。常规 DQN 只预测期望收益,而分布 RL 把回报建模成整个概率分布,在黄金 1 小时这种跳空频繁的品种上,可能对尾部风险更敏感。 具体验证方法:开 MT5 把 27 篇的神经网络 EA 源码加载到 EURUSD 的 M15,先跑 3 个月历史;再替换成分布版本,同样周期对比回撤曲线。两者差异若小于 5%,说明你的样本里分布信息没被激活,大概率过拟合了均值。

「随文附带的工程文件清单」

这篇 LSTM 优化实操文把整套训练与验证链路拆成了 6 个可独立调用的程序部件,读者在 MT5 里照着建目录就能跑通。

  • DistQ-learning.mq5:做模型参数优化的 EA;2 DistQ-learning-test.mq5:专门在策略测试器里验证模型的智能系统;3 NeuroNet.mqh:封装神经网络结构的类库;4 NeuroNet.cl:对应的 OpenCL 核代码,负责把矩阵运算甩给显卡;5 NetCreator.mq5:图形化搭模型的工具 EA;6 NetCreatotPanel.mqh:给搭模型工具用的界面类库。

随文打包的 MQL5.zip 体积 82.71 KB,解压后建议按原文隐含的 Unsupervised\AE 这类相对路径摆放,否则像评论区 Fernando 那样报‘MathRandomNormal 未声明’多半是 VAE.mqh 没放对位置。外汇与贵金属行情受杠杆与跳空影响,用这些网络模型做预测仅代表概率倾向,实盘前务必在策略测试器跑够样本。

常见问题

把每次平仓的盈亏按分位数切成几段,看尾部亏损出现的概率,而不是只看平均收益;仓位按尾部风险倒推,别用期望值直接拍脑袋。
常见是分位数曲线越来越尖、彼此穿插,或训练后期价值估计剧烈抖动;这时候先降学习率、检查奖励裁剪区间,再考虑重采样本。
小布可替你加载工程文件、按品种跑奖励分布诊断并标出尾部风险区,你只管看结论和调整参数。
环境接口和奖励函数基本要按自己品种改,网络结构和训练循环一般可直接复用,先跑通再动结构。
过度拟合历史分布却没做样本外滚动验证;至少留出最近一段行情做盲测,概率类结论都加‘可能’别当必然。