【零依赖量化数据实战 #34】历史K线收尾:北交所K线与沪深VIP历史K线
系列:《零依赖量化数据实战》|零依赖 · 纯 GET · 不 import 任何 SDK
适用:想把北交所单只历史K线和沪深VIP历史K线(OHLCV)用纯requests拉到本地的量化爱好者;不依赖任何行情终端。
1. 你将得到什么
- 2 个官方接口的最小可用封装,按市场分成两组:
- 北交所历史K线(1):
/bj/history/{代码.市场}/{级别}/{除权方式}—— 北交所单只 OHLCV 日/周/月线。 - 沪深VIP历史K线(1):
/hs/hsstock/vip/{代码.市场}/{级别}/{除权方式}—— 沪深单只 OHLCV(需 VIP 权限)。
- 北交所历史K线(1):
- 一个对字段名不敏感的
_hit_key读取函数:K线字段中英文混排(日期/date、开盘/open、收盘/close、最高/high、最低/low、成交量/volume),一行候选键命中。
2. 端点语义表
| 端点 | 语义 | 关键参数 |
|---|---|---|
GET /bj/history/{代码.市场}/{级别}/{除权方式} | 北交所单只历史K线(OHLCV) | 代码.市场如920000.BJ;级别如d(日)/w(周)/m(月);除权方式如n(不复权)/qfq/hfq |
GET /hs/hsstock/vip/{代码.市场}/{级别}/{除权方式} | 沪深单只 VIP 历史K线(OHLCV) | 同上,代码如000001.SZ;需 VIP 权限 |
3. 字段名候选键命中
K线行是典型的中英文混排结构,下面这些字段名都可能在返回里出现,统一用候选键命中:
| 含义 | 候选键(按顺序命中第一个存在的) |
|---|---|
| 日期 | 日期/date/time |
| 开盘价 | 开盘/open |
| 收盘价 | 收盘/close |
| 最高价 | 最高/high |
| 最低价 | 最低/low |
| 成交量 | 成交量/volume/vol |
4. 核心模板函数
importrequests TOKEN="你的token"# 外渠版占位;技术博客版用「你的 token」BASE="http://api.zhituapi.com"def_get(path,params=None,token=TOKEN):url=f"{BASE}{path}"q=dict(paramsor{})q["token"]=tokentry:r=requests.get(url,params=q,timeout=10)exceptExceptionase:returnNone,f"ERR{e}"ifr.status_code!=200:returnNone,f"{r.status_code}{r.text.strip()[:140]}"try:returnr.json(),NoneexceptException:returnNone,f"{r.status_code}{r.text.strip()[:140]}"def_hit_key(row,keys):"""字段名中英文混排:按顺序命中第一个存在的键。"""forkinkeys:ifkinrow:returnrow[k]returnNonedefbj_kline(code="920000.BJ",period="d",fq="n"):"""北交所历史K线。"""return_get(f"/bj/history/{code}/{period}/{fq}")defhs_vip_kline(code="000001.SZ",period="d",fq="n"):"""沪深 VIP 历史K线(需 VIP 权限)。"""return_get(f"/hs/hsstock/vip/{code}/{period}/{fq}")if__name__=="__main__":forname,fnin[("bj_kline",bj_kline),("hs_vip_kline",hs_vip_kline)]:data,err=fn()print(f"[{name}] data={data}err={err}")跑通示例
把上面的代码复制到本地,填入你的 token 即可直接运行:它会请求对应接口、拉取真实数据,并输出归一化后的结构化字典(各字段含义见前文各小节)。
6. 坑与注意事项
- 102 不代表路径对:
404 102是「证书不存在」(鉴权先于路由),路径合法与否要靠客户端白名单自查。 - token 必须走查询参数:
?token=你的token,不要塞进 header—— - 代码后缀别漏:北交所是
.BJ、深市.SZ、沪市.SH,路径里的点号原样保留(requests 会自行百分号编码)。 - 除权方式三选一:
n(不复权)/qfq(前复权)/hfq(后复权),写错会路由不到。 - VIP 路径要权限:
/hs/hsstock/vip/需要 VIP 证书,普通 token 即便路径正确也可能返回无权限,属于预期内。
7. 小结与下篇预告
本篇把「历史K线」的两种收尾端点——北交所K线与沪深VIP历史K线——拧成了 2 个零依赖封装,重点解决token 查询参数、代码后缀、除权方式三选一三个坑,配_hit_key候选键即可一行读出行情。
本篇(#34)为 #29–#34 阶段收尾:本篇用零依赖接口补齐了北交所历史K线与沪深VIP历史K线两类 OHLCV 端点,至此《零依赖量化数据实战》覆盖官方接口清单的全部 191 个端点。
8. 免责声明
本文仅演示公开数据接口的用法,所有代码示例均为演示数据,未含任何真实数据;文中示例仅为演示用途,不构成投资建议,亦不承诺收益。