☰
【Python量化实战宝典 #03】指数与板块行情接口全拆解:大盘·行业·概念一键取(Python 可跑)
2026/10/15 9:39:37 网站建设 项目流程

【Python量化实战宝典 #03】指数与板块行情接口全拆解:大盘·行业·概念一键取(Python 可跑)

手册定位:一篇把一个数据接口讲透,拿来就能写策略。本篇是「数据底座手册」第 3 篇,聚焦指数与板块行情——择时看大盘、行业中性化看板块、主题投资看概念,三类信号全从这里取。
接口路径均取自官网文档页已验证路径(hsindexapi.html沪深指数、hsstockapi.html板块、hsdataapi.html板块资金流),未虚构。示例用演示数据,逻辑与真实调用完全一致。

1. 你将得到什么

写择时、做行业轮动、跟主题行情,下面这些痛点本篇一次解决:

  • 想盯大盘却只知道一个个搜指数代码——本篇给你「指数列表 + 指数实时」一条龙。
  • 做行业中性化(模块二 #15)要先拿到行业分类与成分——本篇给板块列表 + 板块明细(成分股 + 涨跌)。
  • 想跟概念/主题资金——本篇给概念板块列表 + 概念资金流向 + 资金路线图。
  • 不想每次手写不同 base、不同重试逻辑——本篇给一套自包含可跑的核心模板函数,复制即用。

读完你能直接用代码取出:沪深主要指数实时涨跌、任意行业/概念板块的成分与涨幅、各行业/概念的主力净流入与资金路线图。

2. 取数约定

约定值
基础域名https://api.zhituapi.com
鉴权调用带?token=你的token
返回结构统一{ "code": 0, "data": [...] },异常/限频时为空或重试
文档页沪深指数hsindexapi.html、沪深A股hsstockapi.html、沪深数据hsdataapi.html
指数代码后缀上证.SH、深证.SZ(如000001.SH上证指数、399001.SZ深证成指)

不同端点字段名可能略有差异,先print(resp.json())看一行再写映射,别凭记忆硬套。本篇演示数据已按文档返回结构对齐。

3. 端点分组地图(3 组,9 个端点)

组用途端点(GET)文档页
A 指数沪深主要指数列表/hz/list/hszshsindexapi
A 指数指数实时交易数据/hz/real/ssjy/{代码}.{市场}hsindexapi
A 指数指数分时/技术指标(延伸)/hz/latest/fsjy/{代码}.{市场}/d/n、`/hz/history/macdma
B 板块与成分概念指数列表/hs/list/sectorshsstockapi
B 板块一级市场板块列表/hs/list/primaryhsstockapi
B 板块板块明细(成分股 + 涨跌)/hs/sectors/{板块名}hsstockapi
C 板块资金流证监会行业资金流向/hibk/zjhhyhsdataapi
C 板块概念板块资金流向/hibk/gnbkhsdataapi
C 板块行业/概念资金路线图/hizj/zjh、/hizj/bkhsdataapi

与第 1、2 篇的切分:#01 讲个股盘中实时、#02 讲个股历史 K 线;本篇讲指数 + 板块,主体不同、端点不重叠。指数分时/K 线在 A 组仅作「延伸」一笔带过,深度时间序列仍归 #02。

4. 核心模板函数(自包含可跑)

下面整段复制即可运行(演示开关_MOCK=True离线跑通;上线把_MOCK改为False并填 token)。

importtime,requests,json BASE="https://api.zhituapi.com"TOKEN="你的token"# 替换为你的真实 token_HIT=0# 命中计数(演示用)_MOCK=True# 演示开关:True=用演示数据,False=真请求def_hit_key():global_HIT _HIT+=1return_HITdef_get(path,default=None,retries=3):"""统一取数:重试退避 + 返回 data。演示模式直接走 _demo。"""if_MOCK:return_demo(path)url=f"{BASE}{path}?token={TOKEN}"foriinrange(retries):try:r=requests.get(url,timeout=10)ifr.status_code==200:data=r.json()ifdata.get("code")==0anddata.get("data")isnotNone:returndata time.sleep(0.3*(i+1))exceptException:time.sleep(0.3*(i+1))returndefaultdef_demo(path):# 演示数据:键名与文档返回对齐,离线即可跑通本篇所有示例ifpath=="/hz/list/hszs":return{"code":0,"data":[{"code":"000001.SH","name":"上证指数"},{"code":"399001.SZ","name":"深证成指"},{"code":"000300.SH","name":"沪深300"}]}ifpath.startswith("/hz/real/ssjy/"):return{"code":0,"data":{"code":"000001.SH","name":"上证指数","price":3210.55,"pct_chg":0.42,"amount":2.81e11}}ifpath=="/hs/list/sectors":return{"code":0,"data":[{"bk":"人工智能","code":"BK0800"},{"bk":"新能源车","code":"BK0900"}]}ifpath=="/hs/list/primary":return{"code":0,"data":[{"bk":"主板","code":"BK0100"},{"bk":"创业板","code":"BK0200"}]}ifpath.startswith("/hs/sectors/"):return{"code":0,"data":[{"code":"600519.SH","name":"贵州茅台","pct_chg":1.23},{"code":"000858.SZ","name":"五粮液","pct_chg":-0.56}]}ifpath=="/hibk/zjhhy":return{"code":0,"data":[{"bk":"银行","main_net":1.2e9},{"bk":"酿酒","main_net":-3.4e8}]}ifpath=="/hibk/gnbk":return{"code":0,"data":[{"bk":"人工智能","main_net":5.6e9},{"bk":"CPO","main_net":2.1e9}]}ifpath=="/hizj/zjh":return{"code":0,"data":[{"bk":"银行","inflow":1.2e9,"outflow":9.8e8}]}ifpath=="/hizj/bk":return{"code":0,"data":[{"bk":"人工智能","inflow":5.6e9,"outflow":4.1e9}]}return{"code":0,"data":[]}# —— 组A:指数 ——defindex_list():# 沪深主要指数列表return_get("/hz/list/hszs",default=[])defindex_realtime(code="000001.SH"):# 指数实时交易数据return_get(f"/hz/real/ssjy/{code}",default={})# —— 组B:板块与成分 ——defsector_list():# 概念指数列表return_get("/hs/list/sectors",default=[])defprimary_sectors():# 一级市场板块列表return_get("/hs/list/primary",default=[])defsector_detail(name):# 板块明细(成分股 + 涨跌)return_get(f"/hs/sectors/{name}",default=[])# —— 组C:板块资金流向 ——defindustry_flow():# 证监会行业资金流向return_get("/hibk/zjhhy",default=[])defconcept_flow():# 概念板块资金流向return_get("/hibk/gnbk",default=[])defindustry_flow_map():# 证监会行业资金路线图return_get("/hizj/zjh",default=[])defconcept_flow_map():# 概念板块资金路线图return_get("/hizj/bk",default=[])defrun_check():"""离线校验:9 个端点分组自检,全部可取数。"""idx=index_list()assertidxandisinstance(idx,dict)andidx.get("data"),"指数列表为空"one=index_realtime("000001.SH")assertone.get("data",{}).get("price")isnotNone,"指数实时缺 price"sec=sector_list()assertsecandsec.get("data"),"概念板块列表为空"pri=primary_sectors()assertpriandpri.get("data"),"一级板块列表为空"det=sector_detail("人工智能")assertdetanddet.get("data"),"板块明细为空"ind=industry_flow()assertindandind.get("data"),"行业资金流为空"cn=concept_flow()assertcnandcn.get("data"),"概念资金流为空"mp1=industry_flow_map()assertmp1andmp1.get("data"),"行业资金路线图为空"mp2=concept_flow_map()assertmp2andmp2.get("data"),"概念资金路线图为空"print("校验通过:3 组接口(指数 / 板块 / 板块资金流)共 9 个端点均可取数")if__name__=="__main__":print("指数列表:",[(d["code"],d["name"])fordinindex_list()["data"]])print("上证指数实时:",index_realtime("000001.SH")["data"])print("概念板块:",[d["bk"]fordinsector_list()["data"]])print("人工智能 成分(前2):",sector_detail("人工智能")["data"][:2])print("行业资金流(前2):",industry_flow()["data"][:2])run_check()

指数实时返回字段(参考)

原始字段含义备注
code指数代码带.SH/.SZ后缀
name指数名称如 上证指数
price最新点位即「现价」
pct_chg涨跌幅(%)当日
amount成交额(元)区间累计

板块明细返回字段(参考)

原始字段含义
code成分股代码
name成分股名称
pct_chg成分股当日涨跌幅(%)

板块资金流端点(/hibk/*、/hizj/*)字段以实际返回为准,常见为bk(板块名)、main_net(主力净流入)、inflow/outflow(流入/流出)。真实调用先print一行确认。

5. 跑通示例

真实调用只需把_MOCK改为False并填TOKEN,下面直接给演示模式(离线)输出,证明逻辑闭环:

指数列表:[('000001.SH', '上证指数'), ('399001.SZ', '深证成指'), ('000300.SH', '沪深300')] 上证指数实时:{'code': '000001.SH', 'name': '上证指数', 'price': 3210.55, 'pct_chg': 0.42, 'amount': 281000000000.0} 概念板块:['人工智能', '新能源车'] 人工智能 成分(前2):[{'code': '600519.SH', 'name': '贵州茅台', 'pct_chg': 1.23}, {'code': '000858.SZ', 'name': '五粮液', 'pct_chg': -0.56}] 行业资金流(前2):[{'bk': '银行', 'main_net': 1200000000.0}, {'bk': '酿酒', 'main_net': -340000000.0}] 校验通过:3 组接口(指数 / 板块 / 板块资金流)共 9 个端点均可取数

把这几行拼起来,你就能做一件很实用的事:每日收盘后,取全部行业/概念板块的资金净流入,排序找出当天最吸金的主题,再结合板块成分股的涨跌,直接喂给模块四的行业轮动(#28)与行业中性化(#15)。

6. 坑与注意事项

  1. 指数代码后缀别漏:指数用.SH/.SZ(如000001.SH),不是个股的纯 6 位代码;写错会返回空。
  2. 板块明细的{板块名}要 URL 编码:含中文的板块名(如「人工智能」)传入/hs/sectors/{板块名}前先urllib.parse.quote,否则请求会失败。
  3. 板块资金流 ≠ 板块明细:/hs/sectors/*给的是成分与涨跌,/hibk/*·/hizj/*给的是资金流;做「资金 + 涨跌」双维度要先分别取再按bk名对齐 join。
  4. 行业分类两套:/hibk/zjhhy(证监会行业)与/hs/list/primary(一级市场板块)口径不同,别混用;做中性化前先固定用哪一套。
  5. 限频:实盘批量取几十个板块时加time.sleep,避免触发限频返回空。
  6. 字段名以实际返回为准:不同端点main_net/inflow/net_in等命名可能不同,统一先print(resp.json())看一行再映射。

7. 小结与下一篇预告

本篇把「指数 + 板块 + 板块资金流」三类信号一次性打通,核心是一套自包含、可离线跑通的核心模板函数。配合 #01 个股实时、#02 个股历史 K 线,你已经拥有择时与行业轮动的完整数据底座。

下一篇预告:《【Python量化实战宝典 #04】财务三表接口手册:资产负债表、利润表、现金流字段映射(Python 可跑)》:用hsdataapi把三大财务报表的字段逐个映射清楚,估值因子(#09)、质量因子(#11)都靠它落地。

8. 免责声明

本篇接口路径与字段以官网文档页为准,示例为演示数据,仅用于说明取数方式;投资有风险,本内容不构成任何投资建议。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询