360 Secure SkillHub
360 安全技能中心

Skill Test A

核心功能:采集A股16维历史数据(行情、财务、资金流向等),提供技术/财务指标量化计算,支持生成DOCX分析报告,具备批量股票筛选与自学习规律更新能力。典型场景:个股深度分析、全市场扫描、优质股筛选等。输入为股票代码/名称或筛选需求,输出数据统计、指标结果、结构化报告等,工具本身不生成分析结论,需结合接入的LLM生成判断。

sunbinpy
sunbinpy
热度 7.65
最近更新 2026-07-08 07:57:24
分类:数据依赖:代码执行 / 第三方 API / 读写文件应用场景:数据处理 / 报告撰写 / 财务

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ghdata-test-a
Metadata
name
ghdata-stock
description
A股数据量化分析工具 - 提供16维历史数据统计查询与方法计算。本技能本身不生成分析结论,所有分析结论由用户接入的LLM基于技能提供的历史数据自行生成。不含未来预测、不含投资建议、不含买卖指令。支持自动生成DOCX分析报告。
metadata
{"openclaw":{"emoji":"📊","name":"股海罗盘 - A股股票量化分析"}}
homepage
https://www.oraskl.com/ghdata-admin

股海罗盘(ghdata-stock)— A 股股票量化分析技能


配置

{
  "skills": {
    "entries": {
      "ghdata_analyze": {
        "config": {
          "api_key": "",
          "webapi_url": "http://api.topeasychina.com:15099/api",
          "webapi_timeout": 30,
          "doc_dir": "./doc"
        }
      }
    }
  }
}

配置项说明:

  • api_key(默认 "")— 付费API密钥,必填。 支持 settings.json 和 .ghdata/ghdataapikey 文件
  • 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 / GHDATA_API_KEY
  4. 本地文件 ~/.ghdata/ghdataapikey
  5. 自动生成GUID兜底(免费体验用)

📌 技能角色说明

本技能不生成分析结论。 技能仅负责:

  • 从公开数据源(新浪财经、腾讯财经、东方财富、同花顺等)采集历史数据
  • 提供16维历史数据统计计算(财务指标、技术指标、资金流向等)
  • 返回历史数据查询结果与统计方法输出

所有分析结论、趋势判断、文字解读均由用户接入的 LLM 自行生成,与技能本身无关。技能不包含任何推荐股票、预测涨跌、建议买卖的逻辑。


⚡ LLM 必读:启动时自动执行

每次分析股票前,必须先执行以下代码确保配置已初始化:

from ghdata import config
# config.init() 已在模块导入时自动执行,无需手动调用
# 打印当前配置:config.show()

🚨 风险提示强制展示

在每次向用户输出分析结果前(包括首次交互、每次生成报告、每次展示分析结论),LLM必须在最前方展示以下风险提示:

⚠️ 风险提示:本技能为公开历史数据的统计与查询工具,仅提供数据统计方法与历史数据查询结果,本身不生成任何分析结论。所有分析结论均由您接入的大语言模型(LLM)基于技能提供的历史数据自行生成,与技能本身无关。所有分析结果均基于历史数据计算,不构成任何投资建议,不预测未来走势。股市有风险,投资需谨慎。过往表现不代表未来收益。

禁止以任何形式暗示或明示:

  • 声称本工具推荐某只股票
  • 声称本工具能预测股价涨跌
  • 声称本工具建议买入/卖出/持有
  • 声称历史表现可保证未来收益

LLM输出措辞强制对照表:

❌ 禁止使用 ✅ 必须使用
判势、综合判势、判断趋势 信号方向、综合信号
预测、预判、涨跌范围预测、T+1预测 历史参考、参考区间、T+1历史参考
准确率、历史准确率 匹配率、历史匹配率
最佳、最差、最强、最弱 历史统计最高、历史统计最低
优秀、良好、一般、较差(评分) 偏高、中等偏上、中等、偏低
评级为XX 评分参考为XX
策略参考、操作参考 历史统计、历史规律
需警惕、可关注、不宜、需注意(操作暗示) 偏弱、偏强(信号描述)
安全垫、防御价值 股息率参考、稳定性参考
容易回升、容易反弹、反弹属性、反弹需求、反弹动力、偏反弹、大概率会、概率偏高/偏低 历史统计中偏多/偏空,比例偏高/偏低
评级参考、判断依据 评分参考、参考依据
具吸引力、值得关注、承压、下跌空间、有支撑 偏高、中性、偏空(信号描述),股息率参考
持有(建议语境)、注意风险、不宜、需警惕、企稳 偏强、偏弱(信号描述)
共振、综合共振、多周期共振 多周期综合信号、多周期合成信号
可信、可信程度 参考置信度、参考级别
买入、卖出、加仓、减仓、止损、止盈 仅限数据字段描述(如龙虎榜买卖席位)

