← 返回博客列表

Python实时盯盘与预警

【Python实时盯盘与预警 #12】盯盘只看个股不够盘中指数快照一屏看全市场温度

2026年10月15日 08:19 · 麦蕊智数 MyData

上一篇我们解决了「告警怎么发到手机」。但还有一个问题:你盯着自选股涨跌,却不知道大盘在干嘛。个股突然跳水,是自身利空还是整个市场都在砸?创业板指狂拉,你的持仓没动,是跑输还是板块没轮动到?

这篇文章用 Python 拉取 8 大宽基指数实时行情,做一个「大盘温度快照」:一眼看清上证、深证、创业板、科创50、沪深300、中证500、上证50、中证1000 谁在领涨、谁在拖后腿。

一、本文你将得到什么

  1. 用麦蕊 index_real_time 接口拉取指数实时行情。
  2. 把 8 大宽基指数汇总成一张 pandas 表格。
  3. 计算「市场温度」:红盘数、平均涨跌幅、最强/最弱指数、异动指数数。
  4. 一个可扩展的指数监控脚本,替换代码就能加更多指数。
  5. 与个股告警结合的进阶思路。

想先在线试试接口效果?打开 API Playground 即可直接调用测试: https://mairuiapi.com/playground

二、环境准备

本文代码使用 mairui SDK 获取指数数据,安装方法如下:

pip install mairui

SDK 的完整接口文档与使用说明请查阅官网:https://www.mairuiapi.com/sdk

指数接口的详细参数说明请查阅官网 API 文档:https://mairuiapi.com/hszsdata

运行环境:

  • Python 3.9+
  • mairui SDK 1.0.0
  • pandas(用于表格展示)

本文数据截至 2026-08-07,读者复现时数据可能因行情更新而略有差异。

证书直接写在代码里(文中使用演示证书,请替换成你自己的正式证书)。

import sys, os

三、指数代码与字段

麦蕊的指数代码格式为 代码.交易所,例如:

指数 代码
上证指数 000001.SH
深证成指 399001.SZ
创业板指 399006.SZ
科创50 000688.SH
沪深300 000300.SH
中证500 000905.SH
上证50 000016.SH
中证1000 000852.SH

先用 index_list 拿到全部指数列表,再用 index_real_time(code='000001.SH') 逐个拉取。注意:index_real_time 每次只返回一个指数的数据,所以我们要循环调用。

返回的核心字段:

  • p:现价
  • pc:涨跌幅(%)
  • zf:振幅(%)
  • ud:涨跌额
  • cje:成交额(元)
  • t:快照时间

四、拉取指数实时行情

from mairui import Client
import pandas as pd
import time

INDEX_CODES = [
    ("000001.SH", "上证指数"),
    ("399001.SZ", "深证成指"),
    ("399006.SZ", "创业板指"),
    ("000688.SH", "科创50"),
    ("000300.SH", "沪深300"),
    ("000905.SH", "中证500"),
    ("000016.SH", "上证50"),
    ("000852.SH", "中证1000"),
]

def fetch_index_snapshot():
    api = Client(licence="<你的证书>")  # 演示证书,请替换成你自己的正式证书
    rows = []
    for code, name in INDEX_CODES:
        r = api.index_real_time(code=code)
        rows.append({
            "代码": code,
            "名称": name,
            "现价": r["p"],
            "涨跌额": r["ud"],
            "涨跌幅%": r["pc"],
            "振幅%": r["zf"],
            "成交额亿": r["cje"] / 1e8,
            "时间": r["t"][-8:],
        })
        time.sleep(0.05)  # 轻微间隔
    return pd.DataFrame(rows)

df = fetch_index_snapshot()
print(df.to_string(index=False))

关键解释:

  • 8 个指数循环调用,约 0.8~1.2 秒完成。
  • cje 是元为单位,除以 1e8 转成「亿」。
  • 时间只取最后 8 位(HH:MM:SS),表格更紧凑。

五、计算市场温度

拉完数据后,计算几个简单但实用的指标:

def market_temperature(df):
    up = (df["涨跌幅%"] > 0).sum()
    down = (df["涨跌幅%"] < 0).sum()
    flat = len(df) - up - down
    avg_pc = df["涨跌幅%"].mean()
    max_idx = df["涨跌幅%"].idxmax()
    min_idx = df["涨跌幅%"].idxmin()
    return {
        "红盘": int(up),
        "绿盘": int(down),
        "平盘": int(flat),
        "平均涨跌幅%": avg_pc,
        "最强指数": df.loc[max_idx, "名称"],
        "最弱指数": df.loc[min_idx, "名称"],
        "最大涨幅%": df.loc[max_idx, "涨跌幅%"],
        "最大跌幅%": df.loc[min_idx, "涨跌幅%"],
    }

temp = market_temperature(df)
print(f"红盘 {temp['红盘']} | 绿盘 {temp['绿盘']} | 平盘 {temp['平盘']}")
print(f"平均涨跌幅: {temp['平均涨跌幅%']:+.2f}%")
print(f"最强: {temp['最强指数']} ({temp['最大涨幅%']:+.2f}%)")
print(f"最弱: {temp['最弱指数']} ({temp['最大跌幅%']:+.2f}%)")

关键解释:

  • 8 个指数如果红盘占多数,说明市场整体偏暖。
  • 平均涨跌幅比单看上证指数更客观,因为weighted 指数会被权重股带偏。
  • 创业板指和科创50通常弹性最大,适合观察风险偏好。

六、异动提醒

设定阈值,当某个指数涨跌幅绝对值超过 1% 时打印提醒:

