ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

A股量化数据工程:从 REST 接口到策略信号(第 24 篇):涨停、跌停与强势股池

A股量化数据工程:从 REST 接口到策略信号(第 24 篇):涨停、跌停与强势股池

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统计

二、自研衍生统计指标

  1. 封单强度:zj / zsz,封单资金占市值比,越高涨停越硬。
  2. 连板高度:lbc最大值即当日市场最高连板,代表短线情绪天花板。
  3. 涨跌家数比:涨停数 / 跌停数,市场宽度短线版(呼应第 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 篇新高/新低宽度同源,互为短线+中线印证。

六、拓展练习

  1. 把pool_limit_up按日落库,统计「连板高度」序列,找情绪周期拐点。
  2. 对涨停股叠加第 5 篇板块映射,看主线是否集中在同一题材。
  3. 用封单强度排序「硬板」,跟踪其次日溢价(仅统计演示)。

下篇预告

A股量化数据工程:从 REST 接口到策略信号(第 25 篇):次新股池与炸板监控

下一篇用hslt/cxgc与zbgc拉取次新股池与炸板股池,自研「炸板率」与「次新上市天数」指标。

免责申明:本篇全部代码、接口调用仅作为量化编程学习演示,仅为数据演示,不构成投资建议。市场有风险,投资需谨慎。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进