← 返回文章
Agent17 分钟阅读

Daily Stock Analysis:从数据抓取到 Agent 决策的完整使用指南

这篇文章系统梳理 Daily Stock Analysis 的核心功能、部署方式、普通分析与 Agent 模式的实现差异,并用一只股票示例说明不同模式下报告会长什么样。

🧩

TL;DR:Daily Stock Analysis 是一个面向 A 股、港股、美股的智能分析系统。它把行情、日线、技术指标、筹码、资金流、新闻情报、板块背景和大模型判断串成一条自动化链路,最后生成可推送、可回看、可在 Web 中追问的决策报告。

🧩 Daily Stock Analysis:从数据抓取到 Agent 决策的完整使用指南

🔍 一、这个项目解决什么问题

Daily Stock Analysis,简称 DSA,本质上是一个“自选股自动研究员”。它不是单纯行情提醒,也不是只调用大模型写一段点评,而是把数据抓取、指标计算、新闻搜索、风险排查、LLM 分析、报告生成和通知推送放在同一条流水线上。

它适合三类场景:

  • 每天收盘后自动分析自选股,生成可执行的买卖观察报告。

  • 在 Web 工作台里手动分析某只股票,并查看历史报告、回测、持仓。

  • 用 Agent 问股,围绕趋势、均线、热点、事件、成长、缠论、波浪等策略做多轮追问。

项目覆盖 A 股、港股、美股,但不同市场的数据源完整度不同。A 股能力最完整,包括实时行情、日线、技术指标、筹码分布、板块归属、资金流和新闻情报。

⚙️ 二、核心功能全景

模块能力用途
行情与日线实时价、涨跌幅、成交量、历史 K 线判断当前价格位置、趋势和均线结构
技术分析MA5、MA10、MA20、乖离率、支撑位、压力位、MACD、RSI、量能给趋势、买点、风险位提供量化背景
筹码分布获利比例、平均成本、集中度判断套牢盘、获利盘和筹码压力
资金流主力净流入、5 日/10 日流入判断量价背后是否有资金确认
新闻情报最新消息、公告、机构观点、风险排查、业绩预期补充技术面之外的催化和风险
板块背景所属行业、概念、题材、板块热度判断个股是否处在板块共振中
AI 报告核心结论、评分、趋势、买卖点、止损、风险、催化把数据转成可读、可执行的决策仪表盘
Agent 问股ReAct 工具调用、15 种策略 Skill、多轮问答、多 Agent 编排支持针对一只股票持续追问
Web / 桌面配置管理、手动分析、任务进度、历史报告、回测、持仓把命令行能力变成可视化工作台
通知推送企业微信、飞书、Telegram、Discord、Slack、邮箱、自定义 Webhook每天自动把报告推到使用场景里

🚀 三、如何部署和运行

1. 本地命令行运行

最小方式是复制环境变量模板,配置股票列表和至少一个大模型 Key:

cp .env.example .env
pip install -r requirements.txt
python main.py

常用命令:

python main.py                         # 股票分析 + 大盘复盘
python main.py --stocks 600519,300750  # 指定股票
python main.py --market-review         # 只做大盘复盘
python main.py --no-market-review      # 只做个股分析
python main.py --dry-run               # 只抓数据,不调用 AI
python main.py --no-notify             # 生成报告但不推送
python main.py --schedule              # 本地定时任务模式
python main.py --debug                 # 输出更详细日志

2. Web 工作台

Web 模式会启动 FastAPI 和前端工作台:

python main.py --serve-only

默认访问:

http://127.0.0.1:8000

Web 里可以做这些事:

  • 修改系统配置和模型配置。

  • 手动触发个股分析或大盘复盘。

  • 查看任务进度和历史报告。

  • 使用 Agent 策略问股。

  • 管理回测、持仓、告警规则。

3. Docker 部署

Docker 更适合长期运行:

docker-compose -f ./docker/docker-compose.yml up -d server

或者启动定时分析容器:

docker-compose -f ./docker/docker-compose.yml up -d analyzer

两者都启动:

docker-compose -f ./docker/docker-compose.yml up -d

常见模式:

命令用途端口
docker-compose -f ./docker/docker-compose.yml up -d serverWeb / API 服务模式8000
docker-compose -f ./docker/docker-compose.yml up -d analyzer每日自动分析模式-
docker-compose -f ./docker/docker-compose.yml up -d同时启动 Web 和定时任务8000

4. GitHub Actions 自动运行

适合不想维护服务器的人。把仓库 Fork 后,在 Actions Secrets / Variables 中配置:

  • 大模型 API Key。

  • 股票列表。

  • 通知渠道 Webhook。

  • 可选搜索 API Key 和 Tushare Token。

默认工作流通常在交易日收盘后运行,适合“每天自动推送一份报告”。

🧭 四、一次实际分析会发生什么

