A股实时行情API最小可运行示例:从curl到参数全解

适用场景

当你在开发一个A股行情看板、盘中监控工具或量化回测系统时,需要实时获取某只股票的当前用量说明、涨跌幅、成交量以及历史分时数据。A股实时行情接口提供了从交易所直接整合的标准化数据,覆盖沪深北全部A股,既可以获取一秒钟的快照,也可以拉取当日从09:30开始的每分钟开盘/最高/最低/收盘价。

典型使用场景包括:

  • 个人看盘小工具:快速显示自选股的实时用量说明和涨跌状态。
  • 量化交易信号验证:截取分钟级K线,结合VWAP偏离度判断买卖点。
  • 投研分析:自动计算振幅等级、趋势方向、强弱评分等衍生指标。

接口能力边界

在调用前,需要明确以下几个限制:

属性说明
API 端点POST https://v1.apizero.cn/api/stock-trend
请求粒度单次请求一个股票代码
分时数据点数最大 240 个点(每交易日 4 小时共 240 分钟),可通过limit参数返回最近 N 个点
返回粒度full包含行情快照 + 所有分时点 + 技术分析;simple仅含核心行情
每秒查询(QPS)5 次/秒
调用次数限制(未登录)5 次/天
调用次数限制(登录用户)50 次/天

超出额度后按 0.01 元/次计费(需账户余额),会员可享更高并发。本文仅演示最小可运行调用,不涉及付费方案。

请求参数与鉴权

调用该接口需要传递一个 JSON 对象,包含以下字段:

