本机数据缓存

本机数据缓存(local data cache)是交易软件在磁盘上保存已下载 K 线、逐笔和时段历史的存储区,好让图表不必再去问供应商就能打开、滚动和计算。它是一份对已接收内容的副本,而不是新数据的来源。

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


缓存里装了什么,为什么要装

下载历史是一次真实的往返:活跃合约上一周的一分钟足迹图意味着很多次请求,而供应商对每次请求返回的内容设有上限。把结果留在磁盘上,意味着第二次打开同一个合约不花任何代价,而且在休市或供应商宕机时照样能用。缓存按品种和粒度建索引;某个合约在一个周期上画过图,并不会自动把另一个周期也填满。

  • K 线,连同每个价位上的买卖两侧成交量,这样足迹图和剖面可以直接从磁盘重算。
  • 逐笔数据,用于回放,前提是数据源提供它。
  • 覆盖率元数据:请求过哪些窗口、哪些到达了、哪些返回为空。
  • 除非用过一个会录制深度的数据源,否则没有订单簿历史;成交数据重建不出订单簿。

缓存与覆盖率

缓存让缺口更容易被看见,而不是更容易被藏起来。每一个被请求的窗口要么存在、要么部分存在、要么缺失,而这个状态应当随任何基于它的研究一起流转。供应商在周末返回为空的窗口是一次合理的缺席;同一个窗口在工作日返回为空,就是一个需要重试的缺口。有些工具在某个窗口返回为空之后就不再去要它了 —— 这对周末是正确的默认,对供应商故障之后则是错误的,因此需要手动重新请求一次。

在 Senzoukria 里

设置页面会指向账户页面,那里承载数据源、经纪商和本机缓存。图表在离线打开时,会报告最后一根缓存 K 线的时间和该周期上缓存的 K 线条数,并提供回放某个已缓存时段的入口;周末提示写明:本机缓存里已有的每一个时段都能照常打开、滚动和计算,只有新的历史才需要开市。回测数据面板读取缓存,显示在所请求的窗口中缓存了多少个,并可以下载缺失的历史;最小变动价位未知的品种不会被缓存,在把该跳动点加进品种目录之前,每次加载都会重新下载。逐笔导出会把已缓存的时段写成 gzip 压缩的 CSV,含时间戳、价格、规模和主动方。

常见错误

  • 把最后一根缓存收盘价当成实时价格;欢迎界面上标注的是「最后一根缓存收盘价 —— 非实时」。
  • 以为某个粒度上的缓存时段可以覆盖另一个粒度上的回测。
  • 为了解决一个显示问题而删掉缓存,然后把下载的代价再付一遍。
  • 在只录制了成交的情况下,指望缓存里会有供热力图使用的深度历史。

其他语言版本

常见问题

完全没有连接时能画图吗?
对已经在缓存里的品种可以。图表在缓存 K 线上打开,指标照常计算,已缓存的时段也可以回放。在连上数据源并且市场开市之前,不会有任何新东西到达。一个从未画过的品种没有本机数据,也就无法离线打开。
缓存会把缺失的区间补上吗?
不会。缓存保存已经接收到的内容,并记录下没有接收到的部分。一个缺失的窗口会一直标为缺失,直到一次新的请求成功为止。用零去填洞会污染累计 delta、剖面和回测,因此软件让它们保持可见。

继续阅读