数据缺口(历史不完整)

数据缺口(data gap)是指图表在某个时间区间上既没有成交、也没有深度更新或 K 线,哪怕那段时间市场可能是开着的。缺口不等于行情平淡,绝不能画成零成交量;诚实的做法是把那个洞明确标出来。

Senzoukria · 术语表 · 更新于 2026 年 9 月


缺口从哪里来

从交易所到屏幕之间的每一个环节都会产生缺口。供应商可能对每次请求返回的逐笔条数设上限,于是活跃合约的历史只能回溯几个小时。历史 plant 可能宕机,而实时数据照常流动。连接可能断开再重连,中间的成交就此错过。本机缓存可能存了这一个时段,却没有下一个。以上没有任何一种情况意味着当时没有成交。

  • 供应商限制:一次请求只返回部分窗口,或者干脆返回一个权限类的拒绝码。
  • 连通性:时段中途掉线,而重新订阅并不会回补中间的数据。
  • 桥接:宿主平台抓取历史的时刻,是它的指标启动那一刻,而不是第二个应用接入那一刻。
  • 市场休市不是缺口:周末或每日暂停属于预期中的空白,应当如实标注为休市。

为什么零和缺失必须分开

如果软件用零去填洞,一根 delta 为零的 K 线和一根没有数据的 K 线看上去一模一样,而下游的每一个指标都会继承这个错误。累计 delta 会像什么都没发生一样穿过这个洞;成交量剖面会显示出一个从未存在过的低量节点;回测会在一段根本没被观测到的行情上评估某条规则。把该区间标为缺失,能让这些计算保持诚实,也让你自己决定这份研究还能不能用。

在 Senzoukria 里

这是产品的一条不变量:洞绝不会被悄悄填上。图表工作区会带一个写明数据源名称的「历史不完整」徽标,而「显示已有数据(历史可能不完整)」这个选项把这个选择摆到明处。历史提示会区分不同情形:CME Globex 已休市(没有新东西可下载)、经纪商拒绝并附上它的 rp_code、请求完成但没有任何状态码,或者加载卡住。无论哪一种,图表都继续用缓存和实时数据运行,而不是凭空造出 K 线。

回测数据面板会以「已请求 N 个窗口中缓存了多少个」的形式报告覆盖率,并可以下载缺失的历史;部分完成的结果会说明有多少个窗口没有完成,同时保留已经到达的部分。内置的累计 delta 说明写明:一个只加载了一部分的时段,并不能证明自开盘以来的覆盖是完整的。

在回测里如何对待缺口

  • 把覆盖率报告和结果一起保存;缺失的区间本身就是证据的一部分。
  • 如果缺口与规则的决策时点重叠,就把这些时段剔除,而不是去做插值。
  • 在确认两个平台收到了相同的事件之前,不要比较它们的 delta 总量。
  • 在市场开盘时再去补历史;周末发出的请求按设计本来就什么都不会返回。

其他语言版本

常见问题

能用 OHLC K 线把数据缺口补回来吗?
对订单流用途来说不能。K 线既不含足迹图所需要的、按买卖两侧拆分的成交量,也不含热力图所需要的订单簿更新。一根 K 线可以把价格轴填满,但那段区间的 delta 和剖面仍然是未知的,应当继续标成未知。
空的历史和数据缺口是一回事吗?
空的历史是缺口的一种。它可能意味着供应商的归档回溯不到那么早、历史 plant 宕机,或者请求被拒绝。空历史不能证明当时没有成交;在动指标之前,先把请求区间和错误码留存下来。

继续阅读