回放播放控制:播放、跳转、倍速与结束

时段加载完成后,播放控制行位于回放图表上方。它可以播放或暂停 tick 数据流、跳转到时段中的任意一分钟、把播放速度从 x1 调到 x25,以及结束时段并打开报告。

Senzoukria · 文档 · 更新于 2026 年 9 月


位置

位置
回放 → 加载时段 → 图表顶部的那一行(Sz 菜单 → 回放)
默认速度
x1(实时);可选 x1、x2、x5、x10、x25
快捷键
空格 = 播放/暂停,左/右方向键 = 跳转时段的 1 %;在输入框中打字时忽略
跳转精度
目标会被吸附到所在分钟的起点

它做什么

准备界面加载一个 CME 时段后(数百万笔 tick,首次加载 30 到 60 秒),回放路由会显示与实盘相同的足迹图,上方带一行播放控制。这一行包含七个控件:播放/暂停按钮、模拟时钟、跳转滑块、时段结束时刻、倍速按钮组、结束按钮和 tick 计数器。该行高 32 px,位于图表上方而不是浮在图表之上。

tick 由 Rust 播放器成批推送,并在前端聚合成 1 分钟足迹柱。每一批到达时画布都会立即重绘;React 状态(指标、计数器)每秒最多提交 4 次,与实盘数据流的上限相同。1m 到 1h 的周期都由这些分钟柱派生。大单气泡接收的是原始 tick,因此它们在回放中的表现与实盘完全一致。

回放没有订单簿:经纪商的逐笔历史只包含成交(价格、数量、主动方),从不包含盘口深度。因此在这条路由上,DOM 分布叠加层被强制关闭,而不是显示一个靠猜测重建的订单簿。

控件

回放路由中呈现的七个播放控件
控件默认值它做什么
播放 / 暂停(▶ / ❚❚)加载后为暂停(阶段 'ready')启动或暂停 tick 数据流。时段加载完成前不可用。
模拟时间时段的第一笔 tick当前播放 tick 的时刻,以你机器的本地时间按 HH:MM:SS(24 小时制)显示。
跳转0 %从时段的 0 到 100 %、步长 0.1 % 的滑块。拖动过程中不产生任何效果;松开指针或按键时才发送跳转。
时段结束最后一笔 tick 的时刻所加载交易日最后一笔 tick 的时刻。
播放速度x1x1、x2、x5、x10 或 x25。播放中更改立即生效;暂停时更改会在下次播放时生效。
结束暂停播放并打开时段报告。什么都不会被删除:关闭报告后可以继续交易。
tick 计数器'加载中…'所加载交易日的 tick 总数;时段完整播放完后显示 '· 结束'。

跳转如何工作

跳转目标会被吸附到所在分钟的起点。从该分钟起的柱体会从本地聚合中丢弃,Rust 播放器精确从那里重启,而光标之前的每一分钟都通过一次后端调用(replay_bars_until)即时重建。因此向前跳转不会留下空洞:被跳过的分钟是被重建的,而不是被推送的。在被回放日之前加载的上下文时段会在每次跳转时重新播种,因此此前的分布永远不会消失。

每条数据流都带有一个 id。来自过期数据流的批次(跳转尚未落定之前的批次)会被丢弃,从而避免把某一分钟重复计入。如果跳转失败,不会丢弃任何数据,错误会显示在准备界面的横幅中。

键盘:空格切换播放/暂停,方向键按时段的 1 % 移动光标。按键重复被有意忽略:每次跳转都会在 Rust 端重建当天数据,因此一次按键等于一次移动。当输入框、文本域或下拉框获得焦点时,以及按住 Ctrl、Alt 或 Meta 时,快捷键静默失效。

局限与陷阱

  • 回放 tick 的时间戳精确到整秒:数百笔 tick 共用同一个时间戳,这正是跳转按整分钟进行的原因。
  • 如果后端在 90 秒内没有报告任何加载进度,加载会被放弃并给出明确消息(通常是开发服务器重新加载所致)。
  • 只有在时段期间至少平掉过一笔模拟交易时,结束时段才会把其统计数据记入性能面板;没有交易的时段不会被记录。
  • 离开该路由会停止后端播放器并释放内存中的 tick;播放状态不会被持久化。

其他语言版本

常见问题

为什么在 x25 下图表很流畅,指标却更新得没那么频繁?
画布在每一批 tick 到达时重绘,处于 React 之外。指标和计数器读取的是每秒最多提交四次的 React 快照,与实盘数据流的上限相同。
我能跳到精确的某一秒吗?
不能。目标会被吸附到所在分钟的起点,因为播放器按整分钟重新推送,聚合也是逐分钟重建的。
结束会删除我的时段吗?
不会。结束只是暂停数据流并打开报告;已加载的交易日会留在内存中,直到你返回准备界面或离开该路由。