A股量化数据工程:从 REST 接口到策略信号(第 24 篇):涨停、跌停与强势股池
前言
涨停板是 A 股最显性的短线情绪。涨停家数多 = 风险偏好高,跌停家数多 = 恐慌。接口hslt/ztgc(涨停)、dtgc(跌停)、qsgc(强势)给出每日股池,本篇自研封单强度与连板数,量化短线温度。
一、接口原始字段梳理
1)涨停股池
接口地址:https://api.biyingapi.com/hslt/ztgc/{日期}/{LICENCE}
| 字段 | 说明 |
|---|---|
| dm | 股票代码 |
| mc | 股票名称 |
| p | 最新价 |
| zf | 涨幅 |
| cje | 成交额 |
| lt | 流通(接口原始字段) |
| zsz | 总市值 |
| hs | 换手率 |
| lbc | 连板数 |
| fbt | 封板(接口原始字段) |
| lbt | 连板(接口原始字段) |
| zj | 资金 / 封单(接口原始字段) |
| zbc | 涨停板(接口原始字段) |
| tj | 统计(接口原始字段) |
2)跌停股池
接口地址:https://api.biyingapi.com/hslt/dtgc/{日期}/{LICENCE}
| 字段 | 说明 |
|---|---|
| dm | 股票代码 |
| mc | 股票名称 |
| p | 最新价 |
| zf | 涨幅 |
| cje | 成交额 |
| lt | 流通 |
| zsz | 总市值 |
| pe | 市盈率 |
| hs | 换手率 |
| lbc | 连板数 |
| lbt | 连板 |
| zj | 资金 |
| fba | 封板(跌停口径,接口原始字段) |
| zbc | 涨停板 |
3)强势股池
接口地址:https://api.biyingapi.com/hslt/qsgc/{日期}/{LICENCE}
| 字段 | 说明 |
|---|---|
| dm | 股票代码 |
| mc | 股票名称 |
| p | 最新价 |
| ztp | 涨停价 |
| zf | 涨幅 |
| cje | 成交额 |
| lt | 流通 |
| zsz | 总市值 |
| zs | 涨停数(接口原始字段) |
| nh | 年内(接口原始字段) |
| lb | 连板(接口原始字段) |
| hs | 换手率 |
| tj | 统计 |
二、自研衍生统计指标
- 封单强度:
zj / zsz,封单资金占市值比,越高涨停越硬。 - 连板高度:
lbc最大值即当日市场最高连板,代表短线情绪天花板。 - 涨跌家数比:涨停数 / 跌停数,市场宽度短线版(呼应第 17 篇)。
强度与高度基于原始
zj/lbc字段二次计算。
三、数据表设计
CREATETABLEIFNOTEXISTSpool_limit_up(dmTEXT,dayTEXT,pREAL,zfREAL,cjeREAL,zszREAL,lbcINTEGER,zjREAL,PRIMARYKEY(dm,day));CREATETABLEIFNOTEXISTSpool_limit_down(dmTEXT,dayTEXT,pREAL,zfREAL,cjeREAL,zszREAL,lbcINTEGER,zjREAL,PRIMARYKEY(dm,day));CREATETABLEIFNOTEXISTSpool_strong(dmTEXT,dayTEXT,pREAL,ztpREAL,zfREAL,zszREAL,lbINTEGER,PRIMARYKEY(dm,day));四、完整代码
importrequestsimportsqlite3importtime LICENCE="YOUR_LICENCE"BASE="https://api.biyingapi.com"DB_PATH="quant.db"defbiying_api_get_retry(url,timeout=15,max_retry=3):foriinrange(max_retry):try:r=requests.get(url,timeout=timeout)r.raise_for_status()returnr.json()exceptExceptionase:ifi==max_retry-1:raisetime.sleep(1+i)deffetch_pool(kind,day):d=biying_api_get_retry(f"{BASE}/hslt/{kind}/{day}/{LICENCE}")returnd.get("data",[])ifisinstance(d,dict)else[]defseal_strength(rows):out=[]forrinrows:zj=r.get("zj")or0zsz=r.get("zsz")or0out.append(round(zj/zsz,4)ifzszelse0.0)returnoutif__name__=="__main__":day="2026-09-18"# 示例日期,实际以交易日为准up=fetch_pool("ztgc",day);dn=fetch_pool("dtgc",day);sg=fetch_pool("qsgc",day)con=sqlite3.connect(DB_PATH)forrinup:con.execute("INSERT OR REPLACE INTO pool_limit_up(dm,day,p,zf,cje,zsz,lbc,zj)""VALUES(?,?,?,?,?,?,?,?)",[r.get("dm"),day,r.get("p"),r.get("zf"),r.get("cje"),r.get("zsz"),r.get("lbc"),r.get("zj")])forrindn:con.execute("INSERT OR REPLACE INTO pool_limit_down(dm,day,p,zf,cje,zsz,lbc,zj)""VALUES(?,?,?,?,?,?,?,?)",[r.get("dm"),day,r.get("p"),r.get("zf"),r.get("cje"),r.get("zsz"),r.get("lbc"),r.get("zj")])forrinsg:con.execute("INSERT OR REPLACE INTO pool_strong(dm,day,p,ztp,zf,zsz,lb)""VALUES(?,?,?,?,?,?,?)",[r.get("dm"),day,r.get("p"),r.get("ztp"),r.get("zf"),r.get("zsz"),r.get("lb")])con.commit();con.close()up_str=seal_strength(up)max_lb=max([(r.get("lbc")or0)forrinup],default=0)print(f"日期{day}涨停{len(up)}只(最高连板{max_lb}) 跌停{len(dn)}只 强势{len(sg)}只")print(f"涨停封单强度 Top3:",sorted(zip([r.get('dm')forrinup],up_str),key=lambdax:x[1],reverse=True)[:3])五、关键业务说明
- 封单看占比不看绝对值:小市值股封单额天然小,
zj/zsz才可比。 - 连板高度是情绪锚:最高连板数反映游资敢打多高,是短线风险偏好的温度计。
- 与宽度指标呼应:涨停/跌停比与第 17 篇新高/新低宽度同源,互为短线+中线印证。
六、拓展练习
- 把
pool_limit_up按日落库,统计「连板高度」序列,找情绪周期拐点。 - 对涨停股叠加第 5 篇板块映射,看主线是否集中在同一题材。
- 用封单强度排序「硬板」,跟踪其次日溢价(仅统计演示)。
下篇预告
A股量化数据工程:从 REST 接口到策略信号(第 25 篇):次新股池与炸板监控
下一篇用
hslt/cxgc与zbgc拉取次新股池与炸板股池,自研「炸板率」与「次新上市天数」指标。
免责申明:本篇全部代码、接口调用仅作为量化编程学习演示,仅为数据演示,不构成投资建议。市场有风险,投资需谨慎。