历史加载界面与启动恢复
打开 Senzoukria 图表时,会有一层加载遮罩把历史下载显示成不断生长的蜡烛剪影,并附带百分比、K线数量和预计剩余时间;当某路行情声称订阅成功却什么都不发时,启动恢复模块会自动重新订阅。
Senzoukria · 文档 · 更新于 2026 年 9 月
位置
- 位置
- 历史加载期间覆盖在图表上的遮罩;⚙ → 交易设置 中的「重新加载历史」
- 阶段
- idle → cache → ensure → live
- 历史窗口预设
- 默认 24 小时(今日),另有 3 天、7 天
- 启动恢复
- 静默 8 秒后重新订阅,最多 3 次;订阅重试间隔为 1.5 秒、4 秒、9 秒
它做什么
遮罩就落在图表本身上,也就是注意力所在的地方,而不是工具栏里闪烁的一个小点。它的蜡烛条是一段确定性的剪影,不是价格:没有坐标轴、没有数字,尚未加载的部分也不绘制。随着数据到达,一条前沿线向右推进。头部写着「正在加载 1m 历史」,右侧是数据源,例如 Rithmic tick 重放。底部显示百分比、预计剩余时间、已加载K线数量(或正在等待第一根K线),以及一句说明为什么需要时间。
预计时间由观测到的速度算出:在完成至少 2% 且已过 1.5 秒后出现,每秒刷新一次,并封顶在六小时。在加密货币和 Databento 界面上,计数以「共 3 步」的方式显示,还有一个「显示可用数据(历史数据可能不完整)」按钮,让你在下载完成前就能打开图表。
流程
| 阶段 | 运行的内容 | 你看到什么 |
|---|---|---|
| cache | 逐页读取本地 SQLite 缓存(每页 1,000 行,最多 64 页)。1 分钟粒度是枢轴;其他周期由它聚合而来,日K来自单独的 TimeBar 分支。 | 如果该合约此前加载过,K线会立刻出现。 |
| ensure | 历史窗口内覆盖缺口会以 tick 重放的方式向券商请求。同一次运行内进度绝不会倒退。 | 百分比、已加载K线数和 ETA 向前推进;图表可作为预览使用。 |
| live | 进度条到 100%;实时行情让最后一根K线继续跳动。 | 遮罩消失;工具栏中可能仍留有一条提示。 |
设置与常量
| 项目 | 取值 | 作用 |
|---|---|---|
| 历史窗口 | 默认 24 小时(今日);另有 3 天和 7 天预设 | 窗口起点是图表时区下第一天的午夜。日K始终至少请求 360 小时。 |
| 繁忙重试 | 3 秒后重试一次 | 当另一次加载已占用该合约时触发。提示会立刻出现,如果重试时依然繁忙,措辞会改变。 |
| 停滞监视 | 120 秒 | ensure 期间两分钟没有任何进度事件,进度条会以缓存和实时数据已有的内容收尾,并发布一条提示。 |
| 重新加载历史 | ⚙ → 交易设置 → 重新加载历史 | 重新打开那些被券商抽干到零个 tick 的窗口。不清除任何东西;缓存和实时行情继续。 |
| 缓存探测回溯 | 400 天 | 向磁盘回溯多久来寻找最新的已缓存K线,并列出本地有数据的合约。 |
启动恢复
一次订阅可能被告知成功,却什么都不发,例如自动登录时网关尚未就绪。恢复模块会以 1.5 秒、4 秒和 9 秒的有界延迟重试订阅;一旦订阅被接受,它会等待 8 秒等第一条 tick、K线或深度消息。如果什么都没到,它就重新订阅,最多三次。只要打印过哪怕一条消息的清淡市场就绝不会被打扰:恢复只处理「生而不动」这种情况。重新订阅是安全的,因为 Rust 侧会跳过已覆盖的订阅位,不会产生重复注册错误。
限制与陷阱
加载器不做的事:
- 它绝不清空缓存,也绝不使用浏览器存储;请求什么由 SQLite 的覆盖情况决定。
- 返回为空的窗口不会自动再请求一次。在周末这是对的,在券商只是繁忙时这是错的;「重新加载历史」是唯一的手动补救。
- 每次运行内进度是单调的:执行一次「重新加载历史」之后,进度条会从头开始。
- 剪影蜡烛不是数据。不要从加载界面上读取价位。
相关页面
其他语言版本
常见问题
- 百分比有一阵子没动了,是卡住了吗?
- 大段空窗口是跳跃式推进的,而 ETA 每秒都会按观测到的速度刷新。120 秒内没有任何进度事件之后,监视器会收掉进度条并发布一条提示;图表仍可用缓存和实时数据继续使用。
- 为什么下载还没完成,图表上就已经有K线了?
- cache 阶段会先发布磁盘上已有的内容,而在 ensure 阶段,推导出来的视图是一个随数据块到达而更新的预览。遮罩会告诉你历史仍在补全中。
- 图表启动不了时还需要按 F5 吗?
- 当一次订阅 8 秒内什么都不发时,启动恢复模块会自行重新订阅,最多三次。如果它放弃了,错误横幅会留在那里,主动权交回给你。