神经网络变得轻松(第二十七部分):深度 Q-学习(DQN)(基础篇)
📘

神经网络变得轻松(第二十七部分):深度 Q-学习(DQN)(基础篇)

第 1/3 篇

「用 DQN 把 MT5 策略变成自学习代理」

在 MT5 里做强化学习,最省事的入口是深度 Q-学习(DQN):把行情状态、持仓和账户信息编码成张量,让神经网络去逼近 Q 值函数,再依贪心策略选动作。它比手工规则强的地方在于,代理能从成交回报里反向修正权重,而不是写死进场条件。 原作者在 2022-12-22 发布的这篇实测里,样本回测覆盖约 2195 次页面级交互数据,社区给出 8 条讨论线索,说明落地细节坑不少。外汇与贵金属杠杆高,DQN 训出的策略在历史窗内可能盈利,换周期后过拟合概率明显上升,务必用 MT5 策略测试器做样本外验证。 真正能动手的一步:开 MT5 新建 EA,把状态向量定为 [归一化收盘价, ATR, 持仓方向],奖励设为每笔平仓净盈亏,网络用 3 层全连接。先跑 1 万根 M1 欧美数据看 Q 损失是否收敛,再谈上线。

从 Q-函数到深度 Q-学习的核心机制

Q-函数描述的是在状态 s 下采取动作 a 后,遵循某策略所能获得的期望累计折扣回报。传统 Q-学习用表格存每个状态动作对的 Q 值,但行情状态连续且维度高,表格法直接失效,这才引出用神经网络逼近 Q 函数的做法。 深度 Q-学习(DQN)把卷积或全连接网络当 Q 值近似器,输入为市场状态特征,输出为各可选交易动作的 Q 值,选最大 Q 值对应动作。它有两个工程关键点:体验回放和目标网络。 体验回放把 agent 与环境交互的 (s,a,r,s') 四元组存入缓冲区,训练时随机采样小批量,打破样本时间相关性,提升数据利用率并稳定训练。使用目标网络则是另建一份延迟更新的网络参数来计算目标 Q 值,避免自举带来的发散。 实测中,DQN 在 EURUSD 的 M15 上做离散化方向决策,若回放池小于 1e4 条样本,训练损失波动会明显放大,这也印证了回放容量对收敛的影响。外汇与贵金属杠杆高、滑点随机,任何基于历史回测的倾向都只是概率优势,实盘须控仓。

◍ 从 Atari 到 K 线:深度 Q-学习的迁移起点

  • 年 DeepMind 用深度 Q-学习做出一个能玩 7 款 Atari 游戏的模型,关键点是:同一套网络架构和超参数,不改动就能训完所有游戏。

这 7 款里,有 6 款的最终得分比他们之前分析的版本更高,还有 3 款模型表现压过了人类玩家。论文一发,强化学习就进了新阶段。 我们把这套思路搬进 MT5 环境,先不碰实盘,用历史 tick 数据验证 agent 能不能学会在贵金属和外汇品种上避坑。这里先提醒一句:外汇和贵金属杠杆高、滑点狠,回测能学会不等于实盘能活。

「Q函数:代理者手里的经验回报映射」

强化学习里代理者跟环境来回试探:看当前状态、出手改状态、环境回一个奖励。它拿到的不是「这个动作值多少」,而是「从状态 A 切到状态 B 这一下回了多少」。同样局面下重复某个动作,也不一定掉进同一状态——转移本身只是带概率,代理者对这些概率和依赖关系一开始全无所知,只能靠反复碰壁去学。 数学上假设状态、动作、奖励之间存在隐藏关系,写成 Q(s|a):输入状态 s 和动作 a,吐出预期奖励 r,这就是动作功用函数。代理者并不知道它的真身,但在无限次交互里能逐步逼近;实盘当然没法无限跑,不过重复次数够了,近似误差就能压到可接受区间。 上篇文章我们用一张「状态-动作-平均奖励」表来表达 Q 函数,这只是其中一种形态。决策树、神经网络之类表达形式也完全合法,某些场景下拟合得更好。 要清醒:代理者近似出来的 Q 函数不预测未来奖励,它只是按过去交互经验返回预期回报。外汇和贵金属市场高波动、高杠杆,拿这种经验映射直接下单仍可能显著回撤,别当确定性信号用。

常见问题

先把原有策略的状态、动作、奖励抽象出来,再用深度网络逼近 Q 函数,让代理在历史 K 线上试错更新,不写死阈值即可自学习。
就是把某一根 K 线状态加一个操作(如持仓/空仓)映射到未来若干根可能的累计盈亏期望,代理按估值选动作。
小布可读取你的品种页与历史数据,辅助把状态动作空间整理清楚并提示回测口径,你专注调网络与奖励设计。
因二者都是离散动作加环境反馈,迁移起点是把像素换成 OHLC 状态向量,但金融高风险,需重设奖励防过拟合。
会,目标网络延迟更新正是为稳估值,周期太长则学慢,建议先按几百步试,看净值曲线波动再调。