神经网络变得轻松(第二十一部分):变分自动编码器(VAE)·综合运用
◍ 用 EURUSD 十五年数据跑 VAE 对比
把前一篇的自动编码器模型另存为 vae.mq5,在编码器输出端把第 5 层从 2 个神经元扩到 4 个,并新插入一层把变分潜伏状态放到第 6 个神经元,其余结构不动。训练集直接取 EURUSD 的 H1 周期、过去 15 年数据,参数一律沿用原设定。 从多层编码器与变分自动编码器的学习动态对比看,VAE 在整个训练窗口里的数据恢复误差明显更低,且误差下行的斜率更陡。以 EURUSD 价格序列为样本,VAE 在抽取单形态描述特征上倾向具备更强的表达能力。 外汇与贵金属属高风险品种,这类基于历史数据的模型结论只代表样本内概率倾向,实盘前务必在 MT5 用自有数据重训验证。
VAE 初训结果能接着怎么用
前面用真实历史数据跑完 VAE 初步训练,测下来模型提取出的那一个描述市场状况的特征,和测试集表现是对得上的。也就是说,这套无监督预训练不是白跑,产出的低维表征有一致性。 这种初步训练产物两条路可走:一是直接拿去构造交易形态,把隐变量当市场状态标签用;二是接监督学习再训一轮,用已知信号去微调编码器。外汇和贵金属波动大、杠杆高,任何形态或模型都只是概率倾向,实盘前务必在 MT5 用历史数据复算一遍一致性。
「顺着这些材料继续深挖」
上面列的那组材料把神经网络在 MT5 里的落地路径拆得很细,从第十四到第二十部分覆盖了数据聚类、降维、关联规则,再到自动编码器与变分自动编码器。 如果你已经在跑前几篇的聚类或降维脚本,建议直接对照第十七部分(降低维度)和第十九部分(使用 MQL5 的关联规则)复现一遍,这两块对特征压缩和品种联动识别最有参考价值。 变分自动编码器那三篇偏理论,但配合 MQL5 的神经网络库能做异常价态检测,外汇与贵金属波动大、杠杆高,实盘前务必在策略测试器里用历史数据验证重构误差阈值。
◍ 随包代码与一处编译坑
这套 VAE 实盘方案在压缩包里拆成了 5 个文件:两个 EA(vae.mq5 跑变分自动编码器学习,vae2.mq5 负责把潜变量导出做可视化),三个类库(VAE.mqh 封装潜伏层、NeuroNet.mqh 搭网络骨架、NeuroNet.cl 走 OpenCL 并行)。想复现文中训练流程,直接把 MQL5.zip(68.61 KB)拖进 MT5 的 MQL5 目录即可。 有读者在 2022 年 10 月编译 NeuroNet.mqh 时撞到 6 个 'pow' 重载歧义报错,集中在 3848、4468、6868 行。作者给的修法是把指数 t 前强转成 float,等价于下面这段截取代码的逻辑。 外汇与贵金属市场杠杆高、滑点跳空频繁,用神经网络生成的信号仅代表历史数据拟合倾向,实盘前务必在策略测试器用 Tick 级数据重跑。
lt = (class="type">float)(eta * sqrt(class="num">1 - pow(b2, (class="type">float) t)) / (class="num">1 - pow(b1, (class="type">float) t)));