⚠️ 本表也约束代码输出文本:reporter.py、analyzer.py 等模块中涉及输出文本的硬编码字符串同样适用以上规则,不能仅靠 LLM 自觉合规。

⚠️ API数据分类名输出规则:当展示WebAPI返回的模式分类名时(如"大跌后反弹特征"),需将其中的"反弹"替换为"偏多"描述。示例:大跌后反弹特征 → 大跌后偏多特征,反弹属性 → 偏多属性

⚠️ "偏反弹"——绝对禁止词:任何时候不得用"偏反弹"描述历史规律方向。即使API原始数据包含"0/1=0%反弹"等字样,展示时也必须改为"偏多"/"偏空"描述。若数据本身的结论是"历史统计中大跌后偏多比例偏高",则表述为"大跌后历史统计偏多"。 正确:大跌后历史规律偏多(均值+5.14%) ✅ 错误:大跌后历史规律偏反弹(均值+5.14%) ❌

⚠️ API字段名翻译规则:WebAPI返回的英文/中文字段名需按以下规则翻译后再输出,禁止直接照搬:

  • latestPrediction → 最新信号参考
  • accuracy → 匹配率
  • rangeForecast → 参考区间
  • predictDate → 参考日期
  • prediction / predict 出现 → 一律替换为 信号 / 参考
  • direction → 信号方向
  • voteDetail → 各规则投票明细
  • 任何包含"预测""预判"的字段名 → 改为"参考""信号"

⚠️ 输出后处理强制规则:在你完成全部分析文本生成后,必须调用一次 sanitizer.sanitize(你的输出文本) 进行最终合规过滤。此函数会自动替换所有红线词。示例:

from ghdata.sanitizer import sanitize
final_output = sanitize(your_full_output_text)

🚀 核心工作流(每次分析必须执行)

每次分析一只股票,必须完成以下三阶段:

阶段 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 中执行):

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 进行量化分析:

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:报告生成

from ghdata import reporter
from ghdata import chart

# 1. 生成 K 线图
chart.generate_kline_chart(klines, ...)

# 2. 生成 13 章完整 DOCX 报告(自动采集全部16维数据,无需手动传入)
reporter.generate(code)

# 可选:如果已通过API采集了数据,可以传入 extra_data 覆盖自动采集的结果
# reporter.generate(code, extra_data={
#     "holdings": {"points": [...], "conclusion": "..."},
#     "money_flow": {"points": [...], "conclusion": "..."},
# })

📈 个股分析(LLM 指令)

用户输入股票代码或名称时,LLM执行三阶段分析流程(采集→量化→报告)。

用户输入匹配表

用户说 LLM执行 说明
"分析600028"、"看看中国石化" 阶段A:采集16维数据 先采集完了再分析
"中国石化怎么样"、"600028走势" 阶段A+B+C:全流程分析 采集数据+WebAPI量化+生成结论
"帮我分析这几只股票"、"600028和601857对比" 逐只执行全流程分析 多只按顺序处理
"生成分析报告"、"出报告"、"出文档" 阶段A+B→C:生成DOCX 调用 reporter.generate() 生成docx文件
"K线图"、"走势图" 阶段A→chart:生成K线图 调用 chart.generate_kline_chart()
"这只股票估值怎么样"、"估值合理吗" 阶段B → 估值分析 展示估值分位/杜邦分析/F-Score
"技术面多周期怎么看" 阶段B → 多周期分析 展示日线周线综合信号
"北向资金在买还是卖"、"龙虎榜有这只吗" 阶段B → 资金面画像 展示北向/龙虎榜/ETF/封板/回购/板块
"帮我全面分析一下这只股票" 全流程A+B+C完整执行 含全部14章报告+方案B七大维度
"全面分析所有A股"、"帮我扫一下市场" 条件筛选TOP10 → 逐只深度分析 → 市场概览 不逐只分析5000只
"看涨的股票有哪些"、"选几只优质股" 条件筛选(方向=偏多, 评分高) 按评分排序TOP20

