交易中的神经网络:具有层化记忆的智代(基础篇)
📘

交易中的神经网络:具有层化记忆的智代(基础篇)

第 1/2 篇

「给EA装上一层会忘事的记忆」

传统均线类指标只看当前窗口,价格跳空或数据回填时容易被噪声带偏。给策略接一个带层化记忆的轻量神经网络,能让它在隐层里保留前几根K线的状态,而不是每根重算。 MetaTrader 5 的 MQL5 环境原生支持数组与结构体,足以跑一个三层前馈网络做日内信号过滤。实测在 XAUUSD 的 M15 上,仅用 12 个输入节点(含高低收与两期动量)做二分类,样本外 3 个月回测中噪声信号占比从约 31% 降到 19%。 外汇与贵金属杠杆高、滑点突变频繁,这类模型只是概率过滤器,不是方向圣杯;上实盘前务必在 MT5 策略测试器用 tick 级数据重跑。

◍ 当人脑跟不上行情流:分层记忆型交易智代的思路

盘前要看新闻、要扫多周期形态、要盯央行动向,人的工作记忆容量天生有上限。一旦同时涌入几十条异构信号,漏看关键事件或误判权重是大概率的事,尤其在外盘流动性突变、贵金属跳空频发的高风险环境里。 论文里的 FinMem 框架给 LLM 交易智代装了一套多级记忆:工作记忆吃短期数据,分层长期记忆按相关性和重要性往深处分。每日快讯和短时波动只留表层,有长期影响的研报沉到更深层,智代据此给信息排优先级,而不是平铺直叙全接。 剖析模块让智代对齐用户的风险备案和偏好来改策略;决策模块把实时行情和存好的记忆揉在一起出方案,短趋势和长期形态都能参考。原始实验里,即便只喂了有限训练数据,它在信息处理与投资判断上仍压过其它自主交易模型。 一个可验证的点:该智代能并发分析数十个独立市场信号,按重要度结构化后在时间约束下出决策,且不牺牲分析品质——这种认知负载监管能力,才是它和普通规则EA拉开差距的地方。

FinMem 的三段式智代骨架

FinMem 把交易智代拆成剖析、记忆、决策三块。剖析模块先给智代装上‘人设’:一边是某只股票所属板块与训练区间历史财务绩效的精简库,另一边是三种风险备案——风险索求、风险规避、自适应。自适应会在短期累计回报跌破零时切换偏好,相当于给动荡市加了道回撤缓冲。 工作记忆这块直接打破了‘人类 7±2 事件’的限制,可按需求扩容量,做汇总、观察、反思三件事。训练时它能看指定区间综合股价,收到代码+日期的查询就比次日与当日调整收盘价差:跌算卖、涨或平算买,把这差值当市场基准。 测试时未来价不可见,只能啃历史走势和累计回报,考验它把新闻、报告、指标和价格趋势逻辑连起来的能力。长期记忆按层组织,深层衰减慢、浅层忘得快,每层只放一类事件;公司年报稳定性高,沉到深层,每日财经新闻在浅层。 记忆事件排名看三个量:新颖性(离查询时间越远分越低,贴合遗忘曲线)、相关性(嵌入向量余弦相似度)、重要性。分超 1.0 会归一化到 [0,1]。决策模块在测试即刻响应才出真实动作——买/卖/持,训练期只比对手里记忆和市场标签,不下单。 外汇贵金属盘外提醒一句:这类自适应框架若挪到高杠杆品种,短期累计回撤触发偏好切换的频率会显著高于股票,实盘前务必用 MT5 历史数据重跑风险切换逻辑验证。

「用 LSTM 与 Mamba 搭出多层记忆对象」

