带你详细了解miniQMT的xtdata模块 (第六篇)——实时行情订阅详解 (短线策略看这里!)

QUANT 2025-12-22 17:17:20 14 举报

经过前几篇的学习,我们已经掌握了获取历史K线和财务数据的能力,这为我们进行“静态”的盘后分析打下了坚实的基础

然而,真正的交易是实时动态变化的,要想让我们的程序能够实时响应市场变化,我们就必须学会订阅实时行情


核心理念:从“拉取”到“推送”
首先,我们要理解一个核心概念的转变

之前我们使用的 get_market_data 或 get_financial_data 都属于 “拉取”数据模式

而实时行情订阅,则是一种 “推送”数据模式,我们是被动接收方

在xtdata中,这个模式的具体流程是:
1 订阅:我们告诉服务器:“我对这只股票的实时价格很感兴趣,收到了请随时通知我”
2 设置回调函数:专门用来接收通知
3 等待接收:程序进入等待状态,一旦有新的价格数据,就会立刻把新数据传给我们

实时订阅的核心指令:subscribe_quote
subscribe_quote 就是我们用来订阅单只股票实时行情的指令。它的用法和之前的指令有很大不同

返回值:返回一个 订阅号(subscription_id)

实战演练:监控“平安银行”的最新价格、成交量等信息

第一步:定义我们的“信箱”——回调函数
这个函数必须能接收一个参数(我们通常命名为 datas),xtdata会把最新的数据打包成一个字典放进这个参数

# 定义回调函数
def on_quote(datas):
    """这是一个回调函数,每当有新数据推送过来时,xtdata就会自动调用它"""
    # datas 是一个字典,key是股票代码,value是具体的行情数据
    for stock_code, data in datas.items():
        print(f"\n股票代码: {stock_code}")
        print(f"最新价: {data['lastPrice'][-1]}")
        print(f"开盘价: {data['open'][-1]}")
        print(f"最高价: {data['high'][-1]}")
        print(f"最低价: {data['low'][-1]}")
        print(f"成交量: {data['volume'][-1]}")
        print(f"时间: {data['time'][-1]}")


第二步:订阅行情,并启动“接收模式”
现在我们来调用 subscribe_quote,并让程序进入等待接收的状态

from xtquant import xtdata
import time

def on_quote(datas):
    """
    行情回调函数
    """
    for stock_code, data in datas.items():
        print(f"{stock_code} 最新行情: {data}")

# 订阅行情数据
stock_code = "000001.SZ"
period = "tick"  # 订阅tick级别数据

print(f"开始订阅 {stock_code} 的 {period} 行情...")

# 正确的订阅方式 - 直接传入股票代码,不使用 stock_list 参数
sub_id = xtdata.subscribe_quote(stock_code, period=period, callback=on_quote)

if sub_id > 0:
    print(f"订阅成功!订阅号: {sub_id}")
else:
    print(f"订阅失败!错误码: {sub_id}")

# 进入接收模式
print("\\n进入实时行情接收模式,按 Ctrl+C 退出")
try:
    xtdata.run()
except KeyboardInterrupt:
    # 当我们按下 Ctrl+C 时,程序会从 xtdata.run() 退出
    print("\n程序退出,正在取消订阅...")
    xtdata.unsubscribe_quote(sub_id)  # 使用订阅号取消订阅
    time.sleep(1)  # 等待1秒确保取消成功
    print("订阅已取消。")

现在,运行这段代码,只要在交易时间,我们就会看到平安银行tick级别的的最新行情!快去试试吧!!!!


日志如下:

总结
今天我们学习了xtdata中一个非常强大的功能——实时行情订阅

我们理解了“推送”模式,掌握了 subscribe_quote、xtdata.run() 和 unsubscribe_quote的用法

这个功能是我们构建实时行情策略、监控股价变动的重要工具之一


QMT/miniQMT免费申请

QMT免费领取学习案例

QMT落地辅助策略代写服务

需要的朋友欢迎联系 ~~~


尊重知识,尊重市场 1

著作权归文章作者所有。

最新回复 ( 0 )
发新帖
0
DEPRECATED: addslashes(): Passing null to parameter #1 ($string) of type string is deprecated (/data/user/htdocs/xiunophp/xiunophp.min.php:48)