600487 为例,典型流程如下:

  1. 读取股票列表:从 .env、命令行参数或 Web 请求里拿到 600487

  2. 获取基础行情:先拿日线,再拿实时行情,用实时价补齐盘中/盘后价格状态。

  3. 计算技术指标:计算 MA5、MA10、MA20、均线排列、乖离率、支撑位、压力位、趋势评分、MACD、RSI、量能。

  4. 获取筹码分布:如果当天筹码还没更新,可能自动取上一个交易日。

  5. 获取资金流:优先通过配置的数据源获取个股资金流;如果 AkShare 个股资金流缺失,可以回退到 Tushare moneyflow\_dc

  6. 获取所属板块:查询行业、概念、题材,用于判断板块共振和情绪背景。

  7. 搜索新闻情报:围绕“最新消息、机构分析、风险排查、公司公告、业绩预期”等维度构建查询。

  8. 构造 Prompt:把行情、技术指标、筹码、资金流、新闻、板块和系统交易纪律拼成大模型输入。

  9. 生成报告:输出决策仪表盘,包括评分、趋势、买点、止损、风险和操作建议。

  10. 后处理和推送:做字段完整性检查、决策稳定性校准、通知分段或转图片推送。

这个流程的关键是:日线数据负责历史结构,实时行情负责当前状态,新闻和资金流负责确认或否定技术信号。

🏗️ 五、普通分析和 Agent 模式有什么区别

普通 python main.py 更像一条固定流水线:

数据抓取 -> 技术分析 -> 新闻搜索 -> Prompt -> LLM -> 报告 -> 推送

Agent 模式则是工具调用循环:

用户问题 -> LLM 判断需要什么数据 -> 调工具 -> 返回观察结果 -> LLM 继续判断 -> 最终回答

它是项目自研的 ReAct 风格实现,不依赖 LangChain、AutoGen 或 CrewAI。工具由项目内的 ToolRegistry 注册,包括:

  • get\_realtime\_quote

  • get\_daily\_history

  • get\_chip\_distribution

  • get\_analysis\_context

  • get\_stock\_info

  • get\_capital\_flow

  • analyze\_trend

  • calculate\_ma

  • get\_volume\_analysis

  • analyze\_pattern

  • search\_stock\_news

  • search\_comprehensive\_intel

  • get\_market\_indices

  • get\_sector\_rankings

  • get\_skill\_backtest\_summary

  • get\_strategy\_backtest\_summary

  • get\_stock\_backtest\_summary

当前 Agent 不加载 MCP 工具。它使用的是项目自己的 Python function tools。

🧠 六、Agent 策略和多 Agent 编排

Agent 的策略写在 strategies/\*.yaml,本质是自然语言 Skill,不是硬编码 Python 规则。内置策略包括:

  • 默认多头趋势 bull\_trend

  • 缩量回踩 shrink\_pullback

  • 放量突破 volume\_breakout

  • 均线金叉 ma\_golden\_cross

  • 底部放量 bottom\_volume

  • 箱体震荡 box\_oscillation

  • 龙头策略 dragon\_head

  • 热点题材 hot\_theme

  • 事件驱动 event\_driven

  • 成长质量 growth\_quality

  • 预期重估 expectation\_repricing

  • 情绪周期 emotion\_cycle

  • 缠论 chan\_theory

  • 波浪理论 wave\_theory

  • 一阳夹三阴 one\_yang\_three\_yin

配置方式:

AGENT_MODE=true
AGENT_SKILLS=bull_trend,shrink_pullback,volume_breakout

如果留空,默认使用主默认策略,内置默认是 bull\_trend

多 Agent 编排是顺序工作流,不是自由协商。典型链路:

quick:      technical -> decision
standard:   technical -> intel -> decision
full:       technical -> intel -> risk -> decision
specialist: technical -> intel -> risk -> skill_agent_1 -> skill_agent_2 -> skill_agent_3 -> decision

其中 Agent 编排层是顺序执行;同一个 Agent 内部一次请求多个工具时,工具层可以并行执行。

📄 七、不同模式下报告长什么样

1. REPORT\_TYPE=brief

适合推送很短的消息,通常是 3 到 5 句话。

示例:

600487 当前处在震荡偏弱区间,价格未形成有效突破。短线需要观察 MA5 附近承接和成交量变化,若资金流继续为负,应以持有观察或降低仓位为主。上方压力关注前高和 MA20 附近,下方支撑关注最近结构低点。

特点:

  • 极短。

  • 适合手机通知。

  • 不展开完整指标。

2. REPORT\_TYPE=simple

适合日常默认推送。它会保留核心结论、评分、趋势、操作建议和风险。

示例结构:

📌 核心结论:持有观察
综合评分:52/100
趋势判断:震荡整理,尚未确认向上突破
操作建议:无仓位等待回踩确认;有仓位观察支撑,不放量突破不加仓
关键支撑:xx.xx
关键压力:xx.xx
风险提示:主力资金流偏弱,新闻催化不足

特点:

  • 比 brief 信息更完整。

  • 适合企业微信、飞书、Telegram 推送。

  • 不会像 full 那样展开所有证据链。

