【Python实时盯盘与预警 #08】成交额突然放大 2 倍?Python 窗口比较抓异动

盘中你最怕错过什么?不是涨停——涨停了大家都知道。最怕的是一只票悄无声息地放量,成交额从 5000 万突然跳到 1.5 亿,换手率从 0.3% 飙到 1.2%——等你看到的时候已经涨了 6%。

这种"成交额突变"往往是主力进场的信号。但行情软件不会弹窗告诉你"这只票成交额刚刚放大了 200%"——你得自己算。

这篇教你用 Python 做窗口比较:两个时间点各拉一轮数据,算成交额增量和换手率变化,超过阈值就报警。还会教你两级过滤策略——批量接口初筛 + 单股接口深入,把额度从 42 次压到 7 次。


本文你将得到什么

  • 一个异动监控脚本:20 只自选股,60 秒窗口比较成交额和换手率
  • 两级过滤策略:批量接口初筛(省额度)→ 异动股逐只深入(取换手率/量比)
  • 成交额增速、换手率增量的计算公式与阈值设定建议
  • 批量接口与单股接口的字段差异在实战中的处理方法

为什么要做窗口比较

单看一个时间点的数据,你不知道"此刻"跟"刚才"比变了多少。比如:

  • 现在成交额 3.7 亿——大不大? 不知道。如果 5 分钟前是 3.6 亿,那就是正常推进;如果 5 分钟前是 1.8 亿,那就是突然翻倍了。
  • 现在换手率 0.9%——高不高? 不知道。如果 5 分钟前是 0.3%,那就是3 倍跳升。

窗口比较 = 拉两轮数据,算差值。 差值才是异动信号。


两个接口,两种用法

系列 #06 讲过批量接口 stock_ssjy_more 省额度。但批量接口有一个关键短板:没有换手率(hs)和量比(lb)字段。

字段 批量 stock_ssjy_more 单股 stock_ssjy
现价 p / 涨跌幅 zf / 成交额 cje ✅ ✅
换手率 hs ❌ ✅
量比 lb ❌ ✅
总市值 sz / 流通市值 lt ❌ ✅
额度消耗 1 次 / 20 只 1 次 / 只

策略:批量接口做初筛(只看成交额增量),对有异动的股票再用单股接口取 hs/lb 深入分析。这就是"两级过滤"。


代码:异动监控(全量版)

先看完整版——20 只自选,两轮快照,批量 + 逐只全拉:

import sys
import os
import time

from mairui import Client

WATCHLIST = [
"000001", "000002", "000063", "000333", "000651",
"000858", "002142", "002230", "002415", "002594",
"300059", "300750", "600036", "600276", "600519",
"600585", "600900", "601012", "601318", "601398",
]
INTERVAL = 60 # 两轮快照间隔(秒)
CJE_ALERT_RATIO = 5.0 # 成交额增速超过 5% 标记异动
HS_ALERT_DELTA = 0.1 # 换手率增量超过 0.1% 标记异动

def main():
lic = "LICENCE-66D8-9F96-0C7F0FBCD073" # 演示证书,演示证书(读者复制即用,无需替换)
mc = Client(lic)

第一轮:批量 + 逐只

batch1 = mc.stock_ssjy_more(",".join(WATCHLIST))
detail1 = {code: mc.stock_ssjy(code) for code in WATCHLIST}

time.sleep(INTERVAL)

第二轮:批量 + 逐只

batch2 = mc.stock_ssjy_more(",".join(WATCHLIST))
detail2 = {code: mc.stock_ssjy(code) for code in WATCHLIST}

计算异动

results = []
for code in WATCHLIST:
d1 = detail1[code]
d2 = detail2[code]
cje1 = float(d1["cje"])
cje2 = float(d2["cje"])
hs1 = float(d1["hs"])
hs2 = float(d2["hs"])

cje_delta = cje2 - cje1
cje_ratio = (cje_delta / cje1 * 100) if cje1 > 0 else 0
hs_delta = hs2 - hs1
is_alert = cje_ratio > CJE_ALERT_RATIO or hs_delta > HS_ALERT_DELTA