分析结果展示格式

⚠️ 以下分析结果仅为数据统计与技术指标展示,不构成任何投资建议。股市有风险,入市需谨慎。

📊 中国石化(600028) 分析报告

━━━ 实时行情 ━━━
最新价:4.77  涨跌幅:+1.27%   PE:23.7   PB:3.09

━━━ 技术指标 ━━━
均线:MA5=4.81 > MA10=4.77 > MA20=4.76(多头排列)
MACD:DIF=-0.08  DEA=-0.116  红柱=0.071(偏多)
KDJ:K=52.3  D=55.3  J=46.4(中性)
RSI14:50.8(中性)

━━━ 信号汇总 ━━━
偏多1 · 偏空1 · 中性4 → 信号方向:中性

━━━ 历史信号匹配统计 ━━━
全部历史:234/348 = 67.2%  [████████░░░░░░░]
近60日:4/7 = 57.1%       [███████░░░░░░░░░]
近30日:1/3 = 33.3%       [████░░░░░░░░░░░░]
T+1方向:偏多(预期 6.85~7.10元)
中期方向:震荡偏多(MA60上方支撑)

━━━ 学习摘要 ━━━
方向匹配率:234/348=67.2%
大跌后反弹特征:验证52次,1/5=20%反弹
...

Python执行代码

from ghdata import data_fetcher as fetcher, db_manager as db, reporter, chart

# ① 采集数据
klines = fetcher.fetch_kline("600028", 120)
realtime = fetcher.fetch_realtime("600028")

# ② 量化分析
result = db.kline_analyze("600028")

# ③ 生成报告
chart.generate_kline_chart("600028", days=60)
reporter.generate("600028")

🤖 自学习系统(LLM 指令)

技能的自学习能力由服务端(WebAPI + 日更新服务)自动运行,无需用户手动触发。

自学习机制说明

每日18:00定时任务:
  1. 拉取最新K线数据 → 存入 kline_data 表
  2. 7规则投票 → 生成历史信号匹配统计 → 存入 predictions 表
  3. 与实际走势比对 → 更新 accuracy_tracking 表
  4. 挖掘5条交易规律 → 存入 stock_patterns 表
  5. 更新 experience 表(方向/评分/匹配率)

用户可以怎么问

用户说 LLM回答
"这只股票的自学习情况怎么样" 调用 db.kline_analyze(code) 提取 learningSummary 回复
"记录了多少次匹配" 查看 accuracy_tracking 表统计
"匹配率多少" 查看 experience 表的 accuracy_rate
"有没有跟踪记录" 从数据中展示学习摘要(规律验证记录)

自学习内容展示格式

📚 中国石化 自学习跟踪摘要

📊 方向匹配率:234/348 = 67.2% ✅
  全部历史匹配234次,共348次统计

📉 大跌后反弹特征:验证52次
  最近验证:1/5=20%反弹
  3日平均反弹:-1.81%
  历史规律参考:大跌后偏弱

📈 大涨后回调特征:验证43次
  最近验证:2/4=50%回调
  3日平均:-1.72%
  历史规律参考:大涨后偏回调

📌 趋势:自学习系统每日18:00自动更新

📈 个股自学习画像(LLM 展示格式)

调用 db.kline_analyze(code) 后,返回结果中包含 stockProfile 字段,LLM应按以下格式展示:

━━━ ① 估值分析 ━━━
📊 估值分位
  当前股价位于近5年X%分位,估值偏(低/适中/高)

📊 杜邦分析
  净资产收益率X.X%(较上期+/-X.X%)
  核心驱动:净利率 / 资产周转 / 权益乘数

📊 F-Score 基本面评分
  F-Score: X/9 (优/良/差)
  评分因子:盈利能力 / 杠杆 / 流动性 / 效率

━━━ ② 多周期技术分析 ━━━
📊 多周期信号
  日线: 偏多/偏空/中性
  周线: 偏多/偏空/中性
  综合信号: (偏多/偏空/震荡)

📊 波动率分析
  目前处于布林带(上轨/中轨/下轨)位置
  带宽X%(扩张/收缩),波动率(大/小)

📊 量价背离分析
  当前(无/有底背离/有顶背离)信号
  (背离说明,如有)

━━━ ③ 个股行为画像 ━━━
📊 财报前后表现
  2026-04-29 净利润+28.2% ✅利好  后5日:-0.19%
  2026-03-23 净利润-36.8% ❌利空

