返回列表 发布新帖

QMT实时行情总是空的?盘口、全推、订阅一次讲清楚

16 0
发表于 2 小时前 | 显示全部楼层 阅读模式

QMT 实时行情总是空的?盘口、全推、订阅一次讲清楚

做 QMT 策略时,"拿不到行情"几乎是最常见的报错来源。盘中打印 get_full_tick 得到一对空括号,或者买卖档位缺失,很多人第一反应是函数写错了——其实八成不是函数的问题,而是这几个机制没搞清楚。

这篇把盘口、全推、订阅这三件事讲透,附上最小自检代码。

一、"盘口"到底是什么

先纠正一个高频误区:盘口不是日线 close

盘口是最新的买卖档和最新价。日线 close 在盘中会一直变,它既不是收盘价,也不是买一卖一。很多新手在 handlebar 里读日线 close 当"当前价格"用,结果下单价格离谱,就是这个原因。

三种取数方式别混着用:

需求 函数 注意
最新一笔 / 盘口 get_full_tick 不能回测
推送进来再处理 subscribe_quote 回测无效,非 VIP 有订阅上限
历史 K 线 / 均线 get_market_data_ex 不要拿它当"当前盘口"

二、get_full_tick 返回空的四个原因

盘中打印得到 {} 或缺买卖档,按这个顺序排查:

1. 写在了回测里。 get_full_tick 只给实盘 / 运行模式。回测请改用 get_market_data_ex,或直接读 handlebar 上的 K 线。

2. 全推档位没开。 客户端没开对应档位时,lastPrice 可能还有值,但买卖盘字段经常是缺的。要么先只读 lastPrice,要么找营业部开全推。

3. 代码后缀写错了。 QMT 上交所必须用 .SH,不要写成 PTrade 的 .SS。写错后缀取数直接是空的。

4. 订阅数量超了。subscribe_quote 的,注意非 VIP 有订阅上限,超出的合约后面就没有推送了。

最小自检代码:

#coding:gbk
def init(C):
    C.stock_list = ['600000.SH']

def handlebar(C):
    if not C.is_last_bar():
        return
    print(C.get_full_tick(C.stock_list))

日志在安装目录的 userdata/log 下。如果打印出来还是 {},先看客户端行情本身是否在跳——行情源没数据,脚本再对也没用。

三、正确读取最新价和买一

确认上面的机制都对了,读盘口其实很简单:

#coding:gbk
def init(C):
    C.codes = ['600000.SH']

def handlebar(C):
    if not C.is_last_bar():
        return
    tick = C.get_full_tick(C.codes).get('600000.SH') or {}
    print(tick.get('lastPrice'), tick.get('bidPrice'))

注意 is_last_bar() 这个判断——盘中逐 K 会不断回滚,只在最新一根 K 线上取实时数据才是有意义的。

另外,如果要做已定稿的日线分析,记得把 end_time 截到上一交易日,否则盘中当天的日线还没定稿,数据会一直变。

四、subscribe_quote 的坑

订阅推送适合"数据来了再处理"的场景,但有两个硬约束:

  • 回测里完全不生效。想在回测验证订阅逻辑,必须先改成 handlebar 驱动。
  • 有订阅上限。非 VIP 账号订阅数量超了之后,后面的合约静默没有推送,不会报错,很容易查半天。
ContextInfo.subscribe_quote(stock_code, isSubscribeQuote=True, isBlocking=True)

五、顺便说下代码后缀这个经典事故

PTrade 和 QMT 都是上交所股票,但尾缀不一样

市场 PTrade QMT
上交所 600000.SS(也可写 .XSHG 600000.SH
深交所 000001.SZ 000001.SZ

典型事故就两种:

  • QMT 里写了 600000.SSget_full_tick 空、下单变废单
  • PTrade 里写了 600000.SHget_history / order 找不到标的

深交所两边都是 .SZ,这一项不用改。指数、行业代码在 PTrade 里还有 .XBHS 一类,和股票不是同一套。

六、效率工具

上面这些坑我都逐个踩过。后来整理资料时发现 kimiquant.cn 上有成体系的问题页和 API 查询,直接按报错搜就行,省了很多翻手册的时间。相关页面我列在下面,按需自取:

另外写策略代码的时候,我常用 WorkBuddy 辅助——直接帮我写 QMT 策略、排查报错,比自己翻文档快不少。有兴趣可以试试:workbuddy.ai/invite?code=66L9RNCT

行情这块理顺了,后面写策略才谈得上稳定。希望对踩到同样坑的朋友有帮助。

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表