交易中的神经网络:用于时间序列预测的轻量级模型(基础篇)
📘

交易中的神经网络:用于时间序列预测的轻量级模型(基础篇)

第 1/2 篇

◍ 用轻量神经网络给行情时间序列做预测

在 MT5 里跑时间序列预测,没必要一上来就堆深层网络。Dmitriy Gizlyk 于 2025 年 3 月 4 日发布的这篇交易系统文章,核心是用轻量级神经网络处理价格序列,原文在发布当日即获得 847 次查看、0 条评论,说明这类极简模型在社群里还偏冷门。 轻量模型通常指层数少、参数量可控的前馈或简单循环结构,好处是过拟合概率低,在 1 分钟到 1 小时周期的外汇与贵金属行情上,推理延迟能压到可接受范围。但外汇和贵金属属高杠杆高风险品种,任何预测信号都只是概率倾向,不能直接当方向指令。 实操上,你可以先拿 EURUSD 的 H1 收盘价做标准化,再喂给一个单隐藏层网络试水,观察预测值与真实值的残差分布,再决定是否加层。

把周期拆开,预测反而更轻

做外汇或贵金属交易,长期盯盘的人都有个体感:欧美盘与亚盘的价格节奏常常不一样,同一根日K在不同时段拆开看,子序列的趋势有连续性。这说明货币对走势里嵌着周期性,而趋势被时段切分后,会从“整段方向”变成“子段内的特征”。 有篇关于 SparseTSF 的研究把这件事推到极致:它不堆参数,而是先把输入按固定周期切成多条降采样子序列,再只去预测“周期间的变化”。原文给出的模型规模约 1000 个参数,就能跑长期时间序列预测,和主流大模型思路完全相反。 对 MT5 用户来说,这带来两个可验证的点。第一,周期和趋势被强制分离后,模型不容易被某段异常波动带偏,捕捉周期更稳;第二,参数压到千级,本地用脚本回测 EURUSD 的 H1 离散时段序列,普通笔记本也能跑,不用租 GPU。外汇与贵金属杠杆高、时段风险大,这类轻量思路只是降低计算门槛,不预示任何胜率。

「跨周期稀疏预测怎么用单线性层压住长程依赖」

长期预测要把视野 H 拉长,才够提前量,但 H 一大,模型参数量和训练负担就飙。SparseTSF 的思路是:不堆结构,只用一个线性层,靠周期先验把问题压扁。 它先假定序列长度 L、已知周期 w,把原序列降采样成 w 条子序列,每条长 n=L/w。对这些子序列跑同一套参数的预测,得到 w 条长 m=H/w 的预测子序列,拼起来就是完整长度为 H 的预报。技术上等价于把 X_t 重塑成 n*w 再转置为 w*n,对最后一维套一个 n*m 的线性层,出来 w*m 再逆操作上采样回 H。 直接抽每周期一个点会丢信息,还容易被极端值带偏。作者在稀疏预测前加了一道滑动聚合:用带零填充的卷积层,把周期内邻近点揉成一个聚合点,既补了上下文,又靠加权平均吃掉异常值影响。 训练集和测试集分布常漂移,原文采用最简归一化——进模型前减序列均值,预测完把均值加回去。外汇与贵金属行情周期常被事件打断,这种轻量归一在 MT5 回测里可作为 baseline 先跑通再谈改进。

◍ 在 MT5 里搭一个 SparseTSF 预测层

把 SparseTSF 落到 MQL5,核心是新建一个从 CNeuronBaseOCL 继承的 CNeuronSparseTSF 类。类里静态挂了 2 个卷积层(cConvolution 做周期聚合,cForecast 做跨期预测)和 4 个转置层 acTranspose[4],构造和析构都为空,真实初始化全丢进 Init 方法。 Init 接收四个关键参数:sequence(输入序列长)、variables(多变量里的单变量数)、period(周期性)、forecast(预测深度)。硬约束是 sequence 和 forecast 必须都是 period 的整数倍,否则张量整形会直接错位。父类初始化时层尺寸按 forecast*variables 给,内部对象则按前馈顺序挨个起:先 Lv 转置成 vL,再用步长=period、核数=period 的卷积在单变量内聚合两个周期的数据。 离散化阶段只声明性改维、不搬内存,但转置要真做;第二次转置把缓冲排成 w*(L/w*v),把每个周期阶段拆开。预测卷积的窗口与步长都是 sequence/period,滤波器数=forecast/period,一次前馈直接出整段预测;激活函数用 tanh,把输出压在 [-1, 1]。最后再用两层转置逆排,并替换结果/梯度缓冲区指针,免掉多余拷贝。 feedForward 里只把前层指针扔给第一个转置层,后续串起聚合、残差加原始转置、离散化转置、预测卷积、逆转置。calcInputGradients 逆序走,残差处梯度走两路求和;updateInputWeights 只调两个卷积层的同名方法,转置层无参可训。 把类塞进 Encoder 时,架构很薄:全连接层进原始数据 → 批归一化 → SparseTSF 层。用 H1 历史训测时,period 设 24 对应一个自然日;同周期测不同模型能压住外部变量干扰。SparseTSF 本身轻量,加批归一化提取的分布指标就能出预测,再接 FreDF 对齐频率。外汇与贵金属杠杆高,这套仅作概率性方向参考,实盘前务必在 MT5 用历史数据回测验证。

MQL5 / C++
class CNeuronSparseTSF  :  class="kw">public CNeuronBaseOCL
  {
class="kw">protected:
   CNeuronConvOCL       cConvolution;
   CNeuronTransposeOCL acTranspose[class="num">4];
   CNeuronConvOCL       cForecast;
   class=class="str">"cmt">//---
   class="kw">virtual class="type">bool        feedForward(CNeuronBaseOCL *NeuronOCL) class="kw">override;
   class=class="str">"cmt">//---
   class="kw">virtual class="type">bool        calcInputGradients(CNeuronBaseOCL *NeuronOCL) class="kw">override;
   class="kw">virtual class="type">bool        updateInputWeights(CNeuronBaseOCL *NeuronOCL) class="kw">override;
class="kw">public:
                     CNeuronSparseTSF(class="type">void) {};
                    ~CNeuronSparseTSF(class="type">void) {};
   class=class="str">"cmt">//---

常见问题

它把长周期拆成子序列分别建模,能压住长程依赖且参数少;可先在EURUSD小时图回测,看预测偏差是否稳定小于均线外推。
把历史按周期长度切片,每片用单线性层预测对应位置;可用现成开源结构改几个参数,不必写复杂反向传播。
小布可加载你导出的时序切片,自动给出稀疏预测层和偏差提示,你只需在品种页选周期即可看结果。
SparseTSF靠跨周期稀疏连接,让单层学到周期间映射;实测在日线级以上能用极少参数覆盖数十根K线依赖。
贵金属跳空和杠杆高,预测仅作概率参考;建议用1小时及以上周期,且每次下单前人工复核信号。