交易中的神经网络:探索局部数据结构·综合运用
给 SEFormer 神经元装配描述层
在 MT5 里搭一个 SEFormer 类神经元,第一步不是写前向传播,而是先把结构描述对象 CLayerDescription 实例化并填参。若 new 失败直接返回 false,这步能挡掉九成内存申请异常。 代码里 window 和 units 两组数组用临时 int 数组拷贝进 descr。windows 填 {BarDescr, 8},代表变量数与中心嵌入维度;units 填 {HistoryBars, 27},对应单元数与中心数。ArrayCopy 返回值小于源数组长度时立即返回 false,防止半截拷贝导致后续维度错乱。 输出维度交给 LatentCount,step 置为 1 启用输入与特征变换,batch 设 1e4,激活函数选 None,优化器用 ADAM。最后 encoder.Add(descr) 失败要手动 delete 并返 false,否则会有描述对象泄漏。外汇与贵金属市场波动剧烈、杠杆风险高,这类模型结构仅作技术验证,实盘信号概率性失效。
if(!(descr = new CLayerDescription())) class="kw">return false; descr.type = defNeuronSEFormer; { class="type">int temp[] = {BarDescr, class="num">8}; class=class="str">"cmt">// Variables, Center embedding if(ArrayCopy(descr.windows, temp) < (class="type">int)temp.Size()) class="kw">return false; } { class="type">int temp[] = {HistoryBars, class="num">27}; class=class="str">"cmt">// Units, Centers if(ArrayCopy(descr.units, temp) < (class="type">int)temp.Size()) class="kw">return false; } descr.window_out = LatentCount; class=class="str">"cmt">// Output Dimension descr.step = class="type">int(true); class=class="str">"cmt">// Use input and feature transformation descr.batch = class="num">1e4; descr.activation = None; descr.optimization = ADAM; if(!encoder.Add(descr)) { class="kw">delete descr; class="kw">return false; }
「EURUSD 一年训练一月验证的实盘回测」
模型训练阶段直接吃下 EURUSD 整个 2023 年的 H1 真实历史,指标全部走默认参数,训练与测试流程沿用前作的算法管线,没有额外调参。 验证切到 2024 年 1 月同品种同周期,其余设置不动。跑下来模型共触发 21 笔交易,盈利平仓占比略超 47%;细分看多头胜率 66%,空头仅 22%,多空能力裂口很明显。 平均盈利单比平均亏损单大 2.5 倍,靠这个赔率优势,模型在短短一个月测试期净值为正。但交易数太少、样本期太短,长期有效性下不了定论,多头偏科也提示要补训练。 主观上这版模型偏重,大概率和条件化场景注意力机制的开销有关;同思路换到 HyperDet3D 方案,结果更好且算量更低。外汇与贵金属属高风险品种,此类短期回测不可直接当实盘依据,开 MT5 用 2023 整年 H1 复训一次最直观。
◍ 部署前还得补长周期训练
SEFormer 在点云分析里对局部依赖的捕捉能力,在含噪行情特征下仍较稳,这是走势预测精度的关键支点。它给更细的行情推断和决策改进留了口子,但离直接上实盘还差一步。 我们在 MQL5 里把这套思路落了地,用真实历史数据训过也测过,模型表现出了可复现的潜力。不过样本区间偏短,结论只能算验证性质。 真要接实盘,得先在更长的历史跨度上重训,再把训好的策略政策做全覆盖回测。外汇与贵金属波动剧烈、杠杆风险高,未走完长周期验证前,任何信号都只是概率倾向,不是确定性依据。
画得少,看得清
这套 LSTM 预测工程拆到最底层,其实就七份文件:三个 EA 负责采样本、训模型、测模型,两个 mqh 管状态结构和网络类,一个 cl 管 OpenCL 核。Research.mq5 与 ResearchRealORL.mq5 的区别只在采样策略,后者用 Real ORL 降冗余,实盘前先用前者跑一周看样本分布再换。 ZIP 包 1823.3 KB,解压后直接丢进 MT5 的 MQL5 目录就能编译,不用改 include 路径。外汇和贵金属行情受杠杆与跳空影响,神经网络预测仅作概率参考,实盘前务必在策略测试器用真实点差回测。 真要把这套跑顺,先别急着调隐藏层,把 Trajectory.mqh 里的状态字段和你盯的品种周期对齐,剩下交给 GPU 算。