PC_ALERT = 1.0

abnormal = df[df["涨跌幅%"].abs() >= PC_ALERT]
for _, row in abnormal.iterrows():
    direction = " " if row["涨跌幅%"] > 0 else " "
    print(f"{direction} {row['名称']} 涨跌幅 {row['涨跌幅%']:+.2f}% 振幅 {row['振幅%']:.2f}%")

这个阈值可以根据自己的需求调整:

  • 日内波段:1%
  • 重要关口/突发消息:2%
  • 尾盘/开盘扫描:0.5%

七、完整可运行示例

from __future__ import annotations
import os, sys, time


import pandas as pd
from mairui import Client

INDEX_CODES = [
    ("000001.SH", "上证指数"),
    ("399001.SZ", "深证成指"),
    ("399006.SZ", "创业板指"),
    ("000688.SH", "科创50"),
    ("000300.SH", "沪深300"),
    ("000905.SH", "中证500"),
    ("000016.SH", "上证50"),
    ("000852.SH", "中证1000"),
]

def fetch_index_snapshot():
    api = Client(licence="<你的证书>")  # 演示证书,请替换成你自己的正式证书
    rows = []
    for code, name in INDEX_CODES:
        r = api.index_real_time(code=code)
        rows.append({
            "代码": code, "名称": name,
            "现价": r["p"], "涨跌额": r["ud"],
            "涨跌幅%": r["pc"], "振幅%": r["zf"],
            "成交额亿": r["cje"] / 1e8,
            "时间": r["t"][-8:],
        })
        time.sleep(0.05)
    return pd.DataFrame(rows)

def market_temperature(df):
    valid = df.dropna(subset=["涨跌幅%"])
    up = (valid["涨跌幅%"] > 0).sum()
    down = (valid["涨跌幅%"] < 0).sum()
    flat = len(valid) - up - down
    return {
        "红盘": int(up), "绿盘": int(down), "平盘": int(flat),
        "平均涨跌幅%": valid["涨跌幅%"].mean(),
        "最强指数": valid.loc[valid["涨跌幅%"].idxmax(), "名称"],
        "最弱指数": valid.loc[valid["涨跌幅%"].idxmin(), "名称"],
        "最大涨幅%": valid["涨跌幅%"].max(),
        "最大跌幅%": valid["涨跌幅%"].min(),
    }

if __name__ == "__main__":
    df = fetch_index_snapshot()
    print(df.to_string(index=False))
    temp = market_temperature(df)
    print(f"\n红盘 {temp['红盘']} | 绿盘 {temp['绿盘']} | 平均 {temp['平均涨跌幅%']:+.2f}%")
    print(f"最强 {temp['最强指数']} {temp['最大涨幅%']:+.2f}% | 最弱 {temp['最弱指数']} {temp['最大跌幅%']:+.2f}%")

运行结果示例:

       代码     名称        现价    涨跌额 涨跌幅%  振幅%     成交额亿       时间
000001.SH   上证指数  3,905.71   5.36 0.14 0.59 4,180.59 10:06:36
399001.SZ   深证成指 14,210.90 100.78 0.71 1.21 4,925.40 10:06:33
399006.SZ   创业板指  3,551.99  36.44 1.04 1.31 2,383.82 10:06:33
...

红盘 8 | 绿盘 0 | 平均 +0.58%
最强 创业板指 +1.04% | 最弱 上证指数 +0.14%

八、与个股告警结合

指数快照不是孤立的。建议和你的个股告警脚本配合:

  1. 开盘前 5 分钟:先扫一遍指数,判断今天市场整体氛围。
  2. 个股触发告警时:同步看一眼相关指数。如果创业板指大跌,个股跌可能是系统性风险;如果指数平稳个股跌,才是个股自身问题。
  3. 尾盘 14:50:再扫一遍指数,决定仓位是否过夜。

你可以把指数监控和 #11 的 webhook 推送结合:当涨跌幅绝对值超过 2% 的指数数量 ≥3 个时,自动发消息到手机,提醒你「大盘异动,注意仓位」。

九、常见坑

1. index_real_time 一次只能查一个指数

不能像 stock_ssjy_more 那样传逗号分隔的多个代码。需要循环调用,建议加 50ms 间隔。

2. 指数代码带交易所后缀

上证指数是 000001.SH,深证成指是 399001.SZ,不要漏掉 .SH / .SZ。

3. 成交额单位是元

cje 是元,不转换的话会是几千亿的长数字,除以 1e8 显示成「亿」更直观。

4. 指数没有换手率、量比字段

指数接口返回的是指数自身行情,不是成分股细节。看板块资金需要调用板块/概念接口。

十、小结

本文把 8 大宽基指数实时行情汇总成一屏快照,帮你快速判断市场整体温度:

  1. 用 index_real_time 逐个拉取指数。
  2. 用 pandas 汇总成表格。
  3. 计算红盘数、平均涨跌幅、最强最弱指数。
  4. 加上异动阈值提醒,与个股告警联动。

这个脚本适合挂在开盘、收盘、午休前后跑一下,几秒钟就能知道「今天市场到底怎么样」。


本文为技术演示,不构成投资建议。文中示例数据仅供接口用法参考,不代表实时行情。

延伸阅读:

  • 在线体验更多接口:https://mairuiapi.com/playground
  • 查看完整 API 文档:https://mairuiapi.com/hszsdata
  • SDK 文档与源码:https://www.mairuiapi.com/sdk
标签: Python量化
QQ 客服 3826425416 咨询时请提供证书号或订单号,便于快速处理
咨询