【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #02】涨停跌停与特色股池:5类股池接口一次拉全
系列:别再到处找免费股票数据API了:官方204个接口,32篇一次讲透|连载项目 · 纯 GET 取数 · 仅依赖 requests
适用:想做量化选股池 / 打板盯盘,但还在盯盘软件手动刷涨跌停、去股吧抄股池的读者;数据由官方公开接口提供。本篇给沪深A股「涨停 / 跌停 / 强势 / 新股 / 指标」5 个特色股池端点的分组地图、一行拉全的代码、各股池字段差异的坑,全部只依赖 requests,所有示例均为演示数据,不构成投资建议。
1. 你将得到什么
读完这一篇,你能拿走四样东西:
- 一张分组地图:5 个特色股池端点按用途分成 3 组,知道涨停池、跌停池、新股池该敲哪个门;
- 一行拉全的代码:
/hs/pool/ztgc一次返回当日涨停股池,不用爬虫翻页; - 各股池字段差异的解法:涨停池有「连板天数」,跌停池要区分「一字跌停」还是「跳水跌停」;
- 三个真实踩坑点,都是第一次用几乎一定会踩的。
代码全部自包含,复制进.py直接能跑,不依赖 numpy / pandas。
2. 本篇取数约定
- 全部接口都是GET + query 参数,token 放在查询串里(
?token=xxx); - 统一基址
https://api.zhituapi.com; - 代码块里的
你的token是占位符,换成你的 token 即可; - 所有接口路径均取自官方已验证文档,跨篇零重复。
3. 5 个端点分 3 组
先建立地图。特色股池类一共 5 个端点,按用途分:
| 组 | 端点 | 用途 | 更新频率 |
|---|---|---|---|
| 上涨股池 | /hs/pool/ztgc | 当日涨停股池,含连板天数、封单额 | 盘中实时 |
| 下跌股池 | /hs/pool/dtgc | 当日跌停股池,含跌停类型 | 盘中实时 |
| 事件股池 | /hs/pool/qsgc | 新股(次新)股池 | 每日盘后 |
| 强势股池 | /hs/pool/cxgc | 创新高 / 强势股池 | 每日盘后 |
| 指标股池 | /hs/pool/zbgc | 指标股(权重 / 成分)股池 | 每日盘后 |
4. 核心模板函数
importrequests,time BASE="https://api.zhituapi.com"TOKEN="你的token"# ---------- 1. 字段容错与类型归一 ----------def_hit_key(d,*cands,default=None):"""字段容错:接口偶发大小写/中英文混用时,按顺序取第一个非空值"""ifnotisinstance(d,dict):returndefaultforcincands:ifcindandd[c]notin(None,"","-","null"):returnd[c]low={str(k).lower():vfork,vind.items()}forcincands:v=low.get(str(c).lower())ifvnotin(None,"","-","null"):returnvreturndefaultdef_to_int(v,default=0):try:ifvin(None,"","-","null","None"):returndefaultreturnint(float(v))except(TypeError,ValueError):returndefault# ---------- 2. 统一请求:重试 + 退避 ----------def_get(path,params=None,timeout=10,retries=2,backoff=0.6,default=None):"""返回 JSON;失败重试 retries 次仍失败则返回 {'_error': 原因}"""q={"token":TOKEN}ifparams:q.update(params)last=""foriinrange(retries+1):try:r=requests.get(BASE+path,params=q,timeout=timeout)ifr.status_code==200:try:returnr.json()exceptValueError:returndefault last="HTTP %s %s"%(r.status_code,(r.textor"").strip()[:80])exceptExceptionase:last="%s: %s"%(type(e).__name__,e)ifi<retries:time.sleep(backoff*(i+1))return{"_error":last}# ---------- 3. 股池类封装 ----------deffetch_zt():return_get("/hs/pool/ztgc",default=[])deffetch_dt():return_get("/hs/pool/dtgc",default=[])deffetch_qs():return_get("/hs/pool/qsgc",default=[])deffetch_cx():return_get("/hs/pool/cxgc",default=[])deffetch_zb():return_get("/hs/pool/zbgc",default=[])# ---------- 4. 涨停连板天数排序 ----------deftop_limit_streaks(n=10):"""涨停股池按连板天数降序取前 n"""rows=fetch_zt()ifisinstance(rows,dict)and"_error"inrows:return[],rows["_error"]out=[]forrinrowsor[]:code=_hit_key(r,"code","dm",default="")name=_hit_key(r,"name","mc",default="")streak=_to_int(_hit_key(r,"lbs","lbts","连板天数",default=1))out.append((streak,code,name))out.sort(key=lambdax:x[0],reverse=True)returnout[:n],None# ---------- 5. 校验 ----------defrun_check():# 1) 字段容错assert_hit_key({"Code":"000001","Name":"平安银行"},"code","dm")=="000001"assert_to_int("-")==0and_to_int("3")==3# 2) 涨停池连板排序fake=[{"code":"600519.SH","name":"贵州茅台","lbs":"2"},{"code":"000001.SZ","name":"平安银行","lbs":"5"},{"code":"300750.SZ","name":"宁德时代","lbs":"1"}]importtypesglobalfetch_zt _orig=fetch_zt fetch_zt=lambda:fake top,err=top_limit_streaks(2)fetch_zt=_origasserterrisNoneandtop[0][0]==5andtop[1][0]==2print("校验通过")if__name__=="__main__":run_check()print("-"*62)forname,pathin[("涨停股池","/hs/pool/ztgc"),("跌停股池","/hs/pool/dtgc"),("新股股池","/hs/pool/qsgc"),("强势股池","/hs/pool/cxgc"),("指标股池","/hs/pool/zbgc")]:data=_get(path,default=[])ifisinstance(data,dict)and"_error"indata:print("%-10s %-18s -> %s"%(name,path,data["_error"][:60]))else:print("%-10s %-18s -> %d 条"%(name,path,len(data)))5. 跑通示例
把上面的代码复制到本地,填入你的 token 即可直接运行:它会请求 5 个特色股池接口、拉取真实数据,并输出各股池的条数;top_limit_streaks还能按连板天数给涨停股排序(各字段含义见前文各小节)。
6. 坑与注意事项
坑 1:涨停池和跌停池的字段命名不对称。/hs/pool/ztgc返回「连板天数 / 封单额 / 首次涨停时间」,而/hs/pool/dtgc返回「跌停类型 / 成交额」,两者字段结构不同,别用一套解析函数通吃。_hit_key的容错就是为这种大小写 / 中英文混用准备的。
坑 2:股池是盘中实时数据,盘后可能清空或延迟。/hs/pool/ztgc、/hs/pool/dtgc是盘中实时更新的,收盘后接口可能返回空数组或最后快照。做历史回测别直接拿实时股池当历史涨跌停清单,要用专门的历史停板接口(见后续分时与停板篇)。
坑 3:新股池和强势股池的更新节奏不一致。/hs/pool/qsgc(新股)是事件驱动,只有新股上市那几天有数据;/hs/pool/cxgc(强势 / 创新高)是每日盘后更新。写定时任务时别把它们当成同样频率,新股池空了别报错退出。
7. 小结与下篇预告
本篇把沪深A股 5 个特色股池端点分成 3 组,给出一行拉全的代码,top_limit_streaks按连板天数给涨停股排序,_hit_key处理股池字段不对称。
下一篇:《【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #03】公司概况股东靠手抄?17项上市公司详情一行查清》:用/hs/gs一组接口,把公司简介 / 上市信息 / 历届高管 / 经营范围等上市公司详情一键取全。
8. 免责声明
本文仅演示沪深A股特色股池数据的取数方法,所有代码示例均为演示数据,未含任何真实行情数值,不构成投资建议,亦不承诺收益。