3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
这不是行情源的问题,而是因为没有提前订阅行情数据。
在 QMT/xtquant 的设计机制中,xtdata.get_full_tick() 函数是直接从本地内存/缓存中读取最新的 tick 数据,它本身不会向服务器发送获取数据的网络请求。
如果你没有在代码中主动订阅该股票的行情,且 miniqmt 客户端界面也没有正好停留在该股票的 K 线图上(客户端会自动订阅当前浏览的股票),本地缓存中就没有数据,因此会返回空字典 {}。
在调用 get_full_tick 之前,必须先使用 xtdata.subscribe_quote 订阅对应股票的 tick 周期数据。订阅后,后台会持续接收服务器推送的数据并更新到本地缓存中,此时再调用 get_full_tick 就能拿到数据了。
from xtquant import xtdata
import time
stock_code = '000001.SZ'
# 1. 订阅 tick 行情数据
# 参数:股票代码, 周期, 起始时间, 结束时间, 数量, 回调函数
seq = xtdata.subscribe_quote(stock_code, period='tick', start_time='', end_time='', count=0, callback=None)
# 等待一小段时间,让后台接收到第一笔推送数据
time.sleep(1)
# 2. 获取本地缓存中的最新 tick 数据
data = xtdata.get_full_tick([stock_code])
print("获取到的 tick 数据:", data)
# 3. 如果不再需要,可以取消订阅以节省资源
# xtdata.unsubscribe_quote(seq)
如果你需要实时处理每一个 tick,建议直接在 subscribe_quote 中传入回调函数,而不是用 get_full_tick 去轮询:
from xtquant import xtdata
def on_data(data):
print("收到实时行情推送:", data)
# 订阅并绑定回调函数
seq = xtdata.subscribe_quote('000001.SZ', period='tick', callback=on_data)
# 保持主线程运行
xtdata.run()
get_full_tick 只读本地缓存,不发网络请求。subscribe_quote 订阅,本地才会有数据。xtdata.download_history_data 进行下载,然后再使用 xtdata.get_market_data 读取。