跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 OpenClaw 与飞书 Agent 的 AI 自主模拟炒股系统实战

综述由AI生成记录了使用 OpenClaw 框架结合飞书 Agent、Kimi 大模型及 TuShare 数据接口,搭建 AI 自主模拟炒股系统的完整过程。系统包含研究员、程序员、写手和交易员四个子 Agent,通过两阶段每日循环(收盘分析与开盘执行)实现自动选股、决策买卖及管理仓位。核心代码基于 Python 编写,严格模拟 A 股 T+1、涨跌停及手续费规则。测试结果显示 Agent 能自主制定策略并生成交易计划,验证了 AI Agent 在金融领域的自主决策能力。

未来可期发布于 2026/4/6更新于 2026/5/2232 浏览
基于 OpenClaw 与飞书 Agent 的 AI 自主模拟炒股系统实战

背景:为什么让 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.5Agent 的"大脑",负责推理决策
行情数据TuShare 高级 APIA 股日线、基本面、交易日历
信息搜索SearXNG + Jina Reader搜索财经新闻辅助决策
金融数据 SkillTuShare 官方 Skill(waditu-tushare)220+ 接口:龙虎榜、资金流向、财务报表等
服务器阿里云 ECS7×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
H -.->|"过夜"| I
3.2 目录结构
~/.openclaw/workspace/trading/
├── data/
│   ├── portfolio.json # 账户与持仓
│   ├── strategy.md # Agent 自主维护的策略文档
│   └── trade_plan.json # 次日交易计划
├── scripts/
│   ├── tushare_helper.py # TuShare 数据助手
│   ├── 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): # 基本面指标(PE/PB/换手率)
def get_stock_history(code, days): # 个股历史 K 线
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'])
    # 选股范围:上证 A 股 + 深市 A 股 + 创业板
    # 排除:科创板 (688xxx)、北交所、ST 股
    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) # 市值 > 50 亿
        & (merged['turnover_rate'] > 1) # 换手率 > 1%
    ]
    # 创业板涨跌停为 20%,需单独处理
    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,):
    # 1. 涨停检查:涨停的股票无法买入
    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} 已涨停,无法买入"}
    
    # 2. 股数取整到 100 的倍数
    shares = (shares // 100) * 100
    
    # 3. 计算费用:佣金万 2.5(最低 5 元)
    commission = max(amount * 0.00025, 5)
    
    # 4. 资金检查、扣款、更新持仓
    # 5. T+1 冻结:当天买入的股票今天不能卖
    # 6. 写入交易日志 CSV

def sell_stock(code, price, shares=None,):
    # 1. 跌停检查:跌停的股票无法卖出
    # 2. T+1 检查:今天买的不能今天卖
    # 3. 计算费用:佣金 + 印花税千 1
    # 4. 收款、更新持仓、写日志

涨跌停硬拦截是一个重要的设计——即使 Agent 的决策出了偏差,引擎层面也会阻止不可能的操作。这保证了模拟的真实性。

4.3 手续费模型
def calc_fee(amount, direction):
    commission = max(amount * 0.00025, 5) # 佣金万 2.5,最低 5 元
    stamp_tax = amount * 0.001 if direction == 'sell' else 0 # 卖出印花税千 1
    return round(commission + stamp_tax, 2)

与真实 A 股完全一致,让模拟结果更有参考价值。


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 定时触发

三个定时任务驱动整个系统:

# 收盘分析:每个工作日 16:30
30 16 * * 1-5 /bin/bash ~/trading/scripts/trigger_close_analysis.sh
# 开盘执行:每个工作日 09:45
45 9 * * 1-5 /bin/bash ~/trading/scripts/trigger_open_execute.sh
# 周末复盘:每周日 10:00
0 10 * * 0 /bin/bash ~/trading/scripts/trigger_weekly_review.sh

每个触发脚本都会先判断是否为交易日(调用 TuShare 交易日历),非交易日自动跳过。


实战首秀:Agent 的第一次收盘分析

搭建完成后,我在飞书给 trader Agent 发了第一条指令:

@trader 请执行收盘分析流程,这是第一次运行。

Agent 的表现让我惊喜:

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 数据接口测试
# TuShare 连接
$ 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
# 佣金计算验证:12.5 × 500 = 6250,佣金 = max(6250×0.00025, 5) = 5 ✅
# 总花费 = 6250 + 5 = 6255 ✅

所有测试一次通过!


踩过的坑

问题原因解决方案
tree: command not found阿里云 ECS 最小化安装没有 treeyum install -y tree 或用 find 替代
创业板涨跌停与主板不同创业板是 20%,主板是 10%选股和交易引擎中分别处理
可能买入涨停股选股筛除了但交易时没拦截trade_engine 加入涨跌停硬拦截
科创板/北交所混入选股池初始代码只过滤了主板代码明确范围为上证 + 深市 + 创业板

加装官方 TuShare Skill:从"够用"到"专业级"

前面的 tushare_helper.py 覆盖了选股和交易的核心需求,但 TuShare 其实还有更多宝藏接口。TuShare 官方发布了一个 OpenClaw 专属 Skill(waditu-tushare),覆盖 220+ 数据接口,安装后 Agent 可以直接调用。

安装一行搞定
# 备份旧版(如有)
mv ~/.openclaw/skills/tushare ~/.openclaw/skills/tushare.bak.old
# 安装官方 Skill
npx skills add https://github.com/waditu-tushare/skills --skill tushare
# → Installation scope: Global
# → Installation method: Symlink (Recommended)
# → Proceed: Yes
# 重启 Gateway
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. 手动验证期(第 1 周):每天手动触发,观察 Agent 决策质量
  2. 全自动运行(第 2 周起):切换到 crontab 全自动
  3. 策略进化:观察 Agent 是否会根据盈亏自主调整策略
  4. 增加 Researcher 协作:让 researcher Agent 搜索行业新闻,trader 综合判断
  5. 月度/季度收益对比:与沪深 300 指数做基准对比

写在最后

整个搭建过程大约花了一个傍晚。最让我惊喜的不是系统本身,而是 trader Agent 第一次运行就展现出了合理的投资逻辑——它会看量价关系、会分散仓位、会预留现金、会设置止损线。

当然,AI 炒股到底能不能赚钱,还需要时间来验证。但至少,OpenClaw 让我们能够快速搭建这样一个实验平台,用极低的成本去探索 AI Agent 在金融领域的可能性。

这不是炒股建议,这是一次技术实验。 但如果你也对 AI Agent 感兴趣,不妨动手试试——毕竟,5 万虚拟资金,输了也不心疼。

目录

  1. 背景:为什么让 AI Agent 炒股?
  2. 我的目标
  3. 技术栈一览
  4. 系统架构设计
  5. 3.1 两阶段每日循环
  6. 3.2 目录结构
  7. 3.3 关键设计原则
  8. 核心代码实现
  9. 4.1 TuShare 数据助手(tushare_helper.py)
  10. 核心函数一览
  11. 4.2 模拟交易引擎(trade_engine.py)
  12. 4.3 手续费模型
  13. Agent 的"大脑"——AGENTS.md 规则配置
  14. trader 子 Agent 模拟炒股系统
  15. 每日工作流程
  16. 交易规则(硬性)
  17. 风控红线
  18. 绝对禁止
  19. 自动化:Crontab 定时触发
  20. 收盘分析:每个工作日 16:30
  21. 开盘执行:每个工作日 09:45
  22. 周末复盘:每周日 10:00
  23. 实战首秀:Agent 的第一次收盘分析
  24. 7.1 选股结果
  25. 7.2 自主制定的策略
  26. 7.3 生成的交易计划
  27. 测试验证过程
  28. 8.1 数据接口测试
  29. TuShare 连接
  30. 基础选股
  31. 个股历史
  32. 8.2 交易引擎测试
  33. 初始账户
  34. 模拟买入
  35. 佣金计算验证:12.5 × 500 = 6250,佣金 = max(6250×0.00025, 5) = 5 ✅
  36. 总花费 = 6250 + 5 = 6255 ✅
  37. 踩过的坑
  38. 加装官方 TuShare Skill:从"够用"到"专业级"
  39. 安装一行搞定
  40. 备份旧版(如有)
  41. 安装官方 Skill
  42. → Installation scope: Global
  43. → Installation method: Symlink (Recommended)
  44. → Proceed: Yes
  45. 重启 Gateway
  46. 效果立竿见影
  47. 双通道架构
  48. 后续计划
  49. 写在最后
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Vue 3 开发实战:10 个提升效率的核心技巧
  • Agent Native 取代 Copilot:定义下一代 AI 系统架构
  • Shell 基础命令与变量操作详解
  • Java 核心:hashCode 与 equals 的正确姿势
  • 链表应用实战:从内存管理到缓存淘汰
  • LLM 提示词工程核心原理与实战技巧
  • AI 前端技术解析:从概念到实战进阶路线
  • 混合知识库搭建:本地 Docker 部署 Neo4j 图数据库与 Milvus 向量库
  • 前端团队协作最佳实践
  • 量化、算子融合、内存映射:C 语言实现 AI 推理的三板斧
  • AIGC时代编程新宠!如何让孩子通过DeepSeek成为未来的编程大师?
  • MIPI DSI 4-Lane 液晶屏驱动开发:时序解析与 FPGA 对接
  • 18 款 AI Agent 框架技术选型与对比分析
  • 前端自动化部署指南:CI/CD、Docker 与缓存策略
  • 双向循环链表插入操作详解
  • AI 原生应用开发:知识图谱七大核心算法
  • FLUX.1-dev FP8 模型低显存部署与优化指南
  • KIMI 与文心一言、通义千问大模型能力对比评测
  • Web3 社区运营指南
  • AI 前端核心概念、技术栈与职业进阶路径

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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