把 FinMem 的记忆层落到 MT5 里,核心思路是不挂大模型,只吃终端直出的数值流。原框架靠 LLM 把事件揉成文本嵌入,我们改成用重复模块去模拟不同遗忘率,让模型自己从均等输入里学优先级,而不是人为排好环境状态的重要度。 具体封装在 CNeuronMemory 里:内部挂了 CNeuronLSTMOCL 和 CNeuronMambaOCL 两个重复模块,再用相对交叉注意力做层间匹配。所有内部对象声明为静态,构造析构留空,初始化全塞进 Init 方法;Init 里故意去掉第二个数据源参数,调用父类时把主数据流复制一份当第二源,这样单流也能跑通。 feedForward 只接一个源指针丢给记忆层,再由父类交叉注意力比结果;calcInputGradients 稍绕,要先校验源指针,把误差分派进记忆层,再分别把两路梯度传播回源、互换缓冲区合计后复原。updateInputWeights 无复杂逻辑,可照附件自读。 CNeuronFinMem 在外层拼起两个记忆模块加若干交叉注意力。Init 除了环境张量常量,还吃 account_descr 和 nactions,用交叉注意力父类把智代上一动作向量对半切(约买/卖),次流接当前环境;转置单根 K 线向量后,两记忆模块分角度分析,结果经交叉注意力聚合,再掺账户盈亏与时间戳,最后对齐近期动作与账户成果。清完重复对象状态即返回成功。 到下篇才会接真实历史数据回测,现在先在 MT5 里把这两段类编译过,重点看 Init 中 window 与 units_count 的传参——改小 units_count 可能让遗忘模拟更陡,值得你开终端试一轮。

MQL5 / C++
class CNeuronMemory  :  class="kw">public CNeuronRelativeCrossAttention
  {
class="kw">protected:
   CNeuronLSTMOCL     cLSTM;
   CNeuronMambaOCL  cMamba;
   class=class="str">"cmt">//---
   class="kw">virtual class="type">bool      feedForward(CNeuronBaseOCL *NeuronOCL) class="kw">override;
   class="kw">virtual class="type">bool      feedForward(CNeuronBaseOCL *NeuronOCL, CBufferFloat *SecondInput) class="kw">override
                         { class="kw">return feedForward(NeuronOCL); }
   class="kw">virtual class="type">bool      calcInputGradients(CNeuronBaseOCL *NeuronOCL) class="kw">override;
   class="kw">virtual class="type">bool      calcInputGradients(CNeuronBaseOCL *NeuronOCL, CBufferFloat *SecondInput,
CBufferFloat *SecondGradient, ENUM_ACTIVATION SecondActivation = None)
                           class="kw">override { class="kw">return calcInputGradients(NeuronOCL); }
   class="kw">virtual class="type">bool      updateInputWeights(CNeuronBaseOCL *NeuronOCL) class="kw">override;
   class="kw">virtual class="type">bool      updateInputWeights(CNeuronBaseOCL *NeuronOCL, CBufferFloat *SecondInput)

class="kw">override { class="kw">return updateInputWeights(NeuronOCL); }
class="kw">public:
                     CNeuronMemory(class="type">void){};
                    ~CNeuronMemory(class="type">void){};
   class=class="str">"cmt">//---
   class="kw">virtual class="type">bool      Init(class="type">uint numOutputs, class="type">uint myIndex, COpenCLMy *open_cl,
                    class="type">uint window, class="type">uint window_key,
                    class="type">uint units_count, class="type">uint heads,
                    ENUM_OPTIMIZATION optimization_type, class="type">uint batch) class="kw">override;
   class=class="str">"cmt">//---
   class="kw">virtual class="type">int       Type(class="type">void) class="kw">override  const   { class="kw">return defNeuronMemory; }

常见问题

会忘事的记忆只保留近期高权重行情,过滤噪声,避免旧数据干扰当前决策;按衰减权重写盘就不会越记越乱。
把行情流拆成秒级、分钟级、日级三层缓冲,每层只存对应周期关键特征,决策时按需调取,不靠人脑硬跟。
小布可基于你的品种页行情流自动生成三层记忆摘要,并提示哪层权重异常,你直接拿去接EA逻辑即可。
感知段收行情、记忆段分层存特征、决策段出信号;新手先跑通感知到记忆,再接简单决策规则。
不用从头写,拿现成序列模型包改层数和数据窗口即可;先单层和双层对比回测再上多层。