simonlin1212/a-stock-data · 上手攻略

  • 仓库:simonlin1212/a-stock-data
  • 链接:https://github.com/simonlin1212/a-stock-data
  • 分类:trending / database
  • Stars:6761 | 周增:+161
  • 作者:Tom
  • 更新:2026-07-11

这是什么

a-stock-data 是一个面向 AI 编程助手(Claude Code / OpenClaw / Codex)设计的 A 股全栈数据 Skill 文件,本质是一份结构化 Markdown 文档,内嵌全部可运行 Python 代码,可直接被 AI 读取并在对话中执行。

它解决的核心问题是:A股数据源极度分散——行情在通达信协议、研报在东财 PDF、资金流在另一个接口、龙虎榜又在别处——普通开发者需要逐一对接十几个接口、背各种特殊 Header 与鉴权逻辑。a-stock-data 把这些全部封装好,让 AI 编程助手直接能调用。

当前版本:V3.3.1(2026-06-28),10 层架构、40 个端点、13 个数据源。


解决什么问题

  1. 数据源分散:东财、同花顺、通达信(mootdx)、巨潮、新浪、百度股市通、iwencai……每个接口格式不同、鉴权不同、限流规则不同,一一对接费时费力。

  2. 接口频繁失效:akshare 曾是 A 股数据 Python 生态的事实标准,但维护不稳定,大量接口已失效;百度的 PAE 接口也在 2026 年陆续下线。V3.0 起本项目彻底移除 akshare 依赖,全部直连 HTTP API。

  3. 东财 IP 风控:东财接口有严格 IP 限流,高频调用会被封。V3.2 起内置统一限流入口 em_get(),让 AI 直接生成防封代码。

  4. mootdx 0.11.x 兼容性问题:mootdx 0.11.x 版本有 BESTIP.HQ 空字符串 bug,导致全新环境下 import 崩溃。本项目提供 tdx_client() helper 规避该问题。


快速安装

前提依赖

pip install mootdx requests pandas stockstats

版本要求:mootdx >= 0.10(建议用最新,0.11.x 通过 tdx_client() helper 兼容);requests / pandas / stockstats 无特殊版本限制。

⚠️ iwencai 语义搜索是唯一需要 API Key 的功能(申请地址),其他所有数据源(mootdx / 腾讯 / 东财 / 同花顺 / 百度股市通 / 新浪 / 巨潮)全部零 Key、免费

安装 Skill 文件

# 1. 创建 skill 目录
mkdir -p ~/.claude/skills/a-stock-data

# 2. 下载 SKILL.md
curl -o ~/.claude/skills/a-stock-data/SKILL.md \
  https://raw.githubusercontent.com/simonlin1212/a-stock-data/main/SKILL.md

# 3. 安装 Python 依赖
pip install mootdx requests pandas stockstats

安装后,在 Claude Code / OpenClaw 对话中说「帮我看看 688017 的估值」之类的话,AI 会自动激活该 Skill 并执行内嵌代码。

注意:本 Skill 建议通过上下文注入使用,不做自动加载(origin: custom),以避免非 A 股话题也被注入无关数据函数。


核心用法(可复制代码片段)

以下代码均摘录自 V3.3.1 SKILL.md,经实测可用。AI 编程助手可直接引用。

1. 创建 mootdx 客户端(规避 0.11.x bug)

import socket
from mootdx.quotes import Quotes

_TDX_SERVERS = [
    ('119.97.185.59', 7709), ('124.70.133.119', 7709),
    ('123.60.73.44', 7709),  ('124.71.9.153', 7709),
]

def _probe(ip, port, timeout=2.0):
    try:
        with socket.create_connection((ip, port), timeout=timeout):
            return True
    except Exception:
        return False

def tdx_client(market='std'):
    for ip, port in _TDX_SERVERS:
        if _probe(ip, port):
            return Quotes.factory(market=market, server=(ip, port))
    # fallback → bestip → 裸 factory
    try:
        return Quotes.factory(market=market, bestip=True)
    except Exception:
        return Quotes.factory(market=market)

client = tdx_client()

2. 获取日 K 线数据

# ⚠️ 参数名是 frequency,不是 category!
# frequency=9 → 日线(默认),8→1分钟,0→5分钟,1→15分钟,2→30分钟,3→60分钟
klines = client.bars(symbol='688017', frequency=9, offset=10)
# 返回: open, close, high, low, vol, amount, datetime

⚠️ 已知 bug(历史遗留)category= 参数名会被 mootdx **kwargs 静默吞掉,导致任何非日线的 K 线请求都静默退化成日线而不报错。这是 V3.2.5 修复前的代码里广泛存在的问题,请务必使用 frequency= 而非 category=

3. 实时报价(46 字段)

quotes = client.quotes(symbol=['688017', '300476'])
# 返回: price, open, high, low, last_close, bid1~bid5, ask1~ask5, vol, amount 等

4. 东财个股资金流(已内置防封)

import time, random, requests

UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
EM_SESSION = requests.Session()
EM_SESSION.headers.update({"User-Agent": UA})
EM_MIN_INTERVAL = 1.0
_em_last_call = [0.0]

def em_get(url, params=None, timeout=15, **kwargs):
    """东财统一请求入口:自动节流 + 会话复用"""
    wait = EM_MIN_INTERVAL - (time.time() - _em_last_call[0])
    if wait > 0:
        time.sleep(wait + random.uniform(0.1, 0.5))
    try:
        return EM_SESSION.get(url, params=params, timeout=timeout, **kwargs)
    finally:
        _em_last_call[0] = time.time()