results.append({
"code": code,
"p": float(d2["p"]),
"zf": float(d2["zf"]),
"cje_delta": cje_delta,
"cje_ratio": cje_ratio,
"hs1": hs1, "hs2": hs2, "hs_delta": hs_delta,
"lb": float(d2.get("lb", 0)),
"alert": is_alert,
})

results.sort(key=lambda x: x["cje_ratio"], reverse=True)

for r in results:
flag = "⚡异动" if r["alert"] else ""
print(f"{r['code']} | 成交额增量 {r['cje_delta']/10000:+.0f}万 "
f"({r['cje_ratio']:+.2f}%) | 换手率 {r['hs1']:.2f}→{r['hs2']:.2f} "
f"({r['hs_delta']:+.2f}%) | 量比 {r['lb']:.2f} | {flag}")

api_calls = (1 + len(WATCHLIST)) * 2
print(f"\nAPI 调用 {api_calls} 次 | 日额度 {api_calls}/500")

if name == "main":
main()


实测结果(2026-08-05 09:57,真实运行)

===========================================================================
资金流向异动监控(60秒窗口)
===========================================================================
代码 名称 现价 涨跌幅% 成交额T1(万) 成交额T2(万) 增量(万) 增速% 换手T1 换手T2 换手增 量比 异动
002230 科大讯飞 44.28 +2.83 83769 86884 +3115 +3.72 0.87 0.90 +0.03 2.58
300059 东方财富 20.18 +1.00 118436 122249 +3813 +3.22 0.44 0.46 +0.02 1.73
600585 海螺水泥 17.54 +1.63 20943 21462 +519 +2.48 0.30 0.31 +0.01 2.45
000063 中兴通讯 34.81 +2.94 178696 182602 +3906 +2.19 1.28 1.31 +0.03 3.52
000001 平安银行 11.30 +1.84 41699 42534 +835 +2.00 0.19 0.19 +0.00 1.69
300750 宁德时代 401.15 +1.45 364559 371413 +6855 +1.88 0.21 0.22 +0.01 2.07
...

异动汇总:0/20 只触发告警
无异动触发(窗口内成交额增速和换手率增量均在阈值内)

API 调用 42 次 | 日额度 42/500 (8.4%)

这次没有触发告警——60 秒窗口内成交额增速最高 +3.72%(科大讯飞),没到 5% 阈值。这很正常:异动不是每分钟都有的,如果阈值设得太低,会满屏告警反而看不过来。

几个关键数据:

  1. 科大讯飞:60 秒内成交额增 3115 万,换手率从 0.87% → 0.90%,量比 2.58(活跃)
  2. 中兴通讯:量比 3.52(最高),成交额增速 +2.19%,换手率 1.28%(全榜最高)
  3. 宁德时代:成交额绝对增量最大(+6855 万),但增速只有 +1.88%(基数太大)

成交额增量 vs 增速:绝对增量看"谁的钱进来了",增速看"谁在加速"。两者要配合看——宁德的增量最大但增速不高,说明是正常推进;如果某只票增速 20% 且量比 >3,那就是异动了。


两级过滤:省 82% 额度

全量版 42 次调用(2 批次 + 40 逐只),但大多数股票不会有异动。优化策略:

第一步:批量接口初筛(2 次额度)
→ 用 stock_ssjy_more 拉 20 只,只看 cje 增速
→ 筛出 Top 5 增速最大的

第二步:只对 Top 5 逐只调 stock_ssjy(5 次额度)
→ 取 hs(换手率)、lb(量比)深入分析
→ 判断是否真异动

总计:2 + 5 = 7 次 → 比全量 42 次省 82%

实测初筛 Top 5(只用批量接口):

代码 名称 成交额T1(万) 成交额T2(万) 增量(万) 增速%
600585 海螺水泥 20970 21951 +981 +4.68
300059 东方财富 119316 123879 +4563 +3.82
000001 平安银行 41709 43107 +1398 +3.35
002230 科大讯飞 85731 88404 +2673 +3.12
300750 宁德时代 367920 378703 +10783 +2.93

