3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 或 miniQMT 中调用 get_full_tick 获取到严重过期的 tick 数据(例如延迟几分钟),通常是由于未正确订阅实时行情导致的。
get_full_tick 函数的作用是获取本地缓存的最新分笔数据。如果你的策略没有向服务器显式订阅该标的的实时行情,本地缓存的数据就不会更新,从而导致你取到的永远是最后一次缓存的旧数据。
要获取最新的 tick 数据,必须先使用 subscribe_quote 接口订阅该标的的行情。订阅后,QMT 客户端会持续接收服务器推送的最新数据,此时再调用 get_full_tick 就能获取到最新的切片数据了。
#coding:gbk
def init(ContextInfo):
# 目标标的
stock_code = '513500.SH'
# 1. 显式订阅 tick 行情
# 参数:标的代码, 周期, 复权方式, 回调函数(可选)
ContextInfo.sub_id = ContextInfo.subscribe_quote(stock_code, 'tick', 'none', on_quote)
print(f"已订阅行情,订阅号: {ContextInfo.sub_id}")
# 2. (可选) 在回调函数中直接处理推送的最新数据
def on_quote(datas):
# datas 格式为 {code: data}
print("收到实时行情推送:", datas)
def handlebar(ContextInfo):
# 3. 订阅后,也可以在 handlebar 中使用 get_full_tick 获取最新缓存
if ContextInfo.is_last_bar():
tick_data = ContextInfo.get_full_tick(['513500.SH'])
print("当前最新 tick 数据:", tick_data)
subscribe_quote,而是依赖界面主图驱动,请确保 QMT 客户端当前打开的正是 513500.SH 的图表,否则非主图品种的数据不会自动更新。总结:强烈建议在策略 init 中使用 ContextInfo.subscribe_quote 订阅所有需要监控的标的,这是解决 get_full_tick 数据过期的最有效方法。