3. REPORT\_TYPE=full

适合 Docker、Web 历史报告、复盘归档。它会保留完整 Markdown 和较完整的分析过程。

示例结构:

# 600487 决策仪表盘

## 核心结论
- 当前建议:持有观察
- 置信度:中等
- 综合评分:52/100

## 技术面
- MA5 / MA10 / MA20 排列
- 乖离率
- 支撑位 / 压力位
- MACD / RSI
- 量能变化

## 资金与筹码
- 主力净流入
- 5 日 / 10 日资金流
- 获利比例
- 筹码集中度

## 新闻与风险
- 最新公告
- 行业政策
- 业绩预期
- 减持、解禁、监管等风险

## 操作计划
- 买入触发条件
- 加仓条件
- 止损条件
- 观察清单

特点:

  • 最适合复盘和归档。

  • 字段完整,便于 Web 展示和历史查询。

  • 推送渠道长度有限时可能会分段或转图片。

4. 大盘复盘模式

命令:

python main.py --market-review

报告关注的是市场整体,而不是单只股票:

# A股大盘复盘

## 市场信号
66/100,风险偏积极

## 指数表现
上证、深成指、创业板、科创等主要指数状态

## 板块结构
强势板块、弱势板块、资金集中方向

## 新闻催化
政策、宏观、产业事件

## 下一交易日计划
关注方向、风险点、仓位建议

5. Agent 单 Agent 模式

配置:

AGENT_MODE=true
AGENT_ARCH=single
AGENT_SKILLS=bull_trend,shrink_pullback

输出更像“带工具调用的策略问答”:

你问:600487 现在像不像缩量回踩?

Agent 会先调用日线、实时行情、趋势分析、资金流和新闻工具,随后回答:
- 是否满足缩量回踩条件
- 哪些条件满足
- 哪些条件缺失
- 是否适合介入
- 止损位在哪里

6. Agent 多 Agent 模式

配置:

AGENT_MODE=true
AGENT_ARCH=multi
AGENT_ORCHESTRATOR_MODE=full

输出来自多个角色的顺序评审:

technical: 技术面判断趋势和关键位
intel: 搜索新闻、公告和情绪
risk: 检查减持、解禁、业绩雷、监管等风险
decision: 汇总所有意见,输出最终建议

如果使用 specialist

AGENT_ORCHESTRATOR_MODE=specialist

会在 decision 前插入最多 3 个策略专家,例如:

skill_bull_trend
skill_volume_breakout
skill_shrink_pullback

它们当前是顺序执行的独立评审,最后由 decision 统一汇总。

🔧 八、部署时最容易踩的点

  • 至少要有一个可用大模型 Key:没有模型就只能 dry-run 抓数据,不能生成 AI 报告。

  • 搜索 Key 是增强项:没有搜索 Key 也能跑基础技术面,但新闻情报会弱很多。

  • Tushare Token 是增强项:有助于补齐筹码、资金流等数据;不同接口积分权限不同。

  • Docker 里推荐 ****REPORT\_TYPE=full:避免推送内容看起来不完整,完整报告也更适合 Web 历史。

  • Web 外网访问要设置 host:云服务器部署通常需要 WEB\_HOST=0.0.0.0 或命令行 --host 0.0.0.0

  • 通知渠道不是必须:不配置也能生成本地报告;配置后才会推送。

  • Agent 模式更贵更慢:单 Agent 已经会多轮工具调用,多 Agent 会增加 LLM 调用次数。

✅ 九、我的使用建议

如果只是每天看自选股:

REPORT_TYPE=simple
AGENT_MODE=false

如果希望报告完整归档:

REPORT_TYPE=full

如果希望在 Web 里追问股票:

AGENT_MODE=true
AGENT_ARCH=single
AGENT_SKILLS=bull_trend,shrink_pullback,volume_breakout

如果想要更强的风险检查:

AGENT_MODE=true
AGENT_ARCH=multi
AGENT_ORCHESTRATOR_MODE=full

如果想研究某只股票是否符合特定交易模式:

AGENT_MODE=true
AGENT_ARCH=multi
AGENT_ORCHESTRATOR_MODE=specialist
AGENT_SKILLS=bull_trend,volume_breakout,shrink_pullback

🧾 十、总结

Daily Stock Analysis 的价值不在于“让大模型猜涨跌”,而在于把日常复盘中需要反复查的数据和判断框架标准化:行情、趋势、量能、筹码、资金流、新闻、板块和风险都进入同一个报告结构。

普通模式适合稳定自动化;Agent 模式适合交互式追问;多 Agent 模式适合把技术、情报、风控和策略专家拆开,让最终结论更有层次。

实际使用时,建议先从本地或 Docker 的普通分析跑通,再逐步打开 Web、通知、搜索、Tushare、Agent 和多 Agent。这样每一层增强都能明确知道自己解决了什么问题,也更容易定位数据源或模型输出的异常。