适用场景
当你在开发一个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 对象,包含以下字段:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
code | string | 是 | 6位股票代码,可带交易所前缀(如600519或sh600519) |
type | string | 否 | 返回粒度:full(默认)或simple |
limit | number | 否 | 分时点数量: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 对象,包含code、msg、data和request_id。
返回字段逐层解读
顶层结构
{ "code": 0, "msg": "成功", "request_id": "abc123", "data": { ... } }code: 0 表示成功,非 0 表示错误。msg: 状态描述。request_id: 请求唯一标识,可用于排查日志。data: 核心数据对象。
data.stock(股票基本信息)
| 字段 | 类型 | 含义 |
|---|---|---|
code | string | 股票代码 |
name | string | 股票名称 |
market | string | 交易所代码(SH/SZ/BJ) |
board | string | 板块(主板/创业板/科创板) |
trade_status | string | 交易状态(交易中/休市) |
trade_date | string | 交易日 |
update_time | string | 数据更新时间 |
data.quote(实时行情快照)
这是最常用的部分,包含当前最新价、涨跌、成交量等:
| 字段 | 类型 | 含义 |
|---|---|---|
price | number | 最新成交价 |
change | number | 涨跌额(元) |
change_percent | number | 涨跌幅(%) |
open | number | 开盘价 |
high | number | 今日最高价 |
low | number | 今日最低价 |
pre_close | number | 昨收价 |
volume | number | 成交量(股) |
amount | number | 成交额(元) |
amplitude | number | 振幅(%) |
turnover_rate | number | 换手率(%) |
volume_ratio | number | 量比 |
pe_ttm | number | 滚动市盈率 |
pb | number | 市净率 |
total_mv | number | 总市值(元) |
avg_price | number | 均价(元) |
还有对应的_display字段(如amount_display: "21.69亿"),方便直接展示。
data.change_status(涨跌状态)
{ "color": "#EB5454", "direction": "up", "label": "上涨" }用于快速渲染红绿颜色,direction可取值up/down/flat。
data.minute(分时数据列表)
minute.list是一个数组,每元素代表一分钟的快照:
| 字段 | 类型 | 含义 |
|---|---|---|
time | string | 时间戳(如 "09:31") |
open | number | 该分钟开盘价 |
high | number | 该分钟最高价 |
low | number | 该分钟最低价 |
price | number | 该分钟收盘价(即该分钟最后一笔成交) |
avg | number | 该分钟均价 |
volume | number | 该分钟成交量(股) |
amount | number | 该分钟成交额(元) |
change_percent | number | 该分钟相较于前一日收盘价的涨跌幅(%) |
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=simple与type=full的选择
如果仅需要当前用量说明和涨跌幅,使用simple即可,返回数据体积更小,速度更快。full适合需要分时 K 线和额外技术分析的情景。
4. 处理非交易时段
在 15:00 之后或周末调用,trade_status可能为“休市”,分时列表为空。应设计逻辑判断trade_status,避免误展示空白图表。
5. 多账户轮转
如果需要高于 50 次/天的额度,可以合理使用多个账户的调用次数限制(每个账户 50 次),但注意不要滥用。或者直接开通会员获取更高 QPS 与次数。
参考文档
- A股实时行情 API 文档
- 原始接口定义(Markdown)
以上即为最小可运行示例的全部内容。开发者可根据本文的 curl 示例迅速验证连通性,然后根据返回字段构建自己的行情展示或分析逻辑。