API 文档A 股实时行情 · WebSocket 实时推送 + REST 快照/历史查询。一次接入,覆盖快照、五档盘口、1m/5m K 线与日 K(前复权)。
datapush 提供统一的实时行情数据 API:REST 用于历史与快照查询,WebSocket 用于实时流式推送。REST 数据接口按实际用量计费,注册即刻体验并签发 API Key。
sk-…快速开始
1. 获取 API Key
在 注册 或 登录 后,到控制台即可查看你的 API Key(sk- 前缀)。
2. 发起第一次请求
curl "https://api.datapush.vip/api/v1/stocks/600108/kline?size=5" \
-H "Authorization: Bearer sk-xxx"
3. 建立实时连接
const ws = new WebSocket('wss://api.datapush.vip/ws', ['sk-xxx']);
ws.onopen = () => ws.send(JSON.stringify({ action: 'sub', codes: ['sz.000725'], types: ['quote'] }));
ws.onmessage = (e) => console.log(JSON.parse(e.data));
Python SDK(datapush-sdk)
官方 Python SDK:零第三方依赖(仅标准库,Python 3.8+),同时提供 命令行 与 Python import
两种用法,前缀都是 datapush;内置本地按需缓存(只存不复权原始价 + 因子表,复权本地计算 ⇒ 除权后无需重下历史)。
pip install datapush-sdk -i https://pypi.org/simple # pip安装datapush-sdk
datapush config set-key sk-xxx # 或设置环境变量 DATAPUSH_API_KEY
datapush kline 000001 # 一行拿数据(自动缓存 + 自动前复权 + 增量刷新)
import datapush
c = datapush.Client() # Key 自动读;缓存默认开启(~/.datapush/cache/datapush.db)
c.kline("000001", days=250) # 日K(前复权)
c.kline("000001", days=250, kind="hfq") # 后复权(本地按因子表算)
c.minute("000001", days=1) # 1 分钟 K 线
c.codes() # 全市场代码(实时,不缓存)
c.stock("000001") # 基础信息(实时,不缓存)
c.factors("000001", size=30) # 量化因子数组(高级用户;直连不缓存)
c.factor_catalog() # 量化因子目录(高级用户;直连不缓存)
c.trading_today() # 今日是否交易日(实时,不缓存)
c.stats() # 服务端统计(公开接口)
c.quote("000001") # 实时快照(WS 首帧)
for e in c.watch(["000001"], types=["quote", "k1"], seconds=30):
print(e.type)
| CLI | 说明 |
|---|---|
datapush kline|minute|fiveminute <code> | K 线:--days/--size/--offset/--start/--end/--since/--kind qfq|hfq|raw/--csv/--json |
datapush xdxr <code> | 复权因子表(segments + ltgb + latest_event_date) |
datapush stocks|codes|stock | 列表 / 全市场代码 / 单只基础信息(实时,不缓存) |
datapush factors <code> | 量化因子数组(高级用户):--size 30/--offset/--fields close,ma5/--daily-kline 0|1(直连不缓存) |
datapush factor-catalog | 量化因子目录(高级用户;直连不缓存) |
datapush trading-today | boards | 今日是否交易日 / 指数板块清单(实时,不缓存) |
datapush quote|watch | 实时快照 / 持续订阅(WebSocket) |
datapush update <code> | 手动增量更新缓存(平时查询自动做) |
datapush health | stats | 服务健康检查 / 服务端统计(公开接口) |
datapush cache info|path|clear|prune | 缓存:概况 / 路径 / 清理 / 按天保留 |
datapush doctor | config | 一键排障 / 本地配置(Key、缓存目录) |
datapush get <path> | 通用逃生舱:直接请求任意后端路径(调试新接口) |
--json(原始 JSON)、--csv FILE、--api-key、
--timeout、--cache-dir、--no-cache、--offline
(服务地址固定为 https://api.datapush.vip,无需配置);退出码 0 成功 /
1 业务或网络错 / 2 参数错。提示:若
datapush 命令提示「找不到命令」(pip 的脚本目录不在 PATH),可直接用
python -m datapush <命令>(完全等价),或执行 datapush doctor 查看针对本机的修复命令。需要
adj=none 的原始价与本地复权公式见复权因子表;
注意 PyPI 上另有一个无关的 datapush 包,若同装冲突可改用 import datapush_sdk as datapush。哪些不缓存:股票列表 / 基础信息 / 交易日(
trading-today)/ 板块(boards)/
量化因子(factors 数组与 factor-catalog 目录)都是直连;
因子的当日行盘中随行情实时更新,需要实时因子请用
datapush watch <code> --types factor(WebSocket 推送全字段)。认证
所有数据接口通过 API Key 鉴权,支持两种传递方式:
| 方式 | 示例 |
|---|---|
| 请求头 | Authorization: Bearer sk-…(推荐)或 X-API-Key: sk-… |
| WebSocket 子协议 | new WebSocket(url, [apiKey]) |
REST 通用约定
Base URL:https://api.datapush.vip。请求与响应均为 application/json; charset=utf-8。
统一响应结构
{
"code": 0, // 0=成功,非 0=错误
"message": "ok", // 状态描述
"data": { ... } // 业务数据(成功时返回)
}
数据接口(/api/v1/stocks*)需携带 API Key,无效返回 401,余额不足返回 402;其余错误见错误码。
交易日查询
查询今天是否为 A 股交易日。
curl "https://api.datapush.vip/api/v1/trading/today" \
-H "Authorization: Bearer sk-xxx"
// 返回
{ "code": 0, "message": "ok", "data": {
"date": "2026-09-07", "trading": true } }
指数/板块列表
返回可用的板块/指数列表,如上证指数、深证成指、沪深300 等。
curl "https://api.datapush.vip/api/v1/market/boards" \
-H "Authorization: Bearer sk-xxx"
// 返回
{ "code": 0, "message": "ok", "data": [
{ "code": "sh.000300", "name": "沪深300" },
{ "code": "sh.999999", "name": "上证指数" },
{ "code": "sz.399001", "name": "深证成指" },
{ "code": "sz.399005", "name": "中小板指" },
{ "code": "sz.399006", "name": "创业板指" }
] }
股票列表
分页查询股票基础信息(轻量字段)。
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
| page | int | 1 | 页码 |
| page_size | int | 20 | 每页条数(最大 1000) |
curl "https://api.datapush.vip/api/v1/stocks?page=1&page_size=20" \
-H "Authorization: Bearer sk-xxx"
// 返回(data 为数组,元素为轻量字段)
{ "code": 0, "message": "ok", "data": [
{ "code": "000001", "name": "平安银行", "market": "sz", "price": 11.52,
"roe": 8.5, "zgb": 194.1, "ltgb": 194.1, "ltsz": 2233.9, "zsz": 2233.9,
"ipo_date": "1991-04-03" }
] }
单只股票基础信息
查询单只股票的基础信息(含总股本、流通股本、市值、ROE 等字段,复权数据不返回)。
| 参数 | 位置 | 说明 |
|---|---|---|
| code | path | 股票代码,可带交易所前缀(sz.000001)或纯数字(600108) |
curl "https://api.datapush.vip/api/v1/stocks/sz.000001" \
-H "Authorization: Bearer sk-xxx"
// 返回(data 为完整基础信息,复权数据不返回)
{ "code": 0, "message": "ok", "data": {
"code": "000001", "name": "平安银行", "market": "sz", "price": 11.52, "industry": "白酒",
"region": "贵州板块", "roe": 8.5, "zgb": 194.1, "ltgb": 194.1, "ltsz": 2233.9, "zsz": 2233.9,
"ipo_date": "1991-04-03" } }
1 分钟 K 线
返回 1 分钟前复权(默认) K 线,最新时间在前,所有参数选填(offset,size 或者 since 模式二选一)。通常 A 股每个交易日 240 根 K 线。
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
| offset | int | 0 | 跳过交易日数 |
| size | int | 10 | 返回交易日数(最大 50) |
| since | string | — | 取数流程:首次用 offset+size 建基线(记下响应里的 latest_time),之后每次只用 since 做增量。增量取数:只返回时间 ≥ since 的数据( YYYY-MM-DD HH:MM,闭区间含该根)。用响应里的 latest_time 推进下一次请求;最多只能获取最近 30天 的数据(建议设置定时任务定期自动同步),被截断时返回的是离游标最近的那批;若 last_time > since 说明中间有缺口,请用 offset/size 补齐 |
| adj | string | qfq | qfq 前复权(默认)/ none 不复权原始价(增量取数与本地缓存建议用 none,复权在本地按因子表计算) |
curl "https://api.datapush.vip/api/v1/stocks/000001/minute?offset=0&size=10" \
-H "Authorization: Bearer sk-xxx"
// 返回(data 为对象;count 为根数,kline 为 8 字段数组、最新在前,last_time/latest_time 为本批最老/最新一根)
{ "code": 0, "message": "ok", "data": {
"code": "sz.000001", "type": "minute", "count": 240,
"kline": [[开, 收, 高, 低, 量, 额, 换手率, "YYYY-MM-DD HH:MM"], ...],
"last_time": "YYYY-MM-DD HH:MM", "latest_time": "YYYY-MM-DD HH:MM"
} }
5 分钟 K 线
返回 5 分钟前复权(默认) K 线,最新时间在前,所有参数选填(offset,size 或者 since 模式二选一)。通常 A 股每个交易日 48 根 K 线。
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
| offset | int | 0 | 跳过交易日数 |
| size | int | 30 | 返回交易日数(最大 200) |
| since | string | — | 增量取数(首次用 offset+size 建基线,之后只用本参数增量):只返回时间 ≥ since 的数据(闭区间含该根);语义与推进规则见 1 分钟 K 线的 since 说明 |
| adj | string | qfq | qfq 前复权(默认)/ none 不复权原始价(增量与本地缓存建议用 none,见复权因子表) |
curl "https://api.datapush.vip/api/v1/stocks/000001/fiveminute?offset=0&size=30" \
-H "Authorization: Bearer sk-xxx"
// 返回(data 为对象;count 为根数,kline 为 8 字段数组、最新在前,last_time/latest_time 为本批最老/最新一根)
{ "code": 0, "message": "ok", "data": {
"code": "sz.000001", "type": "fiveminute", "count": 48,
"kline": [[开, 收, 高, 低, 量, 额, 换手率, "YYYY-MM-DD HH:MM"], ...],
"last_time": "YYYY-MM-DD HH:MM", "latest_time": "YYYY-MM-DD HH:MM"
} }
日K 线
查询日 K 历史前复权(默认),所有参数选填(offset,size 或者 since 模式二选一)。返回 kline 为按时间倒序的 8 字段数组,见K 线字段。
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
| offset | int | 0 | 跳过交易日数(分页偏移) |
| size | int | 100 | 返回交易日数(最大 1000) |
| since | string | — | 增量取数(首次用 offset+size 建基线,之后只用本参数增量):只返回时间 ≥ since 的日K(YYYY-MM-DD HH:MM);语义与推进规则见 1 分钟 K 线的 since 说明 |
| adj | string | qfq | qfq 前复权(默认)/ none 不复权原始价(增量与本地缓存建议用 none,见复权因子表) |
curl "https://api.datapush.vip/api/v1/stocks/000001/kline?offset=0&size=100" \
-H "Authorization: Bearer sk-xxx"
// 返回(data 为对象;count 为根数,kline 为 8 字段数组、最新在前,last_time/latest_time 为本批最老/最新一根)
{ "code": 0, "message": "ok", "data": {
"code": "sz.000001", "type": "day", "count": 100,
"kline": [[复权开, 复权收, 复权高, 复权低, 量, 复权额, 换手率, "YYYY-MM-DD 15:00"], ...],
"last_time": "YYYY-MM-DD 15:00", "latest_time": "YYYY-MM-DD 15:00"
} }
复权因子表(本地复权计算)
返回按日期区间压缩的复权因子表(segments),用于本地计算前复权与后复权。
典型用法:用 adj=none 拉不复权原始价(原始价历史永不改写,适合本地缓存与增量追加),
再用本表一次乘法派生复权序列 —— 除权后无需重下历史。
curl "https://api.datapush.vip/api/v1/stocks/000001/xdxr" -H "Authorization: Bearer sk-xxx"
{ "code": 0, "message": "ok", "data": {
"code": "sz.000001",
"latest_event_date": "2026-09-25", // 与上次不同 ⇒ 重拉本表并本地重算
"count": 4, // = segments 长度(可自检表是否完整)
"ltgb": 1234000000, // 流通股本(股)—— 算换手率的分母
"segments": [ // 按 from 降序
{ "from": "2026-09-25", "qfq": 1.0, "hfq": 1.5, "share_ratio": 1.0 },
{ "from": "2024-06-14", "qfq": 1.0, "hfq": 1.5, "share_ratio": 1.2 },
{ "from": "2010-01-01", "qfq": 0.8333, "hfq": 1.25, "share_ratio": 1.44 },
{ "from": "", "qfq": 0.6667, "hfq": 1.0, "share_ratio": 1.728 }
]
} }
| 字段 / 列 | 说明 |
|---|---|
latest_event_date | 最新除权除息日;变更探测:与本地记录不同就重拉本表(无事件为空串) |
count | 段数 = 事件数 + 1(客户端可自检表是否被截断) |
ltgb | 流通股本(股,原始值)。注意 基础信息接口的 ltgb 是「亿股、四舍五入」,不能用于精确复算换手率 |
from | 区间起点(事件日,YYYY-MM-DD);空串 = 兜底段(覆盖最早事件之前) |
qfq | 前复权价格因子 = Π(事件日 > from) f ⇒ 最新段恒为 1.0(当日即前复权基准) |
hfq | 后复权价格因子 = Π(事件日 ≤ from) 1/f ⇒ 兜底段恒为 1.0(后复权基准 = 该标的最早) |
share_ratio | 换手率股本比例 = Π(事件日 > from)(1 + 送转 + 配股)(与 qfq 同方向) |
怎么算:本地前复权 / 后复权
① 用 adj=none 取原始价 bar:“[open, close, high, low, cjl, cje, hsl, "YYYY-MM-DD HH:MM"]”
(价格与成交额都是原始值)。② 取本接口的 segments。③ 每根 bar 选一段:
按 from 降序取第一个 from ≤ bar.date 的段;都不满足(或该段 from 为空)⇒ 用 兜底段。
④ 一次乘法:
前复权价 = raw价 × seg.qfq // 基准 = 当日;除权后全部历史被改写
后复权价 = raw价 × seg.hfq // 基准 = 该标的最早;除权后历史不变、只影响事件日之后
换手率 = cjl / ltgb × seg.share_ratio × 100 // 与价格口径无关
成交额 = raw.cje // **成交量与成交额都不复权**(金额是历史事实,不随因子缩放)
自检(建议写进 SDK 断言):seg.hfq × P == seg.qfq,其中 P = 兜底段.qfq
(兜底段覆盖全部事件 ⇒ 它的 qfq 就是全体事件因子连乘)。逐段成立即说明表自洽、未被截断。
def pick_segment(segments, date): # segments 按 from 降序
for s in segments:
if s["from"] and s["from"] <= date:
return s
return segments[-1] # from 为空的兜底段
def adjust_bar(bar, segments, ltgb):
seg = pick_segment(segments, bar[7][:10])
raw = bar[:7]
qfq = [raw[0]*seg["qfq"], raw[1]*seg["qfq"], raw[2]*seg["qfq"], raw[3]*seg["qfq"],
raw[4], raw[5]] # 量、额不缩放
hfq = [raw[0]*seg["hfq"], raw[1]*seg["hfq"], raw[2]*seg["hfq"], raw[3]*seg["hfq"],
raw[4], raw[5]*seg["hfq"]]
hsl = raw[4] / ltgb * seg["share_ratio"] * 100
return qfq, hfq, hsl
增量更新流程(推荐)
1) 本地只存 adj=none 原始价(永不改写)⇒ 用 since 增量拉取、直接追加
2) 记录 xdxr.latest_event_date;与本地不同 ⇒ 重拉因子表
3) 除权后本地重算:
后复权:只有「事件日之后」的 bar 受影响(历史不变,只需算新增区间)
前复权:全部历史受影响(本地重乘一遍,或直接重拉服务端 adj=qfq)
4) 全程无需重下历史数据
因子' = 段因子 ÷ 起点段因子);
③ 除权日当天 qfq = 1(当日即基准)⇒ WS 实时推送的当日数值与两种口径的当日值天然相同;
④ 服务端不提供 adj=hfq 视图(后复权当日因子 ≠ 1,会破坏 REST/增量/WS 的当日一致性),后复权请按上表本地派生;
⑤ adj=none 下除权日前后价格会跳变(原始成交价本就如此,非数据错误)—— 需要连续价格序列时用默认 adj=qfq 或本地复权。量化因子目录
返回全部因子字段的元数据(字段名 / 中文名 / 单位 / 行内下标)。字段以响应内容为准。
curl "https://api.datapush.vip/api/v1/factors" -H "Authorization: Bearer sk-xxx"
// 返回:count = 69 = date + 日K 7 + 因子 61(存量 15 + 实时计算 46);实际列数以响应为准
{ "code": 0, "message": "ok", "data": {
"count": 69,
"fields_order": ["date","open","close","high","low","cjl","cje","hsl","vol_pct_pre_high", ... ,"coef_adj_line"],
"factors": [
{ "key": "open", "name": "开盘价", "unit": "元", "order": 0 },
{ "key": "ener_raw", "name": "原始量能累计", "unit": "%", "order": 9 },
{ "key": "pot_x_turn", "name": "势能原始值", "unit": "%", "order": 26 }
]
} }
| 请求参数 | 说明 |
|---|---|
| 无 | 仅需请求头里的 API Key |
| 字段 | 说明 |
|---|---|
count | 字段总数(含 date) |
fields_order | 列顺序(表头):数组接口 rows 每行的下标与它一一对应 |
factors | 因子元数据:key 字段名(同时是 fields 参数可传的字段名字)/ name 中文名 / unit 单位 / order 行内下标 |
fields_order 与 factors[*].key 解析数据,不要硬编码列数与列位置。请求了不存在的字段会返回 400(field not available: 字段名)。量化因子数组(默认包含日K数据)
一次拿全「日K + 因子」:日K列(前复权,与日K线接口同序:open, close, high, low, cjl, cje, hsl)+ 因子列。只要部分因子时用 fields 指定因子列(日K列默认仍会带上;daily_kline=0 可关掉)。
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
| offset | int | 0 | 从最新往前跳过的交易日数量 |
| size | int | 100 | 返回交易日数,上限 750(超出按 750 截断) |
| fields | string | 因子列白名单(逗号分隔,保持目录顺序;date 恒在首位)。日K 7 列不受它控制;只能写接口支持的字段(写了不存在的字段 → 400 field not available: 字段名) | |
| daily_kline | int | 1 | 1 = 拼日K列(7 列恒在因子列之前);0 = 不拼日K列(在 fields 里显式点名的日K列仍返回) |
curl "https://api.datapush.vip/api/v1/stocks/600108/factors?size=30" \
-H "Authorization: Bearer sk-xxx"
// 返回:rows 的元素顺序见 fields_order;缺值一律 null
{ "code": 0, "message": "ok", "data": {
"code": "sz.000001", "name":"平安银行", "type": "factor",
"count": 30, "latest_time": "2026-09-15 15:00:00",
"fields_order": ["date","open","close","high","low","cjl","cje","hsl","vol_pct_pre_high", ...],
"rows": [ ["2026-09-15", 12.34, 12.55, 12.60, 12.20, 1234567, 15234567.0, 1.23, 0.41, ...], ... ]
} }
| 字段 | 说明 |
|---|---|
count | 本次返回交易日数 |
latest_time | 本页最新交易日的数据时点(YYYY-MM-DD HH:MM:SS) |
fields_order | 本次实际返回的列顺序(受 fields / daily_kline 影响;date 恒在首位,daily_kline≠0 时其后恒为日K 7 列) |
rows | 数据行;缺值一律 null |
WebSocket 连接与鉴权
实时行情通过 WebSocket 推送。API Key 三种传递方式(按优先级):
| 方式 | 示例 |
|---|---|
| 浏览器子协议 | new WebSocket(url, [apiKey]) |
| 请求头(非浏览器) | Authorization: Bearer sk-… |
| 查询参数(旧客户端) | ?api_key=sk-…(可用,但不推荐,泄露风险高) |
订阅与消息格式
连接成功后,客户端发送订阅指令;服务端按事件实时推送。
客户端 → 服务端
{ "action": "sub", "codes": ["sz.000001", "sh.600108"], "types": ["quote", "depth", "k1", "k5", "factor"] }
| 字段 | 说明 |
|---|---|
| action | sub 订阅 / unsub 退订 / ping 心跳 |
| codes | 标的编码数组,可同时订阅多个;支持带前缀(sh./sz./bj./hk.)或纯 6 位数字 |
| types | 订阅类型数组,可单选也可多选:quote 快照 / depth 五档 / k1 分钟K线 / k5 5分K线 / factor 量化因子(全字段);省略时默认订阅 ["quote"] |
服务端 → 客户端
{ "type": "quote", "code": "sz.000001", "data": {
"c": "sz.000001", "n": "平安银行", "t": 1750042500,
"p": 11.52, "z": 0.61, "o": 11.46, "h": 11.58, "l": 11.41,
"pc": 11.45, "v": 1265432, "a": 1458200000, "tr": 0.75, "vr": 1.12 } }
{ "type": "depth", "code": "sz.000001", "data": {
"b": [[11.51,12800],[11.50,5600],[11.49,2300],[11.48,900],[11.47,1500]],
"a": [[11.52,3200],[11.53,4100],[11.54,1800],[11.55,2600],[11.56,700]],
"bv": 456000, "sv": 512000 } }
{ "type": "kline", "code": "sz.000001", "period": "1m", "state": "close",
"data": [11.50, 11.52, 11.54, 11.49, 12800, 1474500, 0.75, "2026-09-05 10:31"] }
{ "type": "factor", "code": "sz.000001", "latest_time": "2026-09-16 14:23:05",
"data": ["2026-09-16", 12.34, 12.55, 12.60, 12.20, 1234567, 15234567.0, 1.23, 0.41, ...] }
| type | data 内容 |
|---|---|
| quote | 快照 {c,n,t,p,z,o,h,l,pc,v,a,tr,vr} |
| depth | 五档 {b:[[价,量]x5], a:[[价,量]x5], bv, sv} |
| kline | period=1m|5m,state=open|close,data=8 字段数组(与 K 线字段的 REST 数组同列同序) |
| factor | latest_time=数据时点(YYYY-MM-DD HH:MM:SS);data=最新因子列(date + 日K + 量化因子,列顺序同「因子目录」的 fields_order) |
| ack | 订阅成功确认,msg=ok,data 含 {"subscribed":N}(N=成功订阅的 code 数) |
| error / pong | 文本经 msg 字段返回 |
心跳:服务端每 20s 发送 Ping,客户端需自动回 Pong;60s 无 Pong 判定连接断开。
k1/k5 订阅只推送增量分钟K线;如需初始/回补历史行情请使用 REST 1m/5m 接口获取。仅获取当日 1/5 分钟K线设置offect=0,size=1即可
非交易时段(盘前 09:15 前 / 午休 / 15:00 收盘后 / 周末)订阅成功但不会推送实时数据,属正常;保持连接即可,下一交易日约 09:15 起自动恢复推送。
指数 / 板块 code 也可订阅(如 sh.999999 上证、sz.399001 深证、sh.000300 沪深300 等,清单见板块 / 指数清单);指数仅有 quote,无五档 depth。
factor类型的数据字段结构为默认排序方式(含日K),可通过因子目录查询。另外该数据仅高级用户订阅可用,普通用户可订阅不会报错,但是不会推送。开放日期内除外。标的编码
| 市场 | 格式 | 示例 |
|---|---|---|
| A 股 / 指数 | sh. / sz. / bj. + 6 位 | sh.600108、sz.399001 |
REST 接口与 WebSocket 订阅的 code 都接受不带前缀的纯 6 位数字(如 600108)。注意:000001 默认解析为深市个股 sz.000001(平安银行),上证指数为 sh.999999。
快照字段(quote)
quote 消息的 data 为紧凑快照,各字段含义:
| 字段 | 含义 |
|---|---|
| c | 标的编码(如 sz.000001) |
| n | 名称 |
| t | 时间戳(Unix 秒) |
| p | 最新价 |
| z | 涨跌幅(%) |
| o | 开盘价 |
| h | 最高价 |
| l | 最低价 |
| pc | 昨收价 |
| v | 成交量 |
| a | 成交额 |
| tr | 换手率 |
| vr | 量比 |
五档盘口
紧凑格式:b 买一~买五、a 卖一~卖五,每档为 [价格, 量];bv/sv 为主动买/卖总量。
{ "b": [[7.82,5200],[7.81,1800],[7.80,940],[7.79,300],[7.78,150]],
"a": [[7.83,4300],[7.84,1200],[7.85,1900],[7.86,800],[7.87,400]],
"bv": 953417, "sv": 1252467 }
K 线字段
REST 的三个 K 线接口(日K / 1 分钟 / 5 分钟,前复权)统一返回 data.kline(按时间倒序的 8 字段数组,最新在前)和 data.count(本次返回的 K 线根数,即 kline 数组长度):
[复权开盘, 复权收盘, 复权最高, 复权最低, 成交量, 成交额, 换手率, "YYYY-MM-DD HH:MM"]
注意:8 个字段里只有价格是复权值;成交量与成交额均为原始值 —— 成交额是"当天真实成交金额"这一历史事实,不随复权因子缩放(多年多次除权后因子可能降到 0.3,若缩放会与其它行情软件对不上)。
日 K 的时间戳为当日 "YYYY-MM-DD 15:00";1 分钟 / 5 分钟的时间戳为分钟 "YYYY-MM-DD HH:MM"。
推荐取数流程:初次用 offset/size,之后用 since
- 首次(或本地缓存为空):用
offset=0&size=N拉一批建基线,记下响应里的latest_time; - 之后:每次只带
since=<上次的 latest_time>做增量(闭区间含该根;最多只能获取最近 30天 的数据(建议设置定时任务定期自动同步),被截断时用latest_time连续续拉即可追平); - 补齐缺口:若响应里
last_time > since,说明中间缺了一段(跨度过大触发服务端护栏)⇒ 改用offset/size把缺口补上。
size 上限以当前部署为准(线上:1m 50 / 5m 200 / 日K 1000;默认配置:1m 20 / 5m 100 / 日K 500),超出会被服务端夹到上限。
换手率口径:换手率 = 成交量 / 当日流通股本 × 100 —— 历史换手率已前复权处理
1m/5m K 线(WebSocket kline)的 data 为同一套 8 字段(REST 与 WS 同列同序,WS 推的是其中一根):
[open, close, high, low, cjl, cje, hsl, "YYYY-MM-DD HH:MM"]
当日即前复权基准,故两处数值一致;hsl 同样按当日流通股本计算(指数 / 板块为 0)。
错误码
| code | HTTP | 说明 |
|---|---|---|
| 0 | 200 | 成功 |
| 400 | 400 | 参数错误 |
| 401 | 401 | API Key 无效 |
| 402 | 402 | 积分不足 |
| 403 | 403 | 无权限 |
| 404 | 404 | 资源不存在 |
| 429 | 429 | 请求过于频繁 |
| 500 | 500 | 服务器内部错误 |
计量与限流
连接不设限 · 不用不扣积分 —— 真正收到行情数据才计入用量,按实际用量计费,用多少付多少积分。
- 不限连接:连接数不设上限,随便开、随便连,不按连接数扣除积分。
- 不用不扣:行情静止、休市或未订阅时不产生任何消耗,连接即使空挂也不扣积分。
- 价格低:注册立即送积分,也可通过捐助服务器服务费用获取积分,1元=10积分,盯 1 只股票一整天通常1个积分都不需要,轻量查询几乎免费。
- 分钟 K 线(1m/5m):由于数据量过于庞大,为保障其它用户使用效率,每用户 QPS 限流当前为 10 次/秒。为满足用户需求,自 2026 年 10 月 1 日起将提升至 30 次/秒,超限返回
429。 - 积分余额不足时:REST 返回
402、WS 断开连接。 - 费用详情:注册账号后可在 控制台 查看费用详细说明。高级接口限时开放中,现在注册可申请永久权限,无门槛要求。