📊 指数相关性
  与上证同涨同跌率:46.6%(近60日)

📊 放量缩量行为
  放量后3日平均:-4.34%(14次)→ 放量易跌
  缩量后3日平均:+3.68%(10次)→ 缩量易涨 ✅

📊 技术信号有效性
  MACD金叉:有效次数不足  MACD死叉:有效(1/1)

━━━ ④ 资金面画像 ━━━
📊 北向资金
  近5日净买X亿元,方向偏(流入/流出)

📊 龙虎榜
  上榜情况:(是/否)买入/卖出席位X家,净额+X万

📊 ETF资金流
  相关ETF近X日净流X亿元,(流入/流出)趋势

📊 封单数据
  该股今日/近期是否封板?封单资金X亿,强度(强/中/弱)

📊 回购计划
  正在实施/已完成的回购计划X份,金额合计X亿

📊 板块轮动
  所属(行业板块)当前强弱排名第X,资金净流方向偏(流入/流出)

━━━ ⑤ 相似K线匹配 ━━━
🔍 当前形态匹配到5段历史相似走势
  匹配后5日平均涨跌:-0.19%
  结论:历史相似形态下偏弱

━━━ ⑥ 错误模式诊断 ━━━
⚠️ 最大连错4次 | 偏多方向失败6次 | 偏空方向失败12次
  诊断:偏空方向失败率高,历史统计中偏多比例偏高

━━━ ⑦ 季节性规律 ━━━
📅 12月: 平均+0.75% 胜率50% — 历史均值最高月份
   5月:  平均-0.60% 胜率11% ⚠️ 历史均值最低月份

免责声明:以上为数据分析结果,不构成任何投资建议。股市有风险,投资需谨慎。

💡 中国石化综合研判
📊 方向:偏空(评分-4,匹配率67.2%)
① 估值分析:近5年X%分位,估值偏(低/适中);F-Score X/9 基本面(优/良/差)
② 多周期技术:日线中性、周线偏空,综合偏弱;布林带宽X%扩张,波动大
③ 个股画像:缩量后偏强(后3日均值+3.68%),放量警惕(后3日-4.34%)
④ 资金面:北向近期净(流出/流入)X亿;板块排名X;ETF资金(流入/流出)
⑤ 历史相似形态:偏弱(-0.19%)
⑥ 错误诊断:偏空失败12次,历史统计中偏多比例偏高
⑦ 季节性:12月统计最高(+0.75%),5月统计最低(-0.60%)
📌 参考:当前偏空但偏空失败率高,历史统计中偏多比例偏高,缩量后偏稳

🗺️ 全市场扫描(批量筛选)指令

当客户想批量看多只股票(如全市场、某个板块、涨幅榜等),不要逐只调 kline_analyze 做深度分析(5000只逐个分析既不现实也无必要),应使用筛选 API 做批量筛选,然后对筛选结果的前几只做深度分析。

客户输入匹配

用户说 LLM操作 规则
"所有A股全面分析一下" 先筛选 → 再深度分析前10只 按评分排序取TOP10
"帮我看看整个市场" 先筛选 → 汇总市场统计 列出各方向占比、评分均值等
"哪些股票看涨?" 条件筛选(方向=偏多) 按评分排序取TOP20
"选几只优质股" 条件筛选(评分高+匹配率高) 评分≥7 + 匹配率≥60% TOP10
"强势股有哪些" 动量筛选 近20日涨幅+均线多头+MACD金叉
"超跌反弹的股票" 反转筛选 RSI<30超卖+MACD金叉
"技术面好的股票" 技术信号筛选 均线多头+MACD金叉+放量

全市场概览展示格式

━━━ 全市场方向分布 ━━━
📊 偏多       XXX只 (XX%)
📊 震荡偏多   XXX只 (XX%)
📊 震荡       XXX只 (XX%)
📊 震荡偏空   XXX只 (XX%)
📊 偏空       XXX只 (XX%)

━━━ 全市场评分TOP X ━━━
代码    名称        方向   评分   匹配率
600028  中国石化    偏多   8.2    67.2%
...

批量筛选执行流程

用户问"全面分析所有股票"
  ├─ ① 调用 db.screen_stocks(top=10) → 按评分排序取TOP10
  ├─ ② 对TOP10逐只做全流程深度分析
  ├─ ③ 汇总成「市场概览+TOP10深度分析」回复
  └─ ❌ 不逐只分析全部5000只

