)
系列Python实时盯盘与预警 · 第 03 篇 · 适合初学 · 5 分钟读完即可跑通痛点开场#01/#02 是看自己的 30 只——但盘中真正决定赚钱效应强弱的是全市场的涨停池今天 6 连板是不是出来了哪些板块同时拉哪个炸板还没补这些信息散在交易终端的涨停板块里看不见全貌、也来不及横截面对比。本文用一份证书任一品牌免费版就够把当日全市场涨停股池拉成一张可排序的快照连板梯队、净流入 Top10、行业分布、炸板次数——一屏看完资金在追谁、谁在分化。本文你将得到什么一段 80 行的 Python单文件可跑零外部依赖。一张连板梯队 净流入 封板时间复合排序的涨停快照表30 行 1 屏。4 张子表连板梯队 / 净流入 Top10 / 行业分布 / 炸板次数——把资金为什么追和封板稳不稳分两轴看清楚。环境准备5 分钟复用 #01 的环境conda 环境fastApiEnv、mairui 1.0.0、证书只读不打印。安装同前pip install mairui证书通过MAIRUI_LICENCE环境变量或.secrets/mairui_licence.txt传入。跑数据当天为非交易日 / 周末把TARGET_DATE改成历史日期即可回看。完整可运行脚本自验环境fastApiEnv/ Python 3.9 / mairui 1.0.02026-08-03 09:54 实盘已 PASS33 条涨停 100% 解析成功。【Python实时盯盘与预警 #03】涨停跌停一字板,盘中第一时间拉出涨停池from__future__importannotationsimportosimportsysfromcollectionsimportCounterfromdatetimeimportdatetime# 复用内容龙虾 _common/mairui_helper.py 的证书加载器(只读不打印)sys.path.insert(0,os.path.join(os.path.dirname(__file__),..,..,..,_common))frommairui_helperimportload_licence# noqa: E402frommairuiimportClient# noqa: E402# 默认看今天;非交易日/盘后跑回看,改成具体日期即可(YYYY-MM-DD)TARGET_DATEos.environ.get(TARGET_DATE)or2026-08-03deffetch_limit_up(api:Client,date:str)-list[dict]:拉涨停股池。返回原始 list 字段(键为拼音首字母:dm/mc/p/zf/...).rawapi.limit_up_pool(date)ifisinstance(raw,list):returnrawifisinstance(raw,dict):forkeyin(data,items,list,pool):ifkeyinrawandisinstance(raw[key],list):returnraw[key]return[raw]return[]deffmt_time(s):092500 - 09:25:00 (- 或 None 保持 - ).ifnotsornotisinstance(s,str)orlen(s)6:return-ss.strip()iflen(s)6ands.isdigit():returnf{s[0:2]}:{s[2:4]}:{s[4:6]}returnsdefrender(rows):ifnotrows:returnf[{TARGET_DATE}] 当日无涨停股(或接口尚未拉到数据,盘中请等 10:00 后再跑)。# 排序:连板数降序 → 净流入降序 → 封板时间升序(越早封板越靠前)rows.sort(keylambdar:(-(r.get(lbc)or0),-float(r.get(zj)or0),fmt_time(r.get(fbt))or99:99:99,))lines[f【涨停池快照】日期{TARGET_DATE}共{len(rows)}只,f{排名:3}{代码:7}{名称:8}{连板:4}{首次封板:9}{净流入(万):10}{涨跌幅%:9}{行业:8},]fori,rinenumerate(rows,1):lianbanr.get(lbc)ifr.get(lbc)isnotNoneelse0net_in(r.get(zj)or0)/1e4# 元 - 万元zfr.get(zf)or0lines.append(f{i:3}{str(r.get(dm)or):7}{str(r.get(mc)or):8}f{lianban:4}{fmt_time(r.get(fbt)):9}{net_in:9.2f}f▲{zf:7.2f}%{str(r.get(hy)or-):8})return\n.join(lines)defrender_stats(rows):关键统计:连板梯队 / 净流入 Top10 / 行业分布 Top5 / 炸板次数分布out[]# 连板梯队lianban_counterCounter(r.get(lbc)or0forrinrows)laddersorted(lianban_counter.items(),keylambdax:-x[0])out.append(【连板梯队】(同一连板数多少只))ifnotladder:out.append( (无数据))forn,cntinladder[:10]:out.append(f{n}连板:{cnt}只)# 净流入 Top10top_amountsorted(rows,keylambdar:-(r.get(zj)or0))[:10]out.append()out.append(【净流入 Top10】)forrintop_amount:net_in_wan(r.get(zj)or0)/1e4out.append(f{r.get(dm)}{str(r.get(mc)or):6}f净流入{net_in_wan:8.2f}万{r.get(lbc)or0}连板 f封板{fmt_time(r.get(fbt))})# 行业分布 Top5hy_counterCounter(r.get(hy)or未知forrinrows)out.append()out.append(【行业分布 Top5】)forhy,cntinhy_counter.most_common(5):out.append(f{hy}:{cnt}只)# 炸板次数分布(盘中关注的封了又开信号)zbc_counterCounter(r.get(zbc)or0forrinrows)ifany((cor0)0forcinzbc_counter.keys()):out.append()out.append(【炸板次数分布】(炸板 0 的是「封了又开」的高分歧票,持续观察))forn,cntinsorted(zbc_counter.items()):ifn:out.append(f 炸板{n}次:{cnt}只)out.append(f 未炸板(zbc0):{zbc_counter.get(0,0)}只)return\n.join(out)defmain():licload_licence()print(f[info] licence present: True (value hidden, len{len(lic)}))print(f[info] target_date{TARGET_DATE}current{datetime.now().strftime(%Y-%m-%d %H:%M:%S)})withClient(licencelic)asapi:rowsfetch_limit_up(api,TARGET_DATE)print(render(rows))print()print(render_stats(rows))return0if__name____main__:sys.exit(main())真实运行输出截取 2026-08-03 09:54 实盘【涨停池快照】日期 2026-08-03 共 33 只 排名 代码 名称 连板 首次封板 净流入(万) 涨跌幅% 行业 1 003032 传智教育 6 09:25:00 22970.90 ▲ 9.99% 教育 2 002827 高争民爆 4 09:30:24 17144.51 ▲ 10.00% 化学制品 3 000820 神雾节能 3 09:34:24 1459.57 ▲ 9.94% 环保设备 4 002354 天娱数科 2 09:25:00 31591.62 ▲ 9.98% 广告营销 5 002896 中大力德 2 09:31:09 25837.19 ▲ 9.99% 通用设备 … 15 601611 中国核建 1 09:44:34 153709.55 ▲ 10.05% 基础建设 16 002366 融发核电 1 09:39:30 69846.14 ▲ 9.93% 其他电源 17 300613 富瀚微 1 09:30:00 64343.95 ▲ 20.01% 半导体 18 300615 欣天科技 1 09:25:00 49642.84 ▲ 20.02% 通信设备 … 33 603798 康普顿 1 09:47:16 3499.75 ▲ 9.99% 炼化及贸 【连板梯队】(同一连板数多少只) 6 连板: 1 只 4 连板: 1 只 3 连板: 1 只 2 连板: 11 只 1 连板: 19 只 【净流入 Top10】 601611 中国核建 净流入 153709.55 万 1 连板 封板 09:44:34 002366 融发核电 净流入 69846.14 万 1 连板 封板 09:39:30 300613 富瀚微 净流入 64343.95 万 1 连板 封板 09:30:00 300615 欣天科技 净流入 49642.84 万 1 连板 封板 09:25:00 002438 江苏神通 净流入 33237.56 万 1 连板 封板 09:39:18 603011 合锻智能 净流入 31785.89 万 1 连板 封板 09:36:07 002354 天娱数科 净流入 31591.62 万 2 连板 封板 09:25:00 001208 华菱线缆 净流入 27514.47 万 1 连板 封板 09:44:18 001331 胜通能源 净流入 27267.17 万 1 连板 封板 09:38:30 002896 中大力德 净流入 25837.19 万 2 连板 封板 09:31:09 【行业分布 Top5】 通用设备: 3 只 计算机设: 3 只 电网设备: 3 只 环保设备: 2 只 IT服务Ⅱ: 2 只 【炸板次数分布】(炸板 0 的是「封了又开」的高分歧票,持续观察) 炸板 1 次: 5 只 炸板 2 次: 3 只 炸板 4 次: 3 只 未炸板(zbc0): 22 只数据来源内部验证环境fastApiEnv 真实 licence 调用/hslt/ztgc/{date}涨停股池接口返回脚本中所有证书出现处都用MAIRUI_LICENCE环境变量或你的麦蕊证书占位。 09:54 这个时点属于早盘集合竞价刚结束 9:30 开盘 25 分钟内的快速成板期“首次封板时间集中在 09:25 / 09:30 ~ 09:45。盘中过 10:30 之后快照会更成色”——成板数量会显著增多、连板梯队也清晰。代码要点拆解排序三轴连板 → 净流入 → 封板时间——第一轴是成色高度板永远是市场关注点第二轴是共识资金净流入越大、追单越多第三轴是先发优势先封板的更强势。换排序轴把keylambda r: -(r.get(lbc) or 0)改成-(r.get(zbc) or 0)就能直接看炸板最多 分歧最大。字段归一化在 normalize 之前没用——mairui SDK 返回的是拼音首字母键dm/mc/lbc/zj/fbt/hy。本脚本不再 normalize直接r.get(dm)取值遇到空值用or 0/or -兜底避免 1 条缺字段把整行丢掉。时间格式转换fbt是 6 位字符串如092500用fmt_time一次转成09:25:00便于人眼排序和阅读。炸板次数是本篇的彩蛋zbc字段值 0 的票是一次封住的稳健票0 的就是封了又开的高分歧——下一篇 #04 炸板预警会深入用这个字段做盘中盯盘。常见坑盘中 09:30 之前查可能拿到空数组集合竞价阶段09:15~09:25池子还没正式生成脚本会走到无涨停股分支。把TARGET_DATE改成历史日、或者等 09:30 后再跑即可。净流入 0 不是数据问题刚开盘的票资金还没充分博弈zj0是正常状态。看净流入要选 09:45 之后的快照才有意义。连板数从早盘 1 板开始累计今天 1 连板的票里可能就有下一交易日连板 2 板的后备军——这正是 #04 炸板预警关注今天炸板、明天修复的延展。行业字段是 2 级简写“通用设备”、“IT服务Ⅱ”想要申万一级等更细分类需要concept_tree()自己再映射#14 会讲。接入盘中实时30 秒接入把main()套进轮询即可形成盘中持续盯盘importtimedefloop():whileTrue:withClient(licenceload_licence())asapi:rowsfetch_limit_up(api,TARGET_DATE)os.system(clsifos.namentelseclear)print(render(rows))print()print(render_stats(rows))time.sleep(60)# 涨停池不需要 3 秒级60 秒足够小结 下篇预告今天 33 只涨停里有 11 只是 2 连板、3 只是炸板 ≥ 2 次的高分歧票——这些**“正在分歧”**的票是下一篇 #04 炸板预警的主战场。我们将把broken_board_pool接口拉回来按封板/开板时间 状态字段做盘中持续盯盘比直接看交易终端多一个分歧排序维度。合规与引导数据/接口演示仅作技术示意不构成投资建议本系列代码仅用于自验与教学请勿用于非法牟利。提示脚本中所有证书出现处都用MAIRUI_LICENCE环境变量或你的麦蕊证书占位任何含真实 UUID 的版本都不应被发布。