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

OpenClaw + 飞书 Agent 构建 AI 自主模拟炒股系统实战

OpenClaw 结合飞书 Agent 构建自主模拟炒股系统的完整实践。系统采用两阶段循环架构,涵盖收盘分析与开盘执行,集成 TuShare 数据接口与 Kimi 大模型作为决策核心。通过严格模拟 T+1、涨跌停及手续费规则,验证了 AI Agent 在选股、仓位管理及风控方面的逻辑能力。文章详细记录了从环境配置、代码实现到自动化部署的全流程,并分享了实战中的踩坑经验与策略优化方向。

baireiraku发布于 2026/4/9更新于 2026/9/866 浏览
OpenClaw + 飞书 Agent 构建 AI 自主模拟炒股系统实战

背景与目标

2026 年,AI Agent 已从简单的对话机器人进化为能自主执行复杂工作流的智能体。如果给一个 AI Agent 一笔资金,让它完全自主地在 A 股市场投资,结果会如何?借助 OpenClaw(开源 AI Agent 框架),这个实验变得可行。

本次实验的核心目标是:

  • 配置 trader Agent 拥有 5 万元虚拟资金
  • 实现完全自主的选股、买卖决策及仓位管理
  • 严格遵守 A 股交易规则(T+1、涨跌停、手续费)
  • 每日自动运行,仅观察最终结果

技术栈一览

组件技术选型用途
Agent 框架OpenClaw 2026.3.8多 Agent 协作平台
前端交互飞书 Agent「多多助理」人机交互界面,接收报告
大模型Kimi 2.5决策核心,负责推理
行情数据TuShare 高级 APIA 股日线、基本面、日历
信息搜索SearXNG + Jina Reader财经新闻辅助决策
金融数据 SkillTuShare 官方 Skill220+ 接口支持
服务器阿里云 ECS7×24 小时运行

OpenClaw 支持多子 Agent 架构,我配置了 researcher(研究员)、coder(程序员)、writer(写手)和 trader(交易员)。本文重点聚焦于 trader 的实现逻辑。

系统架构设计

两阶段每日循环

整个系统的核心是一个闭环流程:

graph TD
A[16:30 收盘分析] --> B[拉取全市场行情]
B --> C[更新持仓市值]
C --> D[评估持仓:持有/卖出/加仓]
D --> E[基础选股筛选 2000+ 只]
E --> F[精选候选标的 3-5 只]
F --> G[生成次日交易计划]
G --> H[推送分析摘要到飞书]
I[09:45 开盘执行] --> J[解冻 T+1 冻结仓位]
J --> K[读取交易计划]
K --> L[获取今日开盘价]
L --> M[自主判断:执行/调整/放弃]
M --> N[逐笔执行交易]
N --> O[推送成交报告到飞书]
O -.->|等待收盘 | A
H -.->|过夜 | I
目录结构

合理的文件组织是自动化运行的基础:

~/.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            # 定时任务日志
关键设计原则
  • Agent 决策,脚本执行:Agent 负责分析和决策,Python 脚本负责数据拉取和交易执行。
  • 严格模拟真实规则:T+1、涨跌停限制、手续费,一个不少。
  • 防止 Agent 作弊:所有数据必须来自 TuShare,禁止编造行情;禁止直接修改 portfolio.json。
  • 策略自主进化:Agent 自己维护 strategy.md,每周复盘更新。

核心代码实现

TuShare 数据助手

这部分充当了 Agent 的感知层,封装了所有行情数据接口。选股筛选逻辑是 Agent 的第一道过滤网:

# 核心函数 def get_trade_date(offset=0): ...

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):流动性不足
模拟交易引擎

这是 Agent 的'手',执行实际的买卖操作。涨跌停硬拦截是一个重要的设计——即使 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
手续费模型

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

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)

Agent 规则配置

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 足够的自主权去决策,但用硬规则约束它不能做危险的事。

自动化部署

三个定时任务驱动整个系统,每个触发脚本都会先判断是否为交易日(调用 TuShare 交易日历),非交易日自动跳过:

# 收盘分析:每个工作日 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

