专业股票分析报告(盘前/盘后/研报/周报),可视化图表,投资日志管理,AI助理交互
报告与交互技能是一项面向实际任务的技能,主要用于本技能是投资分析体系的"表达层"——将技术分析、基本面分析、宏观分析、决策引擎的原始数据和结论,转化为人类可读、可操作、有吸引力的报告和交互体验;数据驱动叙事 :不是堆砌数字,而是讲清"发生了什么→意味着什么→下一步怎么做";
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
本技能是投资分析体系的"表达层"——将技术分析、基本面分析、宏观分析、决策引擎的原始数据和结论,转化为人类可读、可操作、有吸引力的报告和交互体验。
| 用户输入模式 | 激活功能 |
|---|---|
| "今日盘前简报" / "开盘前看看" | 盘前报告 |
| "今天复盘" / "收盘总结" | 盘后报告 |
| "给我一份XX的深度研报" | 个股深度研报 |
| "本周总结" / "周报" | 周度总结 |
| "画个K线图" / "看看走势图" | 可视化图表 |
| "记一下:今天买了XX" | 投资日志 |
| "我的持仓怎么样" | 持仓回顾 |
| "XX能买吗" / "大盘怎么看" | 自然语言问答 |
| "提醒我XX跌到100块" | 价格预警 |
调用:
python3 {baseDir}/tools/report_generator.py --type premarket --date today
报告结构:
📋 盘前简报 | 2026-04-06 周一 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🌍 隔夜全球市场 · 美股: 道指 +0.3%, 纳指 -0.2%, 标普 +0.1% · 欧股: 德DAX +0.5%, 英富时 +0.2% · 亚太: 日经 +1.1%, 恒指 -0.5% · 大宗: 原油 $78.5(+1.2%), 黄金 $2350(-0.3%) · 汇率: 美元指数 104.2, 离岸人民币 7.23 📊 A股盘前信号 · 富时A50期货: +0.35%(偏多开盘预期) · 北向资金预判: 昨日净流入+45亿,连续3日流入 · 融资余额: 1.62万亿(+0.2%) 🔥 今日关注 · 重要数据: 3月PMI数据公布 · 政策动态: 国常会讨论促消费政策 · 行业事件: 苹果WWDC倒计时,消费电子关注 · 解禁提示: XX股份 5亿市值解禁 📈 策略建议 · 大盘预判: 小幅高开震荡,关注3280支撑 · 板块关注: AI算力(政策催化)、消费(政策预期) · 风险提示: PMI数据若低于预期可能引发调整 ⚠️ 以上分析仅供参考,不构成投资建议
python3 {baseDir}/tools/report_generator.py --type postmarket --date today
报告结构:
📋 盘后复盘 | 2026-04-06 周一
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 今日行情概览
· 上证指数: 3285.60 (+0.82%) 成交4520亿
· 深证成指: 10580.30 (+1.15%) 成交5830亿
· 创业板指: 2150.80 (+1.45%)
· 北向资金: 净买入 +62.3亿
· 涨跌比: 3680:1420, 涨停62家, 跌停5家
🔍 今日复盘要点
1️⃣ 行情定性
量价齐升放量上攻,市场赚钱效应良好
成交量较昨日放大18%,突破5日均量
2️⃣ 领涨板块 TOP5
| 板块 | 涨幅 | 资金净流入 | 核心驱动 |
|------|------|-----------|---------|
| AI算力 | +4.2% | +38亿 | 政策+业绩 |
| 消费电子 | +3.1% | +22亿 | 苹果产业链 |
| ... | ... | ... | ... |
3️⃣ 资金动向
· 北向大幅流入,偏好消费+科技
· 主力资金净流入TOP: 中际旭创、立讯精密...
· 融资买入前三: ...
4️⃣ 明日展望
· 技术面: 站稳3280,上方关注3320阻力
· 情绪面: 赚钱效应扩散,短线情绪偏暖
· 风险点: 获利盘抛压、外围不确定性
📌 自选股异动提醒
· 贵州茅台: +2.1% 放量突破20日线 ← 关注
· 比亚迪: -1.5% 缩量回踩60日线 ← 观察支撑
⚠️ 以上分析仅供参考,不构成投资建议
python3 {baseDir}/tools/report_generator.py --type deep-report --symbol 600519
报告结构(仿券商研报格式):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 贵州茅台 (600519.SH) 深度分析报告 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📄 报告摘要 评级: 📗 推荐关注 (综合评分 72/100) 当前价: ¥1,680 | 合理估值区间: ¥1,520 - ¥1,850 主要观点: 估值合理,基本面稳健,短期技术面偏多 ━━ 一、公司概况 ━━ 行业: 白酒 | 市值: 2.1万亿 | 上市: 2001年 核心产品: 飞天茅台、茅台1935、茅台王子 竞争优势: 品牌壁垒、产能稀缺、提价能力 ━━ 二、财务分析 ━━ [财务数据表格: 5年营收/利润/现金流/ROE趋势] [杜邦分析分解] [财务健康度评分: 92/100] ━━ 三、估值分析 ━━ [PE/PB/PEG/DCF 多维度估值] [历史估值分位图表] [估值评分: 65/100] ━━ 四、技术分析 ━━ [K线走势分析] [关键指标信号] [技术评分: 72/100] ━━ 五、行业对标 ━━ [vs 五粮液/泸州老窖/山西汾酒 对比表格] [竞争力雷达图数据] ━━ 六、风险提示 ━━ 1. 消费降级风险 2. 行业政策风险 3. 估值回调风险 ━━ 七、投资建议 ━━ [综合研判 + 操作建议 + 关键价位] ⚠️ 免责声明: ... 报告生成时间: 2026-04-06 16:00 数据截止日: 2026-04-06
python3 {baseDir}/tools/report_generator.py --type weekly --week-end today
本模块利用 OpenClaw 的 Canvas 工具 + Python mplfinance/plotly 生成图表。
| 图表类型 | 工具命令 | 输出方式 |
|---|---|---|
| K线+均线+成交量 | chart_renderer.py --type kline |
Canvas / PNG 文件 |
| MACD 指标图 | chart_renderer.py --type macd |
Canvas / PNG 文件 |
| 综合技术面板 (K线+MACD+KDJ+VOL) | chart_renderer.py --type dashboard |
Canvas |
| 估值分位数图 | chart_renderer.py --type valuation-band |
PNG 文件 |
| 行业对比雷达图 | chart_renderer.py --type radar |
PNG 文件 |
| 财务趋势图 | chart_renderer.py --type financial-trend |
PNG 文件 |
| 资金流向热力图 | chart_renderer.py --type capital-heatmap |
Canvas |
| 板块轮动图 | chart_renderer.py --type sector-rotation |
Canvas |
| 持仓组合饼图 | chart_renderer.py --type portfolio-pie |
PNG 文件 |
| 回测收益曲线 | chart_renderer.py --type backtest-curve |
PNG 文件 |
利用 OpenClaw Canvas 能力构建实时交互式看盘页面:
使用 canvas 工具:
action: present
target: {baseDir}/canvas/dashboard.html
Canvas 页面内嵌:
- 实时指数行情面板
- 自选股涨跌一览
- 板块热力图
- 资金流向可视化
- 用户可点击切换不同指标/周期
# 完整用法
python3 {baseDir}/tools/chart_renderer.py
--symbol 600519
--type dashboard
--period daily
--count 120
--indicators MA,MACD,KDJ,VOL
--output /tmp/chart_600519.png
--style dark
--annotations "2026-03-15:买入,2026-04-01:加仓"
这是交互层的核心——让用户用自然语言提问,Agent 理解意图后调度合适的分析技能作答。
python3 {baseDir}/tools/nlp_intent_parser.py --query "<用户原始输入>"
意图分类树:
用户输入
├── 行情查询类
│ ├── 实时行情 → "XX现在多少钱" "XX涨了吗"
│ ├── 指数行情 → "大盘多少点了" "创业板怎么样"
│ └── 板块行情 → "AI板块今天怎么样"
│
├── 分析请求类
│ ├── 技术分析 → "XX技术面怎么看" "MACD金叉了吗"
│ ├── 基本面分析 → "XX基本面如何" "PE高不高"
│ ├── 估值分析 → "XX贵不贵" "值这个价吗"
│ └── 综合分析 → "XX值得买吗" "帮我分析下XX"
│
├── 决策咨询类
│ ├── 买卖建议 → "能买吗" "该卖了吗" "止损位多少"
│ ├── 选股请求 → "推荐几只" "有什么好股票"
│ ├── 仓位建议 → "买多少合适" "仓位怎么配"
│ └── 策略咨询 → "定投好还是一把买" "该长线还是短线"
│
├── 报告请求类
│ ├── 定期报告 → "盘前简报" "收盘总结" "周报"
│ ├── 专题报告 → "深度研报" "行业对比"
│ └── 图表请求 → "画个K线图" "看看走势"
│
├── 管理操作类
│ ├── 自选股管理 → "加自选" "删自选" "自选列表"
│ ├── 预警设置 → "XX跌到100提醒我" "涨停板提醒"
│ ├── 日志记录 → "记一下买了XX" "今天的操作"
│ └── 回顾复盘 → "上周操作回顾" "这个月收益多少"
│
└── 知识问答类
├── 概念解释 → "什么是MACD" "PE和PB有什么区别"
├── 市场知识 → "打新怎么操作" "融资融券是什么"
└── 策略学习 → "什么是价值投资" "趋势交易怎么做"
python3 {baseDir}/tools/dialogue_manager.py --session-id <会话ID> --query "<用户输入>"
多轮对话状态机:
状态1: 初始分析
用户: "帮我分析一下贵州茅台"
Agent: [输出综合分析报告]
→ 保存上下文: {symbol: 600519, analysis_type: comprehensive}
状态2: 追问深入
用户: "估值是不是有点高了"
Agent: [识别追问,补充详细估值分析]
→ 上下文: {symbol: 600519, focus: valuation}
状态3: 对比扩展
用户: "和五粮液比呢"
Agent: [识别对比意图,输出对标分析]
→ 上下文: {symbol: [600519, 000858], mode: compare}
状态4: 决策收敛
用户: "那现在能买吗"
Agent: [综合所有已分析维度,给出建议]
→ 上下文: {symbol: 600519, decision_requested: true}
状态5: 操作跟进
用户: "好,帮我记一下,今天打算在1650附近买入"
Agent: [写入投资日志]
→ 调用 journal_manager 持久化
对话管理规则 (写入 AGENTS.md):
### 投资问答对话规则 1. **记住上下文**: 同一会话中用户追问时,自动关联之前讨论的股票 2. **分层回答**: - 一句话问题 → 一段话回答 - 分析请求 → 结构化报告 - "详细说说" → 展开完整分析 3. **主动追问**: 当信息不足以给出建议时,主动问清楚: - "您是短线操作还是中长线持有?" - "您的风险承受能力如何?" - "目前已有仓位吗?" 4. **不确定性表达**: - 高置信度: "从XX指标来看,明确显示..." - 中置信度: "综合来看,倾向于认为..." - 低置信度: "目前信号比较混乱,建议观望..." 5. **永远不要**: - 承诺收益或保证不亏 - 给出具体的买卖指令(只提供分析视角) - 忽略风险提示
将枯燥的数字和指标转化为人类易理解的故事性表达。
python3 {baseDir}/tools/data_narrator.py --data <分析结果JSON> --style <叙事风格>
| 风格 | 适用场景 | 示例 |
|---|---|---|
concise |
聊天消息、快问快答 | "茅台今天+2.1%,放量突破20日线,MACD金叉在即,短线偏多。" |
professional |
研报、正式报告 | "贵州茅台(600519)今日收报1680元,涨幅2.1%。成交量较前一交易日放大35%,价格成功突破20日均线阻力位(1655元),MACD指标DIF线上穿DEA线形成金叉形态,短期技术面转为偏多格局。" |
educational |
新手引导、概念解释 | "茅台今天涨了2.1%——这其实挺有意思的。你看它的成交量比昨天多了35%,这说明有更多资金在这个价位愿意买入。而且它突破了20日均线,这在技术分析中通常是一个积极信号..." |
actionable |
决策建议 | "🟢 茅台短线看多。关键信号:放量突破MA20+MACD金叉。操作建议:可在1660-1670区间轻仓试多,止损1640,目标1720。" |
# 核心转换逻辑
NARRATIVE_RULES = {
# 涨跌幅描述
"change": {
(5, float('inf')): "大涨 / 强势拉升",
(3, 5): "明显上涨",
(1, 3): "小幅上涨",
(-1, 1): "窄幅震荡",
(-3, -1): "小幅下跌",
(-5, -3): "明显下跌",
(float('-inf'), -5): "大跌 / 急挫",
},
# 成交量描述
"volume_ratio": {
(3, float('inf')): "巨量(异常放大)",
(2, 3): "显著放量",
(1.3, 2): "温和放量",
(0.8, 1.3): "量能平稳",
(0.5, 0.8): "缩量",
(0, 0.5): "极度缩量(地量)",
},
# PE 估值描述
"pe_percentile": {
(0, 0.1): "估值极低(历史底部区域)",
(0.1, 0.3): "估值偏低",
(0.3, 0.7): "估值合理",
(0.7, 0.9): "估值偏高",
(0.9, 1.0): "估值极高(历史顶部区域)",
},
}
利用 OpenClaw 的 Memory 机制(memory/YYYY-MM-DD.md + MEMORY.md)构建持久化投资日志。
python3 {baseDir}/tools/journal_manager.py --action <操作> [--params ...]
| 操作 | 命令 | 说明 |
|---|---|---|
| 记录交易 | --action log-trade --symbol 600519 --direction buy --price 1660 --shares 100 --reason "放量突破MA20" |
记录买卖操作 |
| 记录观察 | --action log-observation --content "AI板块回调,关注低吸机会" |
记录市场观察 |
| 记录决策 | --action log-decision --content "决定减仓半导体,增持消费" |
记录仓位决策 |
| 查看日志 | --action view --date today |
查看当日日志 |
| 搜索日志 | --action search --query "茅台 买入" |
搜索历史日志 |
| 操作复盘 | --action review --period 30d |
30天操作回顾 |
| 盈亏统计 | --action pnl --period 30d |
30天盈亏统计 |
## 📈 投资日志 ### 交易记录 | 时间 | 操作 | 代码 | 名称 | 价格 | 数量 | 原因 | |------|------|------|------|------|------|------| | 09:35 | 买入 | 600519 | 贵州茅台 | 1660 | 100 | 放量突破MA20,MACD金叉 | | 14:20 | 卖出 | 300750 | 宁德时代 | 185 | 200 | 触及止盈位,缩量滞涨 | ### 市场观察 - AI算力板块持续强势,中际旭创3连板 - 北向资金连续4日流入,偏好消费+科技 - PMI数据超预期,周期股有反弹 ### 操作反思 - ✅ 茅台买入时机不错,放量突破确认后入场 - ⚠️ 宁德卖早了一点,但纪律优先,止盈不是错 - 📝 教训:板块轮动加快,不宜恋战,控制持仓周期
通过 OpenClaw Memory Dreaming 机制自动提炼:
## 📊 投资偏好与记录 ### 风险偏好 - 类型: 稳健型 - 单只最大仓位: 15% - 止损纪律: -8% 强制止损 ### 关注板块 - 长期看好: AI算力、新能源、消费 - 回避: 地产、教育 ### 自选股 | 代码 | 名称 | 加入日期 | 加入理由 | 关注价位 | |------|------|---------|---------|---------| | 600519 | 贵州茅台 | 2026-03-01 | 价值投资标的 | 支撑1600,阻力1800 | | 300750 | 宁德时代 | 2026-03-15 | 新能源龙头 | 支撑170,阻力200 | ### 历史操作统计 - 2026年3月: 操作12次,胜率58%,总收益+3.2% - 最佳操作: 3/10买入茅台 +5.2% - 最差操作: 3/22追高半导体 -6.1% - 教训总结: 追高成功率低于30%,优先在支撑位附近入场
利用 OpenClaw Cron Jobs + Channel 分发 实现多渠道推送。
python3 {baseDir}/tools/alert_dispatcher.py --action set --type <类型> --params <参数JSON>
| 预警类型 | 触发条件 | 推送内容 |
|---|---|---|
| 价格预警 | 股价突破/跌破指定价位 | "⚠️ 茅台已跌破1600,当前1595,触及你设置的预警价" |
| 涨跌幅预警 | 日涨跌幅超过阈值 | "🔔 宁德时代今日涨幅已达+7.2%,注意是否止盈" |
| 技术信号预警 | MACD金叉/死叉、均线突破等 | "📈 比亚迪MACD日线金叉,可关注" |
| 资金异动预警 | 北向资金/主力资金大幅变动 | "🔔 北向资金今日净卖出超100亿,注意风险" |
| 财报公告预警 | 关注股票发布财报/重大公告 | "📋 茅台发布2026Q1财报,营收同比+15%" |
| 持仓浮亏预警 | 持仓浮亏达到止损线 | "🔴 你持有的XX浮亏已达-8%,建议执行止损" |
| 大盘风险预警 | 大盘急跌/情绪指标极端 | "⚠️ 上证指数跌破3200,跌幅-2.5%,市场恐慌" |
# 盘前报告 — 每个交易日 08:30 openclaw cron add --name stock-premarket-report --cron "30 8 * * 1-5" --tz Asia/Shanghai --timeout-seconds 120 --announce --message "执行盘前简报生成。按照 stock_reporting_interaction 技能的盘前报告流程执行。" # 盘后报告 — 每个交易日 15:30 openclaw cron add --name stock-postmarket-report --cron "30 15 * * 1-5" --tz Asia/Shanghai --timeout-seconds 180 --announce --message "执行盘后复盘报告生成。按照 stock_reporting_interaction 技能的盘后报告流程执行。" # 预警扫描 — 交易时段每5分钟 openclaw cron add --name stock-alert-scanner --cron "*/5 9-15 * * 1-5" --tz Asia/Shanghai --timeout-seconds 60 --message "扫描所有活跃预警规则,检查是否有触发条件满足。仅报告触发的预警。" # 周报 — 每周五 16:00 openclaw cron add --name stock-weekly-report --cron "0 16 * * 5" --tz Asia/Shanghai --timeout-seconds 300 --announce --message "生成本周投资周报。汇总本周大盘走势、操作记录、盈亏统计、下周展望。"
利用 OpenClaw 的 Channel 系统(Discord/Telegram/WhatsApp/Feishu):
报告分发策略:
├── 即时消息 (Telegram/WhatsApp/Discord)
│ ├── 预警通知 → 即时推送,简短格式
│ ├── 盘前/盘后简报 → 结构化消息,可读性优先
│ └── 问答回复 → 自适应长度
│
├── Canvas (桌面端)
│ ├── 交互式仪表盘 → dashboard.html
│ ├── K线图 → kline-chart.html
│ └── 持仓视图 → portfolio-view.html
│
├── 文件导出
│ ├── Markdown → 日常报告
│ ├── HTML → 带图表的研报
│ └── PNG → 图表单独导出
│
└── Memory 持久化
├── 日志 → memory/YYYY-MM-DD.md
└── 长期记忆 → MEMORY.md (Dreaming 自动提炼)
同一份分析数据,根据上下文自动选择表达粒度:
Level 1 — 一句话 (适合预警、快速问答) ┌─────────────────────────────────────────────────┐ │ "茅台短线偏多,MACD金叉+放量突破MA20,评分72分" │ └─────────────────────────────────────────────────┘ Level 2 — 摘要段落 (适合聊天回复) ┌─────────────────────────────────────────────────┐ │ 贵州茅台(600519)短线技术面偏多。今日放量上涨 │ │ 2.1%,成功突破20日均线阻力位,MACD日线形成金叉, │ │ KDJ指标处于中性区间尚有上行空间。上方阻力关注 │ │ 1720元(前高),下方支撑1640元(MA20)。综合技术 │ │ 评分72/100。 │ │ ⚠️ 仅供参考,不构成投资建议 │ └─────────────────────────────────────────────────┘ Level 3 — 完整报告 (适合研报请求) ┌─────────────────────────────────────────────────┐ │ [完整结构化报告,含所有维度分析] │ │ [数据表格 + 图表 + 风险提示 + 操作建议] │ │ [5000-10000字] │ └─────────────────────────────────────────────────┘
选择逻辑:
if 用户问题 < 10字 且 是简单查询 → Level 1 elif 用户明确要求"详细" or "深度" or "研报" → Level 3 elif 多轮对话中的追问 → Level 2 else → Level 2 (默认)
DISCLAIMERS = {
"standard": "⚠️ 以上分析仅供参考,不构成投资建议。股市有风险,投资需谨慎。",
"decision": "⚠️ 以上分析基于公开数据和量化模型,仅供学习和参考。n"
"任何投资决策请独立判断并承担相应风险。n"
"历史表现不代表未来收益。",
"alert": "⚠️ 预警触发不代表必须操作,请结合自身判断。",
"backtest": "⚠️ 回测结果基于历史数据,存在过拟合风险,不代表未来表现。n"
"实盘交易还需考虑滑点、手续费、冲击成本等因素。",
}
# 根据内容类型自动附加
def attach_disclaimer(content: str, content_type: str) -> str:
disclaimer = DISCLAIMERS.get(content_type, DISCLAIMERS["standard"])
return f"{content}nn---n{disclaimer}"
每个分析结论都必须标注置信度:
| 置信度 | 标记 | 使用条件 |
|---|---|---|
| 🟢 高 | [置信度: 高] |
多个维度信号一致,数据充分,历史规律明确 |
| 🟡 中 | [置信度: 中] |
部分维度一致,存在某些不确定因素 |
| 🔴 低 | [置信度: 低] |
信号冲突,数据不足,或处于市场极端情况 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习