做交易最忌讳的一件事就是:一不看盘,手里的股票就偷偷闪崩;或者一不留神,自选股拔地而起,彻底错过了追高或止盈的机会。

对于平时要上班、不能一直盯着电脑屏幕的上班族来说,最好的解决办法是让代码替我们“盯盘”。只要自选股价格波动超过我们的阈值,电脑就自动弹窗或者鸣笛报警。

今天,我们就用 Python + QuantDash 写一个支持多市场、极简、高稳定的“实时异动弹窗器”

我们需要用到一个用来发电脑系统通知的 Python 库 plyer,以及 QuantDash 的 Python SDK,该 SDK 提供了稳定的批量实时快照接口[4]。

pip install plyer quantdash

我们的脚本会在后台运行,每隔 15 秒(时间可自定义)向 QuantDash 的实时行情接口请求一次最新的股票价格。一旦当前价格与我们设定的初始基准价格(比如昨日收盘价或你自己的成本价)相比,涨跌幅超过了设定的预警比例(如 2%),或者几分钟内急速拉升,就会调用 plyer 在你电脑右下角弹出一个系统气泡通知。

import time
from plyer import notification
from quantdash import QuantDash

# 1. 初始化 QuantDash 客户端
qd = QuantDash(api_key="你的_QUANTDASH_API_KEY")

# 2. 设定我们要监控的标的及相应的报警阈值 (支持A/港/美股混合监控)
WATCH_LIST = {
    "600519.SH": {"name": "贵州茅台", "threshold_pct": 1.5},
    "00700.HK": {"name": "腾讯控股", "threshold_pct": 2.0},
    "TSLA.US": {"name": "特斯拉", "threshold_pct": 3.0}
}

# 缓存股票的昨日收盘价,用来做日内涨跌幅计算
price_cache = {}

def init_base_prices():
    """获取初始基准价格(昨收价)"""
    print("正在初始化股票基准价格...")
    symbols = list(WATCH_LIST.keys())
    try:
        # 调用 QuantDash 批量实时快照接口
        quotes = qd.stock.get_quotes(symbols=symbols)
        for item in quotes:
            symbol = item.get("symbol")
            prev_close = item.get("prev_close")  # 昨收价
            last_price = item.get("last_price")  # 当前最新价
            
            # 如果昨收价拿不到,就用最新价作为基准
            price_cache[symbol] = prev_close if prev_close else last_price
            print(f"[{symbol}] {WATCH_LIST[symbol]['name']} 初始化成功,昨收基准价: {price_cache[symbol]}")
    except Exception as e:
        print(f"初始化基准价格失败,请检查 API Key 或网络: {e}")

def monitor_loop():
    symbols = list(WATCH_LIST.keys())
    print("\n🚀 实时盯盘系统已启动,正在后台安全运行...")
    
    while True:
        try:
            # 批量拉取实时快照
            quotes = qd.stock.get_quotes(symbols=symbols)
            
            for item in quotes:
                symbol = item.get("symbol")
                last_price = item.get("last_price")
                ext = item.get("ext", {})
                change_pct = ext.get("change_pct", 0.0) # 最新日内涨跌幅 %
                
                name = WATCH_LIST[symbol]["name"]
                limit = WATCH_LIST[symbol]["threshold_pct"]
                
                # 检查最新价格和日内绝对涨跌幅是否超过我们设定的阈值
                if abs(change_pct) >= limit:
                    msg = f"最新价: {last_price} | 今日涨跌幅: {change_pct:.2f}% (设定阀值: {limit}%)"
                    print(f"⚠️ 【异动预警】{name}({symbol}) - {msg}")
                    
                    # 触发本地系统弹窗
                    notification.notify(
                        title=f"📈 股票异动预警: {name}",
                        message=msg,
                        app_name="Python盯盘助手",
                        timeout=5  # 弹窗停留5秒
                    )
                    
            # 15 秒轮询一次
            time.sleep(15)
            
        except KeyboardInterrupt:
            print("\n👋 盯盘系统已退出。")
            break
        except Exception as e:
            print(f"轮询过程中发生异常: {e}")
            time.sleep(10)

if __name__ == "__main__":
    init_base_prices()
    if price_cache:
        monitor_loop()

很多小白刚学 Python,喜欢写 requests 去爬财经网站。如果你只盯着 1 只股票,确实勉强可以。但当你盯着十几只跨越 A 股、港股、美股的组合时,爬虫往往会:

  1. 遇到反爬限制:频繁请求直接被封禁 IP[2]。

  2. 多源维护地狱:美股要去雅虎财经抓,港股要去新浪财经,代码极其繁杂,网页结构稍一改版报警器直接“罢工”[2]。

而通过 QuantDash 提供的 qd.stock.get_quotes 接口,它不仅在一个请求里把所有跨国市场的标的价格、昨收、日内涨跌幅统一配齐,而且响应速度极快、延迟低[5],彻底解决个人开发者重复造“数据轮子”的痛点。

相关链接 :

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