QMT订阅行情为什么漏数据?推送模式的坑
发布时间:2小时前阅读:8
写策略时发现行情数据时不时会缺几根K线,或者盘口快照有断档,很多新手以为是网络问题,其实多数是行情订阅模式没搞对。QMT的行情获取有几种模式,各有适用场景,弄清楚推送机制的原理,漏数据的问题就好解决了。
1、全推与订阅是两种逻辑。全推模式下行情服务把全市场数据持续推送过来,客户端缓存,策略随时取用,适合需要扫描全市场做多品种筛选的策略;订阅模式只推送你明确订阅的品种,省资源,但如果你在策略运行中途才订阅,之前的数据就取不到,看起来就是漏数据。
2、订阅的时机很关键。很多策略在盘中途启动,启动时只订阅了当时点之后的数据,历史片段要单独补充下载。正确做法是策略初始化时先补齐最近一段历史K线,再订阅实时增量,两段拼接完整序列。跳过补数据这一步,指标计算的前置窗口就是空的,均线、MACD这类指标前几十根全是无效值。
3、断线重连后的缺口。网络波动导致连接短暂中断,中断期间的推送就丢了,重连后不会自动补。策略要有缺口检测逻辑,比对最后一根K线的时间戳,发现断档就调用历史数据接口补齐,这个处理写进框架里一劳永逸。
4、限流与资源占用。同时订阅几百上千个品种的tick数据,数据量很大,本地处理不过来会造成堆积丢包。控制订阅数量、提高处理效率、或者改用分钟级聚合数据,都是缓解办法。
排查思路:先确认订阅时机和补数逻辑,再看是否断线缺口,最后才怀疑限流。把行情数据的来龙去脉搞清楚,策略的数据基础才算牢靠。
还有一点经验值得分享:给策略加一个数据完整性自检模块,每天开盘前自动核对昨日K线是否有缺口、指标序列是否有无效值,发现问题先修复再开盘。数据问题提前暴露在盘前,就不会演变成盘中的错误决策,这个自检习惯的成本很低,收益却很实在。
股票开户欢迎找我!可以申请万0.854的股票佣金、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
