🧩
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 server | Web / 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 为例,典型流程如下:
-
读取股票列表:从
.env、命令行参数或 Web 请求里拿到600487。 -
获取基础行情:先拿日线,再拿实时行情,用实时价补齐盘中/盘后价格状态。
-
计算技术指标:计算 MA5、MA10、MA20、均线排列、乖离率、支撑位、压力位、趋势评分、MACD、RSI、量能。
-
获取筹码分布:如果当天筹码还没更新,可能自动取上一个交易日。
-
获取资金流:优先通过配置的数据源获取个股资金流;如果 AkShare 个股资金流缺失,可以回退到 Tushare
moneyflow\_dc。 -
获取所属板块:查询行业、概念、题材,用于判断板块共振和情绪背景。
-
搜索新闻情报:围绕“最新消息、机构分析、风险排查、公司公告、业绩预期”等维度构建查询。
-
构造 Prompt:把行情、技术指标、筹码、资金流、新闻、板块和系统交易纪律拼成大模型输入。
-
生成报告:输出决策仪表盘,包括评分、趋势、买点、止损、风险和操作建议。
-
后处理和推送:做字段完整性检查、决策稳定性校准、通知分段或转图片推送。
这个流程的关键是:日线数据负责历史结构,实时行情负责当前状态,新闻和资金流负责确认或否定技术信号。
🏗️ 五、普通分析和 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。这样每一层增强都能明确知道自己解决了什么问题,也更容易定位数据源或模型输出的异常。
