跳到主要内容
基于 OpenClaw 与飞书 Agent 的 AI 自主模拟炒股系统实战 | 极客日志
Python AI 算法
基于 OpenClaw 与飞书 Agent 的 AI 自主模拟炒股系统实战 综述由AI生成 基于 OpenClaw 框架结合飞书 Agent 搭建 AI 自主模拟炒股系统。通过 Kimi 大模型决策,TuShare 获取行情数据,实现选股、交易执行及仓位管理的自动化闭环。系统包含收盘分析与开盘执行两阶段循环,严格遵循 A 股 T+1 等交易规则,并集成官方 Skill 扩展数据维度。实测验证了 Agent 在趋势跟踪、量价分析及风控策略上的自主决策能力,为量化投资提供了低成本的技术实验方案。
战神 发布于 2026/3/29 更新于 2026/5/3 5 浏览背景:为什么让 AI Agent 炒股?
2026 年,AI Agent 已经从简单的聊天机器人进化到能自主执行复杂工作流的智能体。我一直在想:如果给一个 AI Agent 一笔钱,让它直接在 A 股市场上自主投资,结果会怎样?这不是理论问题——借助 OpenClaw (开源 AI Agent 框架),我们真的可以搭建这样一个系统。
我的目标
给 trader Agent 5 万元虚拟资金
让它完全自主 选股、买卖、管理仓位
严格遵守 A 股交易规则(T+1、涨跌停、手续费)
每天自动运行,我只看结果
验证 AI Agent 的投资决策能力
技术栈一览
组件 技术选型 用途 Agent 框架 OpenClaw 2026.3.8 多 Agent 协作平台 前端交互 飞书 Agent「多多助理」 人机交互界面,接收 Agent 报告 大模型 Kimi 2.5 Agent 的"大脑",负责推理决策 行情数据 TuShare 高级 API A 股日线、基本面、交易日历 信息搜索 SearXNG + Jina Reader 搜索财经新闻辅助决策 金融数据 Skill TuShare 官方 Skill(waditu-tushare) 220+ 接口:龙虎榜、资金流向、财务报表等 服务器 阿里云 ECS 7×24 小时运行
OpenClaw 支持多子 Agent 架构,我配置了 4 个子 Agent:researcher (研究员)、coder (程序员)、writer (写手)和 trader (交易员)。本文的主角就是 trader 。
系统架构设计
3.1 两阶段每日循环
整个系统的核心是一个两阶段每日循环 :
graph TD
A[16:30 收盘分析] --> B[拉取全市场行情]
B --> C[更新持仓市值]
C --> D[评估持仓:持有/卖出/加仓]
D --> E[基础选股筛选 2000+ 只]
E --> F[精选候选标的 3-5 只]
F --> G[生成次日交易计划 trade_plan.json]
G --> H[推送分析摘要到飞书]
I[09:45 开盘执行] --> J[解冻 T+1 冻结仓位]
J --> K[读取交易计划]
K --> L[获取今日开盘价]
L --> M[自主判断:执行/调整/放弃]
M --> N[逐笔执行交易]
N --> O[推送成交报告到飞书]
O -.->|等待收盘 | A
3.2 目录结构
~/.openclaw/workspace /trading/
├── data/
│ ├── portfolio.json
│ ├── strategy.md
│ └── trade_plan.json
├── scripts/
│ ├── tushare_helper.py
│ ├── check_trade_day.py
│ └── trade_engine.py
└── logs/
├── trade_log.csv
└── cron.log
3.3 关键设计原则
Agent 决策,脚本执行 :Agent 负责分析和决策,Python 脚本负责数据拉取和交易执行
严格模拟真实规则 :T+1、涨跌停限制、手续费,一个不少
防止 Agent 作弊 :所有数据必须来自 TuShare,禁止编造行情;禁止直接修改 portfolio.json
策略自主进化 :Agent 自己维护 strategy.md,每周复盘更新
核心代码实现
4.1 TuShare 数据助手(tushare_helper.py) 这是 Agent 的"眼睛"——封装了所有行情数据接口:
def get_trade_date (offset=0 ):
def is_trade_day (date_str=None ):
def get_daily_data (trade_date ):
def get_daily_basic (trade_date ):
def get_stock_history (code, days ):
def get_open_price (codes ):
def screen_stocks (trade_date ):
选股筛选逻辑 ——这是 Agent 选股的第一道过滤网:
def screen_stocks (trade_date=None ):
basic = get_daily_basic(trade_date)
daily = get_daily_data(trade_date)
merged = pd.merge(daily, basic, on=['ts_code' , 'trade_date' ])
filtered = merged[
(merged['ts_code' ].str .startswith(('00' , '60' , '30' )))
& (~merged['ts_code' ].str .startswith('688' ))
& (~merged['ts_code' ].str .contains('ST' ))
& (merged['pct_chg' ] < 9.9 )
& (merged['pct_chg' ] > -9.9 )
& (merged['total_mv' ] > 50 )
& (merged['turnover_rate' ] > 1 )
]
is_gem = filtered['ts_code' ].str .startswith('30' )
gem_limit = filtered[is_gem & (filtered['pct_chg' ].abs () < 19.9 )]
main_board = filtered[~is_gem]
filtered = pd.concat([main_board, gem_limit])
return filtered.sort_values('vol' , ascending=False )
✅ 上证 A 股 (60xxxx):大盘蓝筹为主
✅ 深市 A 股 (00xxxx):中小盘标的丰富
✅ 创业板 (30xxxx):成长性强,20% 涨跌停带来更多机会
❌ 科创板 (688xxx):门槛高、波动大,暂不纳入
❌ 北交所 (8/4xxxxx):流动性不足
4.2 模拟交易引擎(trade_engine.py) 这是 Agent 的"手"——执行实际的买卖操作:
def buy_stock (code, name, price, shares ):
pct_chg = get_current_pct_chg(code)
limit = 19.9 if code.startswith('30' ) else 9.9
if pct_chg >= limit:
return {"success" : False , "msg" : f"{name} 已涨停,无法买入" }
shares = (shares // 100 ) * 100
commission = max (amount * 0.00025 , 5 )
def sell_stock (code, price, shares=None ):
涨跌停硬拦截 是一个重要的设计——即使 Agent 的决策出了偏差,引擎层面也会阻止不可能的操作。这保证了模拟的真实性。
4.3 手续费模型 def calc_fee (amount, direction ):
commission = max (amount * 0.00025 , 5 )
stamp_tax = amount * 0.001 if direction == 'sell' else 0
return round (commission + stamp_tax, 2 )
Agent 的"大脑"——AGENTS.md 规则配置 OpenClaw 通过 AGENTS.md 文件给 Agent 下达指令。这是 trader Agent 的核心规则(精简版):
## trader 子 Agent 模拟炒股系统
### 每日工作流程
**阶段一:收盘分析(16:30)**
1. 读取持仓 → 2. 拉行情 → 3. 更新市值 → 4. 评估持仓 → 5. 筛选新标的 → 6. 生成交易计划 → 7. 推送摘要
**阶段二:开盘执行(09:45)**
1. 解冻 T+1 → 2. 读计划 → 3. 获取开盘价 → 4. 自主判断执行 → 5. 推送成交报告
### 交易规则(硬性)
- T+1、最小 100 股、佣金万 2.5+ 印花税千 1
- 涨停不买、跌停不卖(引擎自动拦截)
- 仅限上证 A 股、深市 A 股、创业板
### 风控红线
- 单股仓位 ≤ 30%,总仓位 ≤ 80%
- 单股止损 ≥ 8%,总回撤 ≥ 10% 暂停交易
### 绝对禁止
- 不允许编造行情数据
- 不允许修改历史交易记录
- 不允许绕过 trade_engine.py 直接改 portfolio.json
这套规则的设计哲学是:给 Agent 足够的自主权去决策,但用硬规则约束它不能做危险的事 。
自动化:Crontab 定时触发
30 16 * * 1-5 /bin/bash ~/trading/scripts/trigger_close_analysis.sh
45 9 * * 1-5 /bin/bash ~/trading/scripts/trigger_open_execute.sh
0 10 * * 0 /bin/bash ~/trading/scripts/trigger_weekly_review.sh
每个触发脚本都会先判断是否为交易日(调用 TuShare 交易日历),非交易日自动跳过。
实战首秀:Agent 的第一次收盘分析 搭建完成后,我在飞书给 trader Agent 发了第一条指令:
@trader 请执行收盘分析流程,这是第一次运行。
7.1 选股结果 Agent 从 3699 只股票中,经过基础筛选得到约 2400 只,再根据自主制定的策略精选出 5 只重点关注股票 :
代码 名称 收盘价 Agent 看好理由 002475.SZ 立讯精密 49.83 消费电子龙头,量价配合 300059.SZ 东方财富 21.56 券商互联网龙头 600930.SH 华电新能 6.80 新能源赛道,低价放量 002130.SZ 沃尔核材 27.51 核电概念 601899.SH 紫金矿业 34.90 有色资源龙头(仅关注未买入)
7.2 自主制定的策略 Agent 写入 strategy.md 的核心策略:
核心原则 :趋势跟踪 + 量价配合
基础筛选 :价格 5-50 元、成交额 > 1 亿、涨幅 0-8%
技术面 :MA5 > MA10 多头排列
仓位控制 :单股 ≤ 30%,总仓位 ≤ 80%
风控 :止损 -8%,止盈 +15%
7.3 生成的交易计划 计划明日买入 4 只股票,总投入约 4 万元,预留约 1 万现金(20%),完全符合风控规则。
这一切都是 Agent 自主完成的,我没有干预任何决策。
测试验证过程 在让 Agent 正式"上岗"之前,我做了完整的测试:
8.1 数据接口测试
$ python3 tushare_helper.py trade_date 20260317
$ python3 tushare_helper.py screen
共筛选出 2422 只股票
$ python3 tushare_helper.py stock 000001.SZ 30
8.2 交易引擎测试
$ python3 trade_engine.py summary
初始资金:50,000.00 元
当前现金:50,000.00 元
$ python3 trade_engine.py buy 000001.SZ 平安银行 12.50 500 "测试买入"
买入 平安银行 500 股 @ 12.5,花费 6255(含佣金 5),剩余现金 43745
踩过的坑 问题 原因 解决方案 tree: command not found阿里云 ECS 最小化安装没有 tree yum install -y tree 或用 find 替代创业板涨跌停与主板不同 创业板是 20%,主板是 10% 选股和交易引擎中分别处理 可能买入涨停股 选股筛除了但交易时没拦截 trade_engine 加入涨跌停硬拦截 科创板/北交所混入选股池 初始代码只过滤了主板代码 明确范围为上证 + 深市 + 创业板
加装官方 TuShare Skill:从"够用"到"专业级" 前面的 tushare_helper.py 覆盖了选股和交易的核心需求,但 TuShare 其实还有更多宝藏接口。好消息是,TuShare 官方发布了一个 OpenClaw 专属 Skill (skills.sh/waditu-tushare),覆盖 220+ 数据接口 ,安装后 Agent 可以直接调用。
安装一行搞定
mv ~/.openclaw/skills/tushare ~/.openclaw/skills/tushare.bak.old
npx skills add https://github.com/waditu-tushare/skills --skill tushare
openclaw gateway restart
安全评估:Gen Safe ✅ · Socket 0 alerts ✅ · Snyk Med Risk
效果立竿见影 安装后我在飞书问了一句"查询今日沪深港通资金流向",Agent 立刻返回了一份完整报告:
沪股通/深股通成交额与北向资金净买入
沪股通十大成交股(贵州茅台、兆易创新、紫金矿业……)
深股通十大成交股(宁德时代、中际旭创、天孚通信……)
港股通成交股(腾讯、阿里、小米、中海油……)
关键发现 :Agent 自动把资金流向数据和交易计划关联——"立讯精密在深股通中排名第 5,获北向资金关注,支持明日买入计划"
最后一条特别惊喜:Agent 自主建立了不同数据源之间的关联 ,这说明它的分析已经超越了单一数据维度。
双通道架构 现在 trader Agent 拥有两个互补的数据通道:
通道 用途 接口数 tushare_helper.py 模拟炒股专用(选股、交易执行) ~10 个 TuShare 官方 Skill 深度分析(龙虎榜、资金流向、筹码、财报、技术因子、新闻……) 220+
后续计划
手动验证期 (第 1 周):每天手动触发,观察 Agent 决策质量
全自动运行 (第 2 周起):切换到 crontab 全自动
策略进化 :观察 Agent 是否会根据盈亏自主调整策略
增加 Researcher 协作 :让 researcher Agent 搜索行业新闻,trader 综合判断
月度/季度收益对比 :与沪深 300 指数做基准对比
写在最后 整个搭建过程大约花了一个傍晚。最让我惊喜的不是系统本身,而是 trader Agent 第一次运行就展现出了合理的投资逻辑 ——它会看量价关系、会分散仓位、会预留现金、会设置止损线。
当然,AI 炒股到底能不能赚钱,还需要时间来验证。但至少,OpenClaw 让我们能够快速搭建这样一个实验平台,用极低的成本去探索 AI Agent 在金融领域的可能性。
这不是炒股建议,这是一次技术实验。 但如果你也对 AI Agent 感兴趣,不妨动手试试——毕竟,5 万虚拟资金,输了也不心疼 。
OpenClaw 官方文档:GitHub
TuShare 数据接口:tushare.pro
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online