back
loading skill details...
A股炒股选股量化工具 - 16维数据深度分析,自学习预判引擎,趋势预测,自动报告。直接HTTP采集新浪/腾讯/东方财富数据+WebAPI量化分析。支持自动生成DOCX分析报告。
---
name: 股海罗盘 - A股股票量化分析
description: A股炒股选股量化工具 - 16维数据深度分析,自学习预判引擎,趋势预测,自动报告。直接HTTP采集新浪/腾讯/东方财富数据+WebAPI量化分析。支持自动生成DOCX分析报告。
metadata:
{
"openclaw": {
"emoji": "📊"
}
}
homepage: https://www.oraskl.com/ghdata-admin
---
# 股海罗盘(gh-data)— A 股股票量化分析技能
**无需 MCP,纯 Python HTTP 直连采集 + WebAPI 量化分析。**
---
## 配置
```json
{
"skills": {
"entries": {
"ghdata_analyze": {
"config": {
"webapi_url": "http://api.topeasychina.com:15099/api",
"webapi_timeout": 30,
"doc_dir": "./doc"
}
}
}
}
}
```
| 配置项 | 默认值 | 说明 |
|:-------|:-------|:-----|
| `webapi_url` | `http://api.topeasychina.com:15099/api` | WebAPI 地址(含端口) |
| `webapi_timeout` | `30` | HTTP 请求超时(秒) |
| `doc_dir` | `./doc` | 报告输出目录 |
> **配置生效规则**(优先级从高到低):
> 1. 上述 `config` 配置
> 2. `{技能目录}/settings.json` 文件
> 3. 环境变量 `GHDATA_API_URL`
> 4. 代码默认值
---
## 🚀 核心工作流(每次分析必须执行)
每次分析一只股票,必须完成以下三阶段:
```
阶段 A:数据采集 ─→ 阶段 B:量化分析 ─→ 阶段 C:报告输出
HTTP直连公开API POST WebAPI分析API 生成DOCX报告+K线图
(新浪/腾讯/东方财富) (技术指标/信号/预测) (16维/评分/预判)
```
---
### 阶段 A:16 维数据采集
技能内置 Python 模块 `ghdata/data_fetcher.py`,直接 HTTP 采集以下数据源:
| # | 数据维度 | 数据源 | 函数 |
|:-:|:---------|:-------|:-----|
| 1 | 实时行情 | 新浪 + 腾讯双源交叉 | `fetch_realtime(code)` |
| 2 | 日K线数据 | 腾讯 ifzq.gtimg.cn | `fetch_kline(code, days)` |
| 3 | 今日分时 | 腾讯 qt.gtimg.cn 分钟数据 | `fetch_today_tick(code)` |
| 4 | 资金流向 | 同花顺 stockpage.10jqka | `fetch_money_flow(code, days)` |
| 5 | 融资融券 | 东方财富 DataCenter | `fetch_margin_trading(code, days)` |
| 6 | 机构持仓 | 东方财富 DataCenter | `fetch_main_holdings(code)` |
| 7 | 股东增减持 | 东方财富 DataCenter | `fetch_shareholder_trade(code)` |
| 8 | 高管持股变动 | 东方财富 DataCenter | `fetch_executive_change(code)` |
| 9 | 财务数据 | 东方财富 DataCenter | `fetch_financial(code)` |
| 10 | 资产负债表 | 东方财富 DataCenter | `fetch_balance_sheet(code)` |
| 11 | 利润表 | 东方财富 DataCenter | `fetch_income_statement(code)` |
| 12 | 现金流量表 | 东方财富 DataCenter | `fetch_cashflow(code)` |
| 13 | 分红历史 | 东方财富 DataCenter | `fetch_dividend(code)` |
| 14 | 券商研报 | 东方财富 DataCenter | `fetch_research_report(code)` |
| 15 | 机构调研 | 东方财富 DataCenter | `fetch_institutional_survey(code)` |
| 16 | 限售解禁 | 东方财富 DataCenter | `fetch_unlock_data(code)` |
**Python 代码(直接在 CMD 中执行):**
```python
import sys, os
sys.path.insert(0, os.path.dirname(__file__))
from ghdata import data_fetcher as fetcher
from ghdata import config
def collect_all(code: str) -> dict:
"""16维数据一次性采集(全部HTTP直连,零外部依赖)"""
data = {}
data["realtime"] = fetcher.fetch_realtime(code) # 实时行情
data["kline"] = fetcher.fetch_kline(code, 120) # 日K线
data["tick"] = fetcher.fetch_today_tick(code) # 今日分时
data["moneyFlow"] = fetcher.fetch_money_flow(code, 10) # 资金流向
data["margin"] = fetcher.fetch_margin_trading(code, 10) # 融资融券
data["holdings"] = fetcher.fetch_main_holdings(code) # 机构持仓
data["shareholder"] = fetcher.fetch_shareholder_trade(code) # 股东增减持
data["executive"] = fetcher.fetch_executive_change(code) # 高管变动
data["financial"] = fetcher.fetch_financial(code) # 业绩报表
data["balance"] = fetcher.fetch_balance_sheet(code) # 资产负债表
data["income"] = fetcher.fetch_income_statement(code) # 利润表
data["cashflow"] = fetcher.fetch_cashflow(code) # 现金流量表
data["dividend"] = fetcher.fetch_dividend(code) # 分红历史
data["research"] = fetcher.fetch_research_report(code) # 券商研报
data["survey"] = fetcher.fetch_institutional_survey(code)# 机构调研
data["unlock"] = fetcher.fetch_unlock_data(code) # 限售解禁
data["industry"] = fetcher.fetch_industry_info(code) # 行业板块
return data
```
---
### 阶段 B:量化分析(WebAPI)
采集完数据后,调用 WebAPI 进行量化分析:
```python
from ghdata import db_manager as db
# 调用 WebAPI 获取全量分析结果
result = db.kline_analyze(code, today_kline=None)
# 返回包含:
# indicators → MA5/MA10/MA20/MA60/MACD/KDJ/RSI/量比
# signals → 偏多/偏空/中性 汇总
# patterns → 大涨后规律/大跌后规律/支撑/阻力
# accuracy → 全部历史/近60日/近30日 准确率
# prediction → 方向/T+1/T+2/中期方向 + 价格区间
# learning → 自学习规律跟踪摘要
```
**WebAPI 地址通过配置中的 `webapi_url` 设置。**
---
### 阶段 C:报告生成
```python
from ghdata import reporter
from ghdata import chart
# 1. 生成 K 线图
chart.generate_kline_chart(klines, ...)
# 2. 生成 14 章完整 DOCX 报告
reporter.generate(code, extra_data={
"holdings": {"points": [...], "conclusion": "..."},
"money_flow": {"points": [...], "conclusion": "..."},
# ... 其他维度数据
})
```
---
## 📊 14 章分析报告结构(最终定版)
| # | 章节 | 核心内容 | 展示格式 | 数据源 |
|:-:|:-----|:---------|:---------|:-------|
| 一 | 公司概况 | 主营业务 + 行业地位 + 市值 | 段落 | WebAPI |
| 二 | 实时行情 | 最新价/涨跌/PE/PB/市值 | 表格 | 新浪+腾讯 |
| 三 | 机构持仓分析 | 机构家数/持股/变动 | 数据表 + analysis_points | extra_data.holdings |
| 四 | 资金流向分析 | 近10日净流入/大单占比 | 数据表 + analysis_points | extra_data.money_flow |
| 五 | 融资融券分析 | 融资余额/净买/占比 | 数据表 + analysis_points | extra_data.margin_trading |
| 六 | 高管及大股东行为 | 增持/减持记录 | 数据表 + analysis_points | extra_data.shareholder_trade |
| 七 | 核心财务分析 | 7.1业绩/7.2利润/7.3资产/7.4现金流 | 数据表 + fin_analysis(短段落) | extra_data.financial_report |
| 八 | 合理股价分析 | 8.1PE/8.2PB/8.3综合区间+术语表 | 表格+段落(EPS/BVPS由PE/PB和最新价动态计算,禁止硬编码) | WebAPI |
| 九 | 分红历史 | 近年分红方案 | 数据表 + analysis_points | extra_data.dividend |
| 十 | **综合评分** | 5维度加权评分 | 加权总分公式展示 | 本地计算 |
| 十一 | K线技术分析 | 11.1均线/11.2MACD/11.3KDJ/11.4RSI/11.5信号总表 | 指标表 + 信号总表 | WebAPI indicators |
| 十二 | **方向预测** | 12.1方向判定与评分→12.2准确率→12.3 T+1→12.4 T+2→12.5周方向+判断依据 | 表格化依据 | WebAPI prediction |
| 十三 | 历史规律总结 | 4条规律(大涨后/大跌后/支撑位/阻力位)场景化展示 | 场景化展示 | WebAPI patterns |
| 十四 | 风险提示 | 6条动态风险 | 列表 | 综合生成 |
### 三种分析展示格式
| 函数 | 适用场景 | 展示方式 |
|:----|:---------|:---------|
| **analysis_points(标题, [要点列表], 结论=)** | 机构/资金/两融/高管/分红 | 数据表下方 → 编号表格 + 加粗结论行 |
| **fin_analysis(标题, 段落)** | 财务四大表解读(业绩/利润/资产/现金流) | 数据表下方 → 简短段落(1~2句话,白话解读) |
| **信号总表** | 技术面综合 | 统一表格 → 汇总行(偏多X/偏空Y/中性Z) |
#### fin_analysis 使用规则(财务解读)
**四张财务表(7.1业绩/7.2利润/7.3资产/7.4现金流)每张都必须带有 fin_analysis 解读或结论**,不能只有数据表没有下文。每张表结束后都必须有一段白话解读,告诉用户这个数意味着什么。
**正确的做法(数据在前,解读在后):**
```
┌──────────────┬──────────┬──────────┐
│ 指标 │ 本期 │ 同比 │
├──────────────┼──────────┼──────────┤
│ 营业收入 │ 3500亿 │ +12.5% │
│ 营业利润 │ 420亿 │ +18.3% │
│ 净利润 │ 320亿 │ +52.0% │
└──────────────┴──────────┴──────────┘
▶ 利润表解读:本期净利润320亿,同比大增52%,主要受益于产品价格高位运行和产能提升。盈利能力持续增强,毛利率和净利率均创近年新高。
```
**错误的做法(只有数据没有结论):** ❌ 不允许
```
┌──────────────┬──────────┬──────────┐
│ 指标 │ 本期 │ 同比 │
├──────────────┼──────────┼──────────┤
│ 营业收入 │ 3500亿 │ +12.5% │
│ ... │ ... │ ... │
└──────────────┴──────────┴──────────┘
```
财务报表的 fin_analysis 必须回答三个问题:
1. **好不好?** — 盈利能力是增强还是减弱
2. **为什么?** — 变化的核心驱动因素(量/价/成本)
3. **趋势如何?** — 未来可能的方向
---
## 🔑 APIKey 管理
技能首次使用自动生成本地标识 Key,保存在 `~/.ghdata/ghdataapikey`。
| 版本 | 每日限额 | 费用 |
|:----|:--------|:-----|
| 🆓 免费版 | 3 次/工具/日 | 免费 |
| 💰 付费版 | 100 次/工具/日 | 需购买 |
**购买地址:** https://www.oraskl.com/ghdata-admin
**付费后替换文件内容:** 将购买的密钥写入 `~/.ghdata/ghdataapikey`
**使用原则:**
- APIKey 是付费资源,**不要随便消耗调用次数**
- 同一只股票同一日仅调用一次 WebAPI,分析结果复用
- 调用前先检查是否已有缓存数据,避免重复请求
- 非必要不调 `db_manager.analyze_kline()`,尤其批量操作时垫高用量
---
## 📈 综合评分加权公式(定版)
```
总分 = 基本面×0.35 + 估值面×0.20 + 技术面×0.15 + 资金面×0.20 + 情绪面×0.10
评级:≥80优秀 🏆 | ≥65良好 ✅ | ≥50一般 ⚠️ | <50较差 ❌
```
| 维度 | 权重 | 说明 |
|:----|:----:|:-----|
| 基本面 | 35% | 营收/利润/ROE 趋势 |
| 估值面 | 20% | PE/PB 历史分位 |
| 技术面 | 15% | 均线/MACD/KDJ/RSI 信号 |
| 资金面 | 20% | 主力资金流向/大单占比 |
| 情绪面 | 10% | 换手率/量比/市场情绪 |
---
## 🔴 方向预测铁律(Andy 铁律 — 必须严格遵循)
### 1. 方向预测展现顺序
方向预测章节内容必须按以下顺序排列:
```
方向判定(结论) → 准确率(可信度) → T+1(具体价格) → T+2 → 周方向 → 判断依据(理由)
```
符合「结论→支撑」的认知逻辑。
### 2. 方向判定 + 置信度
```
📈 方向:偏多 🎯 评分:6.5/10 [████████░░░░░░░]
```
方向:偏多 / 震荡偏多 / 震荡 / 震荡偏空 / 偏空
评分:0~10 分,附进度条
### 3. 历史准确率 — 三时段展示(Andy 铁律)
方向预测前必须输出历史准确率,分三时段展示:
```
历史准确率:
✅ 全部历史:6/8 = 75.0% [█████████░░░░░░░] (正确数/总数)
⚠️ 近60日:4/7 = 57.1% [███████░░░░░░░░░] (正确数/总数)
❌ 近30日:1/3 = 33.3% [████░░░░░░░░░░░░] (正确数/总数)
```
**规则:**
- ❌ **不展示偏多方向准确率**(Andy 明确要求去掉,仅保留上述三行)
- ✅ 展示全部准确率 + 近60日 + 近30日
- 格式:`时段:Z.Z% [███████░░░░░░░] (正确数/总数)`
- 按「全部→60日→30日」顺序排列
- 进度条总长 20 格
### 4. 股价预测范围 — 三要素铁律
做量化股价预测时,**必须同时输出以下三个范围要素**:
| 要素 | 含义 | 示例 |
|:----|:-----|:-----|
| **预测股价范围** | 综合判断的合理波动区间(最低~最高) | 6.85 ~ 7.10 元 |
| **最高值范围** | 压力位上方的极限高值区 | 7.05 ~ 7.15 元 |
| **最低值范围** | 支撑位下方的极限低值区 | 6.78 ~ 6.88 元 |
| **置信度** | 本次预测的可信程度(0~100%) | 75% |
没有范围只有方向 = **无效预测**。用户要的是「多少钱能买、多少钱能卖」,不是「涨还是跌」。
### 5. T+1 预测(下一交易日)
```
📅 T+1预测:偏多 置信度:75%
预测区间: 6.85 ~ 7.10 元
最高值范围: 7.05 ~ 7.15 元
最低值范围: 6.78 ~ 6.88 元
价格中心: 6.98 元
💡 短线可关注
```
必须包含:
- 方向判定
- 置信度
- 预测区间(最低~最高)
- 最高值范围 / 最低值范围
- 预期价格中心
- 操作建议
### 6. T+2 预测(格式同上)
```
📅 T+2预测:偏多 置信度:70%
预测区间: 6.80 ~ 7.15 元
最高值范围: 7.10 ~ 7.20 元
最低值范围: 6.72 ~ 6.82 元
价格中心: 6.98 元
💡 可持票待涨
```
### 7. 周方向
```
📅 周方向:震荡偏多
✅ MA60上方支撑,中期趋势向上
```
必须包含周方向(Andy 确认)。
### 8. 判断依据 — 二维表展示
```
判断依据:
┌──────────┬──────────────────────────────────────────┬──────────┐
│ 维度 │ 内容 │ 信号 │
├──────────┼──────────────────────────────────────────┼──────────┤
│ 📐 技术面 │ 均线多头排列 MA5>MA10>MA20 │ 偏多 │
│ 📐 技术面 │ MACD零轴上金叉,红柱扩大 │ 偏多 │
│ 🔍 模式 │ 近3日量价齐升,突破箱体上沿 │ 偏多 │
│ 🛡️ 支撑 │ 20日均线支撑有效,回踩不破 │ 偏多 │
│ ⚠️ 风险 │ RSI进入超买区(72),注意短线回调风险 │ 偏空 │
└──────────┴──────────────────────────────────────────┴──────────┘
```
3~5条依据,涵盖:技术面 + 模式识别 + 支撑/压力 + 风险因素
---
## 📈 历史规律展示格式(定版)
### 场景化标题
用用户秒懂的语言,不用工程师腔:
| ❌ 旧格式 | ✅ 新格式 |
|:---------|:---------|
| 大涨后回调特征 | 某天突然大涨超过3%,之后3天会怎样? |
| 大跌后反弹规律 | 某天突然暴跌超过3%,之后3天能抄底吗? |
| 阻力位规律 | 股价涨到这个位置总是过不去? |
| 支撑位规律 | 股价跌到这里就跌不动了? |
### 展示模板
```
🔥 某天突然大涨超过3%,之后3天会怎样?
📈 历史上出现 12次
✅/⚠️ 准确率 75.0% [███████████░░░░░░░]
总共出现12次 | 符合9次 | 准确率75.0%
💡 操作参考:大涨后逢高减仓,不宜追高
📌 最近案例:2026-06-15 大涨4.2%,之后3日累计+1.1%
```
### 已识别规律(由服务端 POST /api/klineanalyze 自动返回)
| 规律 | 说明 |
|:----|:------|
| 大涨后回调规律 | >3%大涨后3日上涨概率低,不宜追高 |
| 大跌后反弹规律 | <-3%大跌后3日反弹概率高,可低吸 |
| 阻力位规律 | 统计历史上攻失败价位 |
| 支撑位规律 | 统计历史回踩获撑价位 |
| 回调性质判断 | MACD绿柱长度+KDJ极端程度区分趋势性下跌vs震荡回调 |
> 上述规律由服务端 `KlineAnalyzeService.MinePatterns()` 自动计算。
> **注意:** C# 中 `??` 运算符优先级低于 `-`,格式 `%` 说明符会 `×100`,已踩坑修复。
---
## 📚 自学习规律跟踪
API 返回 `learningSummary` 字段,从 `stock_patterns` 表读取历史规律记录。
### 展示格式
```
📚 规律学习摘要
──────────────────────────────────────────
规律#1(大涨后回调)第5次验证:大涨后3日下跌概率上升 ✅
方向准确率:68%→75%(+7次验证)
──────────────────────────────────────────
规律#2(大跌后反弹)第3次验证:大跌后反弹有效性稳定 ⚠️
方向准确率:62%→63%(+2次验证)
```
### 处理逻辑
- 按 `pattern_type` 分组
- 统计验证次数(`verifyCount`)
- 对比最新与上一次的概率变化,生成更新描述
- 同时输出方向准确率(全部历史预测)
---
## 📐 T+1/T+2/周方向推算逻辑
DB 的 `predictions` 表没有 `t1_direction`/`t2_direction`/`weekly_direction` 数据(PredictorService 只算主方向)。
`KlineAnalyzeService` 在返回前通过 `SubDirectionEstimator` 自动推算:
| 主方向 | T+1/T+2 推算规则 |
|:------|:----------------|
| **偏多 / 偏空** | T+1/T+2 跟随主方向 |
| **震荡偏多** | 除非单日暴跌 >1.8%,才修正为「震荡」 |
| **震荡偏空** | 除非单日暴涨 >1.8%,才修正为「震荡」 |
| **震荡** | 根据涨跌幅判断偏向 |
---
## 🌟 报告内容人性化原则
1. **场景化标题:** 把「大涨后回调特征」改为「某天突然大涨超过3%,之后3天会怎样?」— 用户秒懂
2. **可视化符号:** `✅/❌/📈/📉/🔴/🟢` 比文字更快传递信息
3. **操作建议:** 每次规律后给一句操作参考(如「大涨后逢高减仓」),用户看报告是为了决策
4. **出现次数+准确率单独展示:** 拆成「总共出现N次 | 符合M次 | 准确率Z% + 进度条」
5. **数据单位人性化:** volume(股)→手,amount(元)→万元/亿元
---
## 📝 更高质量报告
如需生成排版更精美的报告(灵活字体/颜色/布局/多图组合),LLM 可自行编写脚本调用 `ghdata/data_fetcher.py` 的数据采集函数生成 DOCX,`reporter.py` 仅作为兜底方案。
---
## 🔴 铁律:WebAPI 无数据时付费内容占位策略
当服务端量化引擎返回空数据(APIKey无效或额度用完),**严禁**使用本地纯数学规则生成虚假预测。
**原因:** 本地纯数学规则没有历史回测验证、没有准确率追踪、没有自学习积累,输出结果无可靠度评估,等于给客户幻觉数据。
✅ **正确做法:生成付费内容占位章节,而非直接跳过。** 章节十一(K线技术分析)、十二(方向预测)、十三(历史规律总结)在检测不到量化数据时,自动生成红色标记的付费内容提示 + 该章节付费后可查看内容的详细描述。这样客户即使没有付费也能看到付费后能获得什么,利于转化销售。
### 占位展示效果
```
🔴 【付费内容】十一、K线技术分析 当前APIKey无效或额度已用完,以下为付费后可查看的完整内容预览:
📌 均线分析:MA5/MA10/MA20/MA60数值及排列形态...
📌 MACD指标:DIF/DEA数值、金叉/死叉信号...
📌 ...
💳 购买APIKey:https://www.oraskl.com/ghdata-admin
```
### 处理流程
```
服务端量化引擎请求 → 检测返回数据是否有效
├─ 有数据 → 正常生成完整分析(章节十一~十三全内容)
└─ 无数据 → 生成付费内容占位
(含红字付费标记 + 内容预览 + 购买链接)
```
---
## ⚠️ 数据注意事项
- **新浪财经** `hq.sinajs.cn` 是实时收盘价最可靠来源
- **腾讯分钟数据** 成交量是累计值!需差分计算
- **同花顺资金流向** 收盘价可能不准确,须用新浪验证
- **股票代码:** 60xxx/68xxx=上海,00xxx/30xxx=深圳
- **今日K线(todayKline):** 盘中必传(客户端自拉腾讯API实时K线,18:00前DB无今日数据);收市后可不传(18:00日更新服务已将今日K线写入DB)
- **K线图(LINE_CHART):** 仍需通过 `generate_kline_chart` 工具生成PNG(工具内部自拉腾讯API)
- **技术指标/信号/规律/准确率:** 均由服务端统一计算(POST `/api/klineanalyze`),客户端不再本地计算
- **无数据=无价值:** 降级版(lite)对用户毫无意义,要么拿全数据出完整版,要么不出
- **🔴 禁止硬编码:** 任何代码和规则中**不得出现针对某只股票的特化数据**(如 `eps_est=0.26` 这种特定股票的EPS、行业描述、行业PE/PB均值等)。所有数据必须从API实时获取或从已有数据动态计算(如 EPS = price / PE)。SKILL.md 中的示例必须使用通用占位符,不得出现具体股票名称。
### DOCX 报告数据单位人性化
| 字段 | 原始单位 | 报告展示单位 |
|:----|:--------|:-----------|
| volume | 股 | 手(÷100) |
| amount | 元 | 万元(÷10000)或亿元(÷100000000) |
| 流通市值/总市值 | 元 | 亿元 |
---
## 📄 风险提示与免责声明
本报告仅供参考,**不构成任何投资建议**。投资者据此操作,风险自担。
数据来源:新浪财经(hq.sinajs.cn)、腾讯财经(qt.gtimg.cn/ifzq.gtimg.cn)、东方财富(datacenter-web.eastmoney.com)、同花顺(stockpage.10jqka.com.cn)
**股票投资有风险,历史数据不代表未来表现。**
don't have the plugin yet? install it then click "run inline in claude" again.