🎯 数据筛选功能(LLM 指令)

技能支持四种筛选方式,LLM根据用户需求自动匹配合适的方式。

四种筛选方式说明

方式①:条件筛选 — 用现有评分数据快速过滤

  • 条件:方向(偏多/震荡偏多)、评分(0-10)、匹配率(%)
  • 适用场景:用户说"帮我选几只股票"、"找看涨的"、"评分高的"、"匹配率高的"
  • 速度快,适合初步筛选

方式②:动量筛选 — 筛选近期强势的股票

  • 条件:近20日涨幅 > 一定值 + 均线多头排列 + MACD金叉 + 放量
  • 适用场景:用户说"涨得好的"、"强势股"、"最近涨得猛的"
  • 示例结果:华丰股份 近20日+5.0% 均线多头 MACD金叉 放量1.5倍

方式③:反转筛选 — 筛选超跌后信号偏正面的股票

  • 条件:RSI < 30(超卖) + MACD金叉(底背离信号)
  • 适用场景:用户说"超跌反弹"、"跌多了"、"RSI低"
  • 示例结果:国光电器 近20日-22.3% RSI=24(超卖) MACD金叉

方式④:技术信号筛选 — 筛选技术形态偏好的股票

  • 条件:均线多头排列 + MACD金叉 + 成交量放大
  • 适用场景:用户说"技术面好"、"多头排列"、"金叉"、"放量上涨"
  • 示例结果:返利科技 均线多头 MACD金叉 放量2.7倍

用户输入匹配表

用户说 使用方式 说明
"帮我筛选"、"看看有什么"、"随便看看" 条件筛选 默认查全部,按评分排序
"找看涨的"、"方向偏多的" 条件筛选 过滤方向=偏多
"评分高的"、"优质股" 条件筛选 评分≥5
"涨得好的"、"强势股"、"最近涨得猛的"、"创新高的" 动量筛选 近20日涨幅+均线多头+MACD金叉+放量
"超跌反弹"、"跌多了"、"跌得深的"、"RSI低的" 反转筛选 RSI<30超卖+MACD金叉
"技术面好"、"多头排列"、"金叉"、"放量上涨" 技术信号筛选 均线多头+MACD金叉+放量
"都有哪些"、"我想看看" 条件筛选 默认条件

结果展示格式

📊 条件筛选结果(共 XX 条)
代码    名称        方向   评分   匹配率
600028  中国石化    偏多   8.2    67.2%
...

📈 动量筛选结果(共 XX 条)
代码    名称       方向   评分  近20日涨幅  均线  RSI  匹配原因
605100  华丰股份   偏多   5.0   +5.0%      多头  67.3  近20日+5.0%·均线多头·MACD金叉·放量1.5倍
📌 逻辑:近20日涨幅 + 均线多头 + MACD金叉 + 放量

💥 反转筛选结果(共 XX 条)
代码    名称       方向   评分  近20日涨幅  RSI   匹配原因
002045  国光电器   震荡   2.0   -22.3%    24.4  近20日-22.3%·MACD金叉·RSI超卖(24)
📌 逻辑:RSI超卖(<30) + MACD金叉 + 放量企稳

🔧 技术信号筛选结果(共 XX 条)
代码    名称       方向   评分  近20日涨幅  均线  量比  匹配原因
605100  华丰股份   偏多   5.0   +5.0%      多头  1.5   近20日+5.0%·均线多头·MACD金叉·放量1.5倍
📌 逻辑:均线多头 + MACD金叉 + 量比>1.3

LLM执行代码

from ghdata import db_manager as db

# 条件筛选
r = db.screen_stocks(directions=["偏多"], min_score=5.0, top=10)

# 动量筛选
r = db.advanced_screen(mode="momentum", momentum_chg20=5.0, top=10)

# 反转筛选
r = db.advanced_screen(mode="reversal", reversal_rsi=30, top=10)

# 技术信号筛选
r = db.advanced_screen(mode="techsignal", tech_ma_bullish=True, tech_macd_golden=True, tech_vol_surge=True, top=10)

注意事项

  • 如果用户没指定方式,默认用 条件筛选
  • score 是0-10分制,不是百分制
  • accuracy 是百分比(如67.2%)
  • 返回结果时必须附上筛选逻辑说明
  • 同一参数只调一次接口,不要重复调用

📊 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)

股票投资有风险,历史数据不代表未来表现。