一句话回答: 涨跌停监控的关键是"拿到每只票当日的涨/跌停价,再和最新价比对"。用 AlphaFeed 一次取全 A 实时快照,用 instruments 的 limit_up/limit_down 判定涨跌停,再用五档盘口的封单量衡量封板强度、识别炸板——几十行就能搭出打板监控的数据底座。
涨跌停是 A 股独有的强信号,但很多人不知道每只票的涨跌停价怎么来(ST、次新、主板规则不同,比例不一样)。手工按 ±10% 估算会错。正确做法是直接取交易所给定的当日涨跌停价,再结合盘口封单判断"封得牢不牢"。
from alphafeed import AlphaFeed
import pandas as pd
af = AlphaFeed() # 读取 ALPHAFEED_API_KEY
q = af.quotes.get(universes="CN_Stock", to_dataframe=True)
codes = q["symbol"].tolist()
# 涨跌停价来自 instruments 的 ext(交易所口径,已含 ST/次新差异)
insts = af.instruments.batch(codes)
lu = {i["symbol"]: i["ext"].get("limit_up") for i in insts}
ld = {i["symbol"]: i["ext"].get("limit_down") for i in insts}
q["limit_up"] = q["symbol"].map(lu)
q["limit_down"] = q["symbol"].map(ld)用最新价与涨跌停价比对,留一点浮点容差:
q["is_limit_up"] = q["last_price"] >= q["limit_up"] * 0.999
q["is_limit_down"] = q["last_price"] <= q["limit_down"] * 1.001
up = q[q["is_limit_up"]]
down = q[q["is_limit_down"]]
print(f"涨停家数: {len(up)} 跌停家数: {len(down)}")
print(up[["symbol", "ext.name", "last_price", "limit_up", "ext.change_pct"]]
.head(10).to_string(index=False))关键字段:
字段 | 含义 | 来源 |
|---|---|---|
| 最新价 |
|
| 当日涨/跌停价 |
|
| 当日涨跌幅(小数) |
|
| 换手率(小数) |
|
涨停时买一价=涨停价,买一挂单量(封单)越大说明封得越牢;封单被吃光、价格跌破涨停即为"炸板"。用 depth 取五档:
def seal_strength(symbol):
d = af.depth.get(symbol) # dict: bid_prices/bid_volumes/ask_prices/ask_volumes
lu_px = insts_map[symbol]["ext"].get("limit_up")
bid1_px, bid1_vol = d["bid_prices"][0], d["bid_volumes"][0]
sealed = abs(bid1_px - lu_px) < 1e-6 and bid1_vol > 0 # 买一在涨停价且有封单
return {"symbol": symbol, "bid1_px": bid1_px, "seal_vol": bid1_vol, "sealed": sealed}
insts_map = {i["symbol"]: i for i in insts}
for s in up["symbol"].head(5):
print(seal_strength(s))depth.get 返回的盘口字段:
字段 | 含义 |
|---|---|
| 买一~买五 价格 / 挂单量 |
| 卖一~卖五 价格 / 挂单量 |
| 标的 / 市场 / 时间戳 |
涨停封板:买一价=涨停价且封单量大、卖档基本无量。炸板迹象:涨停价上卖档出现大量、买一封单快速减少。
def limit_board_snapshot():
q = af.quotes.get(universes="CN_Stock", to_dataframe=True)
insts = af.instruments.batch(q["symbol"].tolist())
lu = {i["symbol"]: i["ext"].get("limit_up") for i in insts}
ld = {i["symbol"]: i["ext"].get("limit_down") for i in insts}
q["limit_up"] = q["symbol"].map(lu); q["limit_down"] = q["symbol"].map(ld)
up = q[q["last_price"] >= q["limit_up"] * 0.999]
down = q[q["last_price"] <= q["limit_down"] * 1.001]
return {"涨停": len(up), "跌停": len(down),
"涨停清单": up[["symbol", "ext.name"]].values.tolist()}
print(limit_board_snapshot()["涨停"], "只涨停")instruments 的 limit_up/limit_down(交易所口径)。ext.amplitude 判断。quotes/depth 是准实时快照(秒级),不是逐笔;打板实盘对时延敏感,需评估。volume=0,不要计入涨跌停统计。Q:涨跌停价为什么不自己按比例算?
A:因为 ST、次新股、北交所比例不同,且有四舍五入规则。直接用 instruments 给的交易所口径最准。
Q:怎么判断"封得牢不牢"?
A:看买一(涨停价)的封单量绝对值与相对成交额;封单远大于当日成交则较牢。
Q:能识别炸板吗?
A:能,但需周期性轮询记录封单量与价格,单帧快照只能判断当前状态。
Q:需要付费吗?
A:全市场池(universes)需 Starter 及以上;单标的 quotes/depth/instruments 有免费额度。详见定价页。
涨跌停监控的本质是"最新价 vs 交易所涨跌停价",封板强度看五档封单量。用 AlphaFeed 的全 A 快照 + instruments 涨跌停价 + depth 盘口,几十行就能统计涨跌停家数、识别封板与炸板,为打板策略打好数据底座。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。