参数名类型必填说明
codestring6位股票代码,可带交易所前缀(如600519sh600519
typestring返回粒度:full(默认)或simple
limitnumber分时点数量:0 表示全部,1–240 表示最近 N 个点;默认返回所有

鉴权方式:支持两种 Header 传递方式(二选一):

  • X-API-Key: <你的 API Key>
  • Authorization: Bearer <你的 API Key>

未提供 API Key 时也能请求,但额度受限(每日 5 次),且无法享受登录用户的 50 次额度。建议先在平台准备并获取 Key。

最小可运行示例(curl)

以下示例使用贵州茅台(600519)作为查询对象,请求完整分析数据并限制返回最近 30 个分时点。请将$APIZERO_API_KEY替换为你的实际 Key。

curl -sS \ -X POST \ -H "X-API-Key: $APIZERO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"code": "600519", "type": "full", "limit": 30}' \ "https://v1.apizero.cn/api/stock-trend"

关键说明

  • -sS参数抑制进度条但显示错误。
  • -X POST显式指定方法。
  • 请求体中的"limit": 30表示只取最后 30 分钟的分时数据,减少传输量。
  • 若使用 Bearer 方式,替换 Header 为-H "Authorization: Bearer $APIZERO_API_KEY"

返回结果是一个 JSON 对象,包含codemsgdatarequest_id

返回字段逐层解读

顶层结构

{ "code": 0, "msg": "成功", "request_id": "abc123", "data": { ... } }
  • code: 0 表示成功,非 0 表示错误。
  • msg: 状态描述。
  • request_id: 请求唯一标识,可用于排查日志。
  • data: 核心数据对象。

data.stock(股票基本信息)

字段类型含义
codestring股票代码
namestring股票名称
marketstring交易所代码(SH/SZ/BJ)
boardstring板块(主板/创业板/科创板)
trade_statusstring交易状态(交易中/休市)
trade_datestring交易日
update_timestring数据更新时间

data.quote(实时行情快照)

这是最常用的部分,包含当前最新价、涨跌、成交量等:

字段类型含义
pricenumber最新成交价
changenumber涨跌额(元)
change_percentnumber涨跌幅(%)
opennumber开盘价
highnumber今日最高价
lownumber今日最低价
pre_closenumber昨收价
volumenumber成交量(股)
amountnumber成交额(元)
amplitudenumber振幅(%)
turnover_ratenumber换手率(%)
volume_rationumber量比
pe_ttmnumber滚动市盈率
pbnumber市净率
total_mvnumber总市值(元)
avg_pricenumber均价(元)

还有对应的_display字段(如amount_display: "21.69亿"),方便直接展示。

data.change_status(涨跌状态)

{ "color": "#EB5454", "direction": "up", "label": "上涨" }

用于快速渲染红绿颜色,direction可取值up/down/flat

data.minute(分时数据列表)

minute.list是一个数组,每元素代表一分钟的快照:

字段类型含义
timestring时间戳(如 "09:31")
opennumber该分钟开盘价
highnumber该分钟最高价
lownumber该分钟最低价
pricenumber该分钟收盘价(即该分钟最后一笔成交)
avgnumber该分钟均价
volumenumber该分钟成交量(股)
amountnumber该分钟成交额(元)
change_percentnumber该分钟相较于前一日收盘价的涨跌幅(%)

minute.count表示返回的点数,minute.total表示当日总分钟数(通常 241)。

data.analysis(技术分析)

该模块提供了若干量化指标:

  • trend: 趋势判断(如“震荡上行”)
  • trend_direction: 方向枚举(up/down/flat
  • strength: 强弱评分对象,包含score(0–5)和level(较弱/中等/较强)
  • amplitude_level: 振幅分级(如“小幅波动”)
  • up_minutes/down_minutes/flat_minutes: 上涨/下跌/平盘分钟数
  • up_ratio: 上涨分钟占比(%)
  • vwap_deviation: 当前价相对于 VWAP 的偏离度(%)

这些字段可以直接用于生成行情标签或量化条件筛选。

data.summary(文本摘要)

一个自然语言句子,总结当日走势,例如:“贵州茅台今日上涨0.38%,现价1190.0,振幅2.16%,换手0.15%,整体呈震荡上行态势,波动强度较弱。”

常见错误与排查

错误表现可能原因解决方式
code非 0,msg包含“参数错误”请求 JSON 格式错误,或code不足 6 位检查 JSON 是否合法,股票代码必须是 6 位数字
code非 0,msg包含“鉴权失败”API Key 未传或无效确认 Header 名称和 Key 值是否正确
返回 HTTP 429超出 QPS 限制(5次/秒)加入请求间隔控制,或降低并发
返回空的分时列表或count=0非交易时段,或股票当日停牌检查trade_status字段
msg包含“额度不足”当日调用次数限制用完登录账户获取更多额度,或等待次日重置

工程化注意事项

1. 限流与重试

由于 QPS 限制为 5,如果需要在短时间内查询多只股票,建议使用队列或令牌桶控制请求频率。示例(伪代码):

import time import requests def fetch_stock(code, api_key): url = "https://v1.apizero.cn/api/stock-trend" headers = {"X-API-Key": api_key, "Content-Type": "application/json"} payload = {"code": code, "type": "full", "limit": 30} resp = requests.post(url, json=payload, headers=headers) # 如果遇到 429,等待 0.2 秒再重试(最多 3 次) if resp.status_code == 429: time.sleep(0.2) resp = requests.post(url, json=payload, headers=headers) return resp.json()

2. 分时数据缓存

分时数据在交易日内每分钟更新一次,但对于非实时看板(如盘后分析),可以缓存到本地数据库,避免重复请求减少额度消耗。

3.type=simpletype=full的选择

如果仅需要当前用量说明和涨跌幅,使用simple即可,返回数据体积更小,速度更快。full适合需要分时 K 线和额外技术分析的情景。

4. 处理非交易时段

在 15:00 之后或周末调用,trade_status可能为“休市”,分时列表为空。应设计逻辑判断trade_status,避免误展示空白图表。

5. 多账户轮转

如果需要高于 50 次/天的额度,可以合理使用多个账户的调用次数限制(每个账户 50 次),但注意不要滥用。或者直接开通会员获取更高 QPS 与次数。

参考文档

  • A股实时行情 API 文档
  • 原始接口定义(Markdown)

以上即为最小可运行示例的全部内容。开发者可根据本文的 curl 示例迅速验证连通性,然后根据返回字段构建自己的行情展示或分析逻辑。