# 调用龙虎榜示例
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
params = {
    "reportName": "RPT_LHB_PLATINUM_STATISTICSALL",
    "columns": "ALL", "pageSize": "10",
    "sortColumns": "NET_BUY_AMT", "sortTypes": "-1"
}
data = em_get(url, params=params)

5. 北向资金(沪股通/深股通分钟级)

# 同花顺北向实时接口(零鉴权,约 73ms 响应)
import requests
r = requests.get(
    "https://data.10jqka.com.cn/funds/hgt/",
    headers={"Referer": "https://data.10jqka.com.cn/"}
)
# 返回沪股通分钟级买卖流量数据

6. 研报 PDF 下载

import requests

def download_pdf(url, save_path):
    r = requests.get(url, headers={
        "Referer": "https://reportapi.eastmoney.com/"
    }, timeout=20)
    with open(save_path, 'wb') as f:
        f.write(r.content)
    return save_path

# 配合 eastmoney_industry_reports() 获取研报 URL 后下载

7. 涨停池/打板情绪

# 东财涨停池(连板数、封板资金、炸板次数)
params = {
    "reportName": "RPT_STOCK_LIMIT_UP",
    "columns": "ALL",
    "filter": "UP_NUM>1",  # 只看连板股
    "pageSize": "20",
    "sortColumns": "UP_NUM", "sortTypes": "-1"
}
data = em_get(
    "https://datacenter-web.eastmoney.com/api/data/v1/get",
    params=params
)

典型适用场景

场景 对话示例
个股估值 「帮我估一下 688017,给我 PE/PEG/消化时间」
强势股/题材归因 「今天哪些股票走强,主要是什么题材」
北向资金 「今天北向资金流入流出怎么样」
龙虎榜 「002475 最近上过龙虎榜吗,哪些营业部在买」
全市场龙虎榜 「今天龙虎榜哪些票净买入最多」
涨停打板 「今天涨停多少家、最高几连板、炸板率多少」
研报检索 「人形机器人产业链最近的研报,特别是丝杠和减速器」
ETF 期权 「50ETF 平值期权的隐含波动率和 Delta 是多少」
互动易 「比亚迪最近投资者都在问什么,公司怎么回应的」
批量估值对比 「帮我对比这 5 只半导体股的估值」

坑与注意

  1. mootdx 海外 IP 问题:mootdx 走 TCP 7709 通达信协议,海外网络环境通常全部超时(无响应)。tdx_client() 会快速失败并给出明确报错,而非无限等待。国内用户无此问题。

  2. 复权口径:mootdx bars() 返回的是不复权原始价(通达信数据本身无 adjust 参数)。跨除权除息日做估值/回测须自行复权,或改用带前复权的腾讯财经日 K 数据。

  3. 东财 IP 封禁阈值:每秒 > 5 次 / 单 IP 并发 ≥ 10 / 1 分钟 ≥ 200 次会触发临时封禁。本 Skill 所有东财请求已内置 em_get() 限流,但 AI 在批量筛选(如循环 100 只股查龙虎榜)时可能忘记降速,使用者应主动提醒 AI:「每只股票之间加 1.5 秒间隔」。

  4. 部分大陆住宅 IP 对东财有间歇风控:表现为 HTTP 000 或空数据,非代码 bug,换网络或加重试即可。

  5. 财联社快讯已下线(cls.cn 旧 API 404,V3.2 标记废弃):用东财全球资讯替代,数据同源。

  6. iwencai 语义搜索需要 API Key申请入口):其他所有端点零 Key 免费。

  7. 分钟 K 线 bug(V3.2.5 修复):旧版代码 category= 参数被静默吞掉,分钟线请求静默退化为日线。确保使用的是 V3.2.5+ 版本(当前最新 V3.3.1)。


数据源优先级说明

优先级 数据源 用途 封 IP 风险
1(首选) mootdx(通达信) K线、五档盘口、财务快照、F10 不封
2 腾讯财经 PE/PB/市值/换手率/涨跌停/指数/ETF 不封
3 新浪/巨潮/同花顺 财报三表、公告、一致预期、热点
4(仅独有数据) 东财 eastmoney 龙虎榜/融资融券/资金流/研报/PDF 有风险,须限流

与同类对比

工具/仓库 类型 优势 不足
a-stock-data(本文) AI 助手指令集 零安装、自包含、40端点、AI直接用 需 AI 助手配合,非独立工具
akshare Python 库 生态成熟 维护不稳定,大量接口失效
tushare Python 库 有结构化文档 需要积分/Key,数据延迟
JoinQuant 平台 专业回测功能 平台绑定,非开放 API
iFinD 商业数据 数据全 昂贵,个人用户门槛高

a-stock-data 的独特价值在于作为 AI 编程助手的上下文 Skill,把数据获取嵌入到 AI 工作流里——你用自然语言描述需求,AI 自动组合多个端点取数,而非自己写 Python 脚本。


一句话结论

A 股数据获取的事实标准——不依赖 akshare,40 个端点零 Key 免费,内置防封,AI 编程助手直接调用;国内 Python 开发者或使用 Claude Code / OpenClaw 做 A 股研究的首选数据 Skill。


版本:V3.3.1 · 2026-06-28 验证 · 作者:Simon 林 · 抖音「Simon林」· 公众号「硅基世纪」