注意:批量初筛的数值与全量版略有差异——因为批量拉取和逐只拉取之间有几秒的时间差,成交额在持续变化。这很正常,初筛只需要找到"哪些票增速高",不需要精确到个位。

优化版代码片段:

def smart_monitor(mc, watchlist, interval=60, top_n=5):
"""两级过滤:批量初筛 + 异动深入。"""
# 第一步:批量初筛
batch1 = mc.stock_ssjy_more(",".join(watchlist))
time.sleep(interval)
batch2 = mc.stock_ssjy_more(",".join(watchlist))

算增速,取 Top N

screened = []
for code in watchlist:
cje1 = float(batch1.get(code, {}).get("cje", 0))
cje2 = float(batch2.get(code, {}).get("cje", 0))
ratio = (cje2 - cje1) / cje1 * 100 if cje1 > 0 else 0
screened.append((code, ratio))
screened.sort(key=lambda x: x[1], reverse=True)

第二步:只对 Top N 逐只深入

for code, ratio in screened[:top_n]:
detail = mc.stock_ssjy(code)
hs = float(detail["hs"])
lb = float(detail["lb"])
print(f"{code} | 增速 {ratio:+.2f}% | 换手 {hs:.2f}% | 量比 {lb:.2f}")

总额度:2(批量)+ top_n(逐只)= 2 + 5 = 7 次


阈值怎么设

指标 保守 推荐 激进
成交额增速 >10% >5% >3%
换手率增量 >0.2% >0.1% >0.05%
量比(辅助) >2.0 >1.5 >1.0

  • 保守:只报大异动,一天可能就几次告警,适合中低频盯盘
  • 推荐:平衡灵敏度与噪音,适合日常盘中监控
  • 激进:信号多但假阳性也多,适合高频交易或配合其他指标过滤

量比 lb 是一个很好的辅助指标:量比 >1 说明当前成交比过去 5 日同时段活跃,量比 >2 说明明显放量。但量比是全天累计的,不能替代窗口比较——两者配合用最好。


常见坑

  1. 批量接口没有 hs 字段:必须用 stock_ssjy(单股)才能拿到换手率。如果只看成交额增量,批量接口够了;要看换手率必须逐只调
  2. 成交额只增不减:盘中成交额是累计值,只会越来越大。所以 cje_delta 永远是正数(除非停牌或收盘清算),关注的是增速而非增量本身
  3. 换手率也是累计值:hs 是当日累计换手率,不是窗口内的换手率。窗口内的换手率变化 = hs2 - hs1,这个差值才是窗口内的新增换手
  4. 09:30 前成交额为 0:盘前调用 cje=0,算增速会除零。代码里必须判 cje1 > 0
  5. 停牌股票返回旧数据:停牌的票 cje 不会变化,增速为 0%,不会误报,但也拉不到新数据

小结

成交额突变和换手率跳升是主力进场的最直接信号。窗口比较法(两轮快照算差值)能精确捕捉"最近 N 分钟内"的变化,比单看一个时间点的绝对值有意义得多。

两级过滤策略是实战中的关键优化:批量接口初筛只花 2 次额度就能扫 20 只,筛出 Top 5 再逐只深入取换手率和量比——总额度从 42 次压到 7 次,省 82%。免费版 500 次/日绰绰有余。

下一篇我们做自定义异动雷达——把涨速、成交额、换手率、涨跌幅等多个条件组合起来,任意搭配触发告警。相当于把前几篇的单维度监控升级成一个多条件组合雷达。


本文所用行情数据来自行情数据 API(mairuiapi.com)。文中代码均已本地验证并可复现。证书免费领取地址: https://www.mairuiapi.com

⚠️ 免责声明:本文为技术分享,所有计算仅展示 Python 编程方法与 API 使用技巧,不构成任何投资建议。股市有风险,投资需谨慎。

关注「Python实时盯盘与预警」合集(共 16 篇),从自选股报价到全市场监控、从免费版到企业证书方案——一站式盘中盯盘不求人。

posted @ 2026-08-09 16:25  量化分析码农  阅读(18)  评论(0)    收藏  举报