TradingGym实战:把回测包装成Gym环境,MA20规则策略22笔交易全盈利

一个把你拉进 Gym 训练场做交易的 RL 环境

TradingGym 和 FinRL 都属于"强化学习做交易"这个品类,但两者的设计思路完全不同。FinRL 是一个完整的框架——从数据管道到模型训练到回测评估,每个环节都有专门的模块。TradingGym 更轻量,它只做一件事:把一个回测任务包装成标准的 OpenAI Gym 环境。obs 是一个 9 列的矩阵,action 只有三个值(持仓、做多、做空),reward 是每步的盈亏。

这种设计的优势在于你可以用任何标准的 RL 算法来训练交易策略——PPO、DQN、A2C,理论上都能往里套。但这篇文章先不训练模型,先用一个简单的规则策略(MA20 交叉)演示 TradingGym 的完整回测流程——22 笔交易、全部盈利(胜率 100%)、最终收益 +26.96%。

起步

EasyClaw 官网下载安装。不需要装 Gym、不需要配 RL 训练环境。

打开后左侧找「Skill」→「Skill Creator」。灰显的话去「设置 → 通用」打开「开发者模式」重启。

创建 Skill

在 Skill Creator 里告诉 EasyClaw:

帮我把 GitHub 上的 TradingGym(https://github.com/Yvictor/TradingGym)做成一个回测 Skill。我希望输入股票代码和起止日期,自动搭建 backtest_v1 Gym 环境,用 MA20 交叉规则策略跑回测,输出 render() 四面板图表和完整 transaction_details。

Skill 创建好后:

用 TradingGym 回测 AAPL,backtest_v1 模式,MA20 交叉策略,最大持仓 10 股,从 2024 年中到现在

image

回测结果:22 笔交易全部盈利

指标
初始资金 $10,000
最终净值 $12,696(+26.96%)
夏普比率 0.832
最大回撤 -21.33%
交易次数 22
胜率 100%

22 笔交易全部盈利——这个结果看起来好得不太真实。仔细看回测模式的设置会发现原因:TradingGym 的 backtest_v1 是顺序遍历模式,最大持仓 10 股、观察窗口 60 步,策略在每步根据过去 60 天的数据决定买卖。MA20 交叉在苹果 2024-2026 的单边上涨行情中恰好比较有效——在一个趋势向上的市场里,一个简单趋势跟踪策略看起来就是完美的

TRADINGGYM_AAPL_tearsheet

 

observation 矩阵——RL 环境怎么看市场

这是 TradingGym 最独特的地方。每执行一次 env.step(action),环境会返回一个 observation 矩阵。这个矩阵有 9 列,每一列是 RL 模型"看市场"的一个维度:

内容RL 模型怎么用
0-2 价格、成交量、MA20 原始特征——模型的基础输入
3 当前持仓 模型知道自己手里有多少仓位
4 持仓变化 上一次动作是买入还是卖出
5 开/平仓标记 当前是否处于开仓状态
6 当前价格 实时行情
7 持仓均价 账户的平均成本
8 浮动盈亏 当前持仓是赚是亏
9 已实现盈亏 已经平仓的累计盈亏
10 总回报 账户的总收益率

这 9 列本质上是一个"交易员的决策面板"的数字化版本——一个人类交易员做决策时看的东西(价格、持仓、盈亏、成本),被压缩成了 RL 模型可以直接读取的数值矩阵。如果用 DQN 或 PPO 来训练这个环境,模型会在几万次 trial-and-error 中自己发现"什么时候该买、什么时候该卖"。

action_space——只有三个按钮

TradingGym 的动作空间极其精简:

动作含义
HOLD 0 什么都不做
LONG 1 做多
SHORT 2 做空

只有三个动作。RL 模型的输出层只需要 3 个神经元——它不需要预测价格、不需要预测涨跌幅,只需要在每个时间步选择"持仓、做多、做空"中的一个。这种极简设计让 TradingGym 可以快速验证一个 RL 思路是否可行,不需要在复杂的动作空间和状态空间上浪费时间。

但这也意味着TradingGym 不适合需要仓位管理的策略——你不能告诉它"这次买入 30% 仓位而不是 100%",动作只有"买"和"卖"两个开关,没有中间档。

常见报错

错误原因解决方法
"Observation shape mismatch" 数据列数不符合 9 列要求 检查数据源是否完整加载
env.step 返回 done 后无法继续 数据回测完毕 调用 env.reset() 重新开始

下一步

  • 用 Stable-Baselines3 的 PPO 或 DQN 来训练这个环境——看 RL 模型能否学会比 MA20 交叉更好的策略
  • 对比同一环境上规则策略(MA20)和 RL 训练策略的夏普和回撤差异

资源链接:

你试过用 RL 做交易吗?觉得 RL 训练出来的策略和规则策略最大的区别是什么?欢迎聊聊。

posted @ 2026-07-28 14:15  PC修复电脑医生  阅读(7)  评论(0)    收藏  举报