Replay transport controls: play, seek, speed and End

The transport row sits above the Replay chart once a session is loaded. It plays or pauses the tick stream, seeks to any minute of the session, changes the playback speed from x1 to x25 and ends the session to open the report.

Senzoukria · Documentation · Updated September 2026


Where to find it

Where
Replay → Load session → row at the top of the chart (Sz menu → Replay)
Default speed
x1 (real time); choices x1, x2, x5, x10, x25
Shortcuts
Space = play/pause, Left/Right arrow = seek 1 % of the session; ignored while typing in a field
Seek precision
The target is snapped to the start of its minute

What it does

After the setup screen loads a CME session (a few million ticks, 30 to 60 seconds for the first load), the Replay route shows the same footprint chart as live with a transport row above it. The row holds seven controls: a play/pause button, the simulated clock, a seek slider, the session end clock, the speed group, the End button and a tick counter. The row is 32 px high and sits above the chart rather than floating over it.

Ticks are streamed by the Rust player in batches and aggregated into 1-minute footprint bars on the front end. The canvas is painted immediately on every batch; React state (indicators, counters) is committed at most 4 times per second, the same ceiling as the live feed. Timeframes from 1m to 1h are derived from those minute bars. Big Trades bubbles receive the raw ticks, so they work in Replay exactly as they do live.

Replay has no order book: the broker's tick history only contains transactions (price, quantity, aggressor side), never book depth. The DOM profile overlay is therefore forced off on this route rather than showing a book rebuilt by guesswork.

Controls

The seven transport controls, as rendered in the Replay route
ControlDefaultWhat it does
Play / Pause (▶ / ❚❚)Paused after load (phase 'ready')Starts or pauses the tick stream. Disabled until the session is loaded.
Simulated timeFirst tick of the sessionThe clock of the tick currently played, shown as HH:MM:SS in your machine's local time (24-hour).
Seek0 %Slider from 0 to 100 % of the session in 0.1 % steps. Dragging changes nothing; the seek is sent when you release the pointer or key.
Session endLast tick timeThe clock of the last tick of the loaded day.
Playback speedx1x1, x2, x5, x10 or x25. Changing it while playing applies at once; while paused it applies at the next Play.
EndPauses playback and opens the session report. Nothing is deleted: close the report and keep trading if you want.
Tick counter'loading…'Total ticks of the loaded day; shows '· end' once the session has been fully played.

How seeking works

A seek target is snapped to the beginning of its minute. Bars from that minute onward are dropped from the local aggregate, the Rust player restarts exactly there, and the chart is rebuilt instantly for every minute before the cursor with a single backend call (replay_bars_until). Seeking forward therefore does not leave holes: the minutes you skipped are reconstructed, not streamed. Context sessions loaded before the replayed day are re-seeded on every seek so the prior profile never disappears.

Each stream carries an id. Batches from a stale stream (before a seek resolved) are discarded, which prevents double counting a minute. If a seek fails, nothing is dropped and the error is shown in the setup banner.

Keyboard: Space toggles play/pause and the arrow keys move the cursor by 1 % of the session. Key repeat is ignored on purpose: each seek rebuilds the day on the Rust side, so one press equals one move. Shortcuts are silent while an input, textarea or select has focus, and when Ctrl, Alt or Meta is held.

Limits or pitfalls

  • Replay ticks are timestamped at the full second: hundreds of ticks share the same timestamp, which is why seeking is done by whole minutes.
  • If the backend reports no loading progress for 90 seconds, the load is abandoned with an explicit message (typically a dev server reload).
  • Ending a session records its statistics to the Performance panel only if at least one simulated trade was closed during it; a session without trades is not recorded.
  • Leaving the route stops the backend player and frees the ticks in memory; the transport state is not persisted.

This page in other languages

Frequently asked questions

Why does the chart move smoothly at x25 while indicators update less often?
The canvas is painted on every tick batch, outside React. Indicators and counters read a React snapshot committed at most four times per second, the same ceiling as the live feed.
Can I seek to an exact second?
No. The target is snapped to the start of its minute because the player restreams whole minutes and the aggregate is rebuilt minute by minute.
Does End delete my session?
No. End pauses the stream and opens the report; the loaded day stays in memory until you go back to setup or leave the route.

Keep reading