4.9 KiB
TradingAgents-Astock
项目概述
基于 TauricResearch/TradingAgents(65K Stars)的 A 股深度特化 fork。多 Agent 投研框架,7 个 Analyst 角色通过 Bull/Bear 辩论 + 三方风险辩论生成投资报告。
- 仓库: https://github.com/simonlin1212/TradingAgents-astock
- 协议: Apache 2.0
- Python: >=3.10
- 当前版本: 0.4.0
架构
数据层(v0.2.5 全部直连 HTTP,零第三方数据库依赖)
| 来源 | 协议 | 数据 |
|---|---|---|
| mootdx | TCP 7709 | OHLCV K线、财务快照、F10 文本 |
| 腾讯财经 | HTTP (qt.gtimg.cn) | PE/PB/市值/换手率 |
| 东方财富 datacenter | HTTP (datacenter-web) | 龙虎榜、限售解禁、板块行情 |
| 东方财富 push2/push2his | HTTP (push2.eastmoney) | 实时行情、个股信息、板块列表、资金流(分钟+日级) |
| 东方财富 np-weblist | HTTP | 滚动新闻 |
| 新浪财经 | HTTP (money.finance.sina) | K线历史、财报三表 |
| 同花顺 10jqka | HTTP | EPS 一致预期、热股题材 |
| 财联社 cls.cn | HTTP | 全球财经快讯 |
| 百度股市通 | HTTP (gushitong.baidu) | 概念板块归属(资金流已迁移至东财push2) |
Agent 角色(7 个)
原版 4 个(市场/情绪/新闻/基本面)+ A 股特化 3 个(政策分析师/游资追踪/解禁监控)
关键路径
tradingagents/dataflows/a_stock.py— A 股数据 vendor,所有数据获取入口tradingagents/dataflows/utils.py—safe_ticker_component路径安全校验 + 中文 ticker 自动解析tradingagents/agents/— 7 个 Analyst + Bull/Bear 辩论逻辑web/— Streamlit Web UIcli/— CLI 入口
中文股票名解析链路
用户/LLM 输入 → safe_ticker_component 检测中文 → resolve_ticker() → _build_name_code_map()(mootdx 全市场映射,缓存)→ 返回 6 位代码
已知问题与注意事项
依赖冲突(v0.2.6 已缓解)
mootdx 钉死 httpx>=0.25,<0.26,与 langchain-google-genai 所需的 httpx>=0.28.1 结构性冲突(该区间内每个 google-genai 版本都要 0.28.1,无解)。
v0.3.1 起 [google] extra 已移除(#87):uv 构建覆盖所有 extra 的 universal lock,extra 存在就让所有人的 uv sync 失败。留空更糟(pip install .[google] 静默装空)。需要 Gemini 时显式装 pip install --no-deps "langchain-google-genai>=4.0.0" + pip install "google-genai>=1.53.0" "httpx>=0.28.1";google_client.py 导入失败会打印这两条命令。⚠️ 新增依赖后务必跑 uv lock --dry-run 验证——pip 能装通不代表 uv 能锁。
akshare 已移除(v0.2.5)
v0.2.5 起完全移除 akshare 依赖,所有数据通过直连 HTTP API 获取。
百度 PAE 资金流接口已下线(v0.2.7 已修复)
fundsortlist 和 fundflow 两个接口返回空(2026-05-19 确认)。v0.2.7 已替换为东财 push2 资金流 API。同时修复了 RPT_ORGANIZATION_BUSSINESS(改用席位筛选机构)和东财全球资讯 req_trace 参数。
东财接口防封限流(v0.2.11 新增,移植自 a-stock-data v3.2)
a_stock.py 里所有指向 eastmoney.com 的请求(push2 / push2his / datacenter-web / search-api / np-weblist 共 7 个调用点)统一走节流入口 _em_get():模块级时间戳串行限流(默认间隔 EM_MIN_INTERVAL=1.0s,可用同名环境变量覆盖)+ 0.1~0.5s 随机抖动 + 复用 requests.Session(Keep-Alive)+ 默认 UA。多 Agent 跑批量分析不再触发东财临时封 IP。仅东财限流——mootdx(TCP) / 腾讯 / 新浪 / 同花顺 / 财联社 / 百度 等非东财源不受影响。批量场景可设 EM_MIN_INTERVAL=1.5~2 进一步降速。新增东财端点时务必走 _em_get 而非裸 requests.get。
模型兼容性
deepseek-v4-flash 等模型在 tool call 时可能返回中文股票名而非 6 位代码。safe_ticker_component 已加兜底自动转码,但不同模型表现仍有差异。
待处理 PR
- PR #18(hejingchi):start_date 功能 + 主题切换 + Windows 字体。不建议直接 merge(与 v0.2.6 冲突),start_date 功能值得后续自行实现。
Issue 归档
所有 GitHub Issue 的详细记录在 issues/ 文件夹中,包含问题描述、根因分析、修复方案和当前状态。
开发规范
- 改动前先跑
python -m pytest tests/ -v确保不破坏现有测试 safe_ticker_component是安全边界,任何绕过路径校验的改动必须慎重评估- 数据层新增接口遵循
tradingagents/dataflows/interface.py的 vendor 路由模式 - Web UI 改动在
web/目录,用streamlit run web/launch.py本地测试
相关项目
- a-stock-data — A 股 MCP 数据服务(Claude Code 用的 skill)
- 上游 TauricResearch/TradingAgents — 原版框架