ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/8/9 18:50:02 拓冰建站 浏览量
【Python实时盯盘与预警 #08】成交额突然放大2倍?Python窗口比较抓异动 【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 只自选两轮快照批量 逐只全拉importsysimportosimporttime sys.path.insert(0,os.path.join(os.path.dirname(__file__),..,..,_common))frommairui_helperimportload_licencefrommairuiimportClient WATCHLIST[000001,000002,000063,000333,000651,000858,002142,002230,002415,002594,300059,300750,600036,600276,600519,600585,600900,601012,601318,601398,]INTERVAL60# 两轮快照间隔秒CJE_ALERT_RATIO5.0# 成交额增速超过 5% 标记异动HS_ALERT_DELTA0.1# 换手率增量超过 0.1% 标记异动defmain():licload_licence()mcClient(lic)# 第一轮批量 逐只batch1mc.stock_ssjy_more(,.join(WATCHLIST))detail1{code:mc.stock_ssjy(code)forcodeinWATCHLIST}time.sleep(INTERVAL)# 第二轮批量 逐只batch2mc.stock_ssjy_more(,.join(WATCHLIST))detail2{code:mc.stock_ssjy(code)forcodeinWATCHLIST}# 计算异动results[]forcodeinWATCHLIST:d1detail1[code]d2detail2[code]cje1float(d1[cje])cje2float(d2[cje])hs1float(d1[hs])hs2float(d2[hs])cje_deltacje2-cje1 cje_ratio(cje_delta/cje1*100)ifcje10else0hs_deltahs2-hs1 is_alertcje_ratioCJE_ALERT_RATIOorhs_deltaHS_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(keylambdax:x[cje_ratio],reverseTrue)forrinresults:flag⚡异动ifr[alert]elseprint(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(1len(WATCHLIST))*2print(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% 阈值。这很正常异动不是每分钟都有的如果阈值设得太低会满屏告警反而看不过来。几个关键数据科大讯飞60 秒内成交额增 3115 万换手率从 0.87% → 0.90%量比 2.58活跃中兴通讯量比 3.52最高成交额增速 2.19%换手率 1.28%全榜最高宁德时代成交额绝对增量最大6855 万但增速只有 1.88%基数太大成交额增量 vs 增速绝对增量看谁的钱进来了增速看谁在加速。两者要配合看——宁德的增量最大但增速不高说明是正常推进如果某只票增速 20% 且量比 3那就是异动了。两级过滤省 82% 额度全量版 42 次调用2 批次 40 逐只但大多数股票不会有异动。优化策略第一步批量接口初筛2 次额度 → 用 stock_ssjy_more 拉 20 只只看 cje 增速 → 筛出 Top 5 增速最大的 第二步只对 Top 5 逐只调 stock_ssjy5 次额度 → 取 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注意批量初筛的数值与全量版略有差异——因为批量拉取和逐只拉取之间有几秒的时间差成交额在持续变化。这很正常初筛只需要找到哪些票增速高不需要精确到个位。优化版代码片段defsmart_monitor(mc,watchlist,interval60,top_n5):两级过滤批量初筛 异动深入。# 第一步批量初筛batch1mc.stock_ssjy_more(,.join(watchlist))time.sleep(interval)batch2mc.stock_ssjy_more(,.join(watchlist))# 算增速取 Top Nscreened[]forcodeinwatchlist:cje1float(batch1.get(code,{}).get(cje,0))cje2float(batch2.get(code,{}).get(cje,0))ratio(cje2-cje1)/cje1*100ifcje10else0screened.append((code,ratio))screened.sort(keylambdax:x[1],reverseTrue)# 第二步只对 Top N 逐只深入forcode,ratioinscreened[:top_n]:detailmc.stock_ssjy(code)hsfloat(detail[hs])lbfloat(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.01.51.0保守只报大异动一天可能就几次告警适合中低频盯盘推荐平衡灵敏度与噪音适合日常盘中监控激进信号多但假阳性也多适合高频交易或配合其他指标过滤量比lb是一个很好的辅助指标量比 1 说明当前成交比过去 5 日同时段活跃量比 2 说明明显放量。但量比是全天累计的不能替代窗口比较——两者配合用最好。常见坑批量接口没有hs字段必须用stock_ssjy单股才能拿到换手率。如果只看成交额增量批量接口够了要看换手率必须逐只调成交额只增不减盘中成交额是累计值只会越来越大。所以cje_delta永远是正数除非停牌或收盘清算关注的是增速而非增量本身换手率也是累计值hs是当日累计换手率不是窗口内的换手率。窗口内的换手率变化 hs2 - hs1这个差值才是窗口内的新增换手09:30 前成交额为 0盘前调用cje0算增速会除零。代码里必须判cje1 0停牌股票返回旧数据停牌的票cje不会变化增速为 0%不会误报但也拉不到新数据小结成交额突变和换手率跳升是主力进场的最直接信号。窗口比较法两轮快照算差值能精确捕捉最近 N 分钟内的变化比单看一个时间点的绝对值有意义得多。两级过滤策略是实战中的关键优化批量接口初筛只花 2 次额度就能扫 20 只筛出 Top 5 再逐只深入取换手率和量比——总额度从 42 次压到 7 次省 82%。免费版 500 次/日绰绰有余。下一篇我们做自定义异动雷达——把涨速、成交额、换手率、涨跌幅等多个条件组合起来任意搭配触发告警。相当于把前几篇的单维度监控升级成一个多条件组合雷达。⚠️免责声明本文为技术分享所有计算仅展示 Python 编程方法与 API 使用技巧不构成任何投资建议。股市有风险投资需谨慎。 关注「Python实时盯盘与预警」合集共 16 篇从自选股报价到全市场监控、从免费版到企业证书方案——一站式盘中盯盘不求人。