实战首秀

搭建完成后,我在飞书给 trader Agent 发了第一条指令:@trader 请执行收盘分析流程,这是第一次运行。

Agent 的表现让我惊喜:从 3699 只股票中,经过基础筛选得到约 2400 只,再根据自主制定的策略精选出 5 只重点关注股票。例如立讯精密、东方财富等,Agent 给出了量价配合、赛道逻辑等理由。

Agent 写入 strategy.md 的核心策略包括趋势跟踪、MA5>MA10 多头排列、单股≤30% 仓位控制等。这一切都是 Agent 自主完成的,我没有干预任何决策。

测试验证过程

在让 Agent 正式'上岗'之前,我做了完整的测试:

  1. 数据接口测试:TuShare 连接正常,基础选股筛出 2422 只股票,个股历史 K 线获取无误。
  2. 交易引擎测试:初始账户 5 万元,模拟买入平安银行 500 股,佣金计算验证正确(6255 元含佣金 5 元),剩余现金 43745 元。

所有测试一次通过!

踩过的坑

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

加装官方 TuShare Skill

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

安装一行搞定:

# 备份旧版(如有)
mv ~/.openclaw/skills/tushare ~/.openclaw/skills/tushare.bak.old
# 安装官方 Skill
npx skills add https://github.com/waditu-tushare/skills --skill tushare
# 重启 Gateway
openclaw gateway restart

安全评估显示 Gen Safe ✅ · Socket 0 alerts ✅ · Snyk Med Risk。

安装后我在飞书问了一句'查询今日沪深港通资金流向',Agent 立刻返回了一份完整报告,甚至自动把资金流向数据和交易计划关联——'立讯精密在深股通中排名第 5,获北向资金关注,支持明日买入计划'。这说明它的分析已经超越了单一数据维度。

现在 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 万虚拟资金,输了也不心疼。

相关资源

  • OpenClaw 官方文档:GitHub
  • TuShare 数据接口:tushare.pro

目录

  1. 两阶段每日循环
  2. 目录结构
  3. 关键设计原则
  4. TuShare 数据助手
  5. 核心函数 def gettradedate(offset=0): ...
  6. 模拟交易引擎
  7. 手续费模型
  8. trader 子 Agent 模拟炒股系统
  9. 每日工作流程
  10. 交易规则(硬性)
  11. 风控红线
  12. 绝对禁止
  13. 收盘分析:每个工作日 16:30
  14. 开盘执行:每个工作日 09:45
  15. 周末复盘:每周日 10:00
  16. 备份旧版(如有)
  17. 安装官方 Skill
  18. 重启 Gateway

更多推荐文章

查看全部
  • DPI 系统详解:从流量感知到业务理解的关键网络能力
  • Qt Creator 接入外部 AI 大模型配置指南
  • 从前端到 DevOps:开发者必备 AI 工作流工具
  • AutoFigure:从长文本到出版级科研插图的 AI 生成框架
  • 基于 GitHub Actions 的 Hugo 博客自动化部署
  • 本地代码上传 Gitee 实战:Git 配置与推送详解
  • 基于 SSM 和 Vue 的在线投稿系统设计与实现
  • AVL 树的平衡原理与 C++ 实现
  • Spring Boot 教室信息管理系统设计与实现
  • 二分查找算法详解与常见变种实战
  • Cppcheck C/C++ 代码静态分析工具使用指南
  • 本地部署开源语言大模型 Llama3 及中文微调版教程
  • MCP Server 实战:Excel 数据转可视化 HTML 报告
  • Python Flask 企业合同管理系统技术要点与选型对比
  • Jimi:打造 Java 程序员专属的开源 AI 编程代理
  • 机器人轨迹规划基础与常用算法
  • Llama Factory 实战:低显存环境下的 LoRA 大模型微调
  • 线程池单例模式、线程安全与重入及死锁问题解析
  • 基于腾讯云 HAI 与 DeepSeek 快速构建个人网页
  • Git LFS 跨平台安装指南:Linux、macOS 与 Windows 配置详解

相关免费在线工具

  • 加密/解密文本

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