History loading screen and startup recovery
When a Senzoukria chart opens, a loading overlay shows the history download as a growing candle silhouette with a percentage, a bar count and an estimated time left; a startup recovery module re-subscribes automatically when a feed announces success but delivers nothing.
Senzoukria · Documentation · Updated September 2026
Where to find it
- Where
- Overlay on the chart while history loads; Reload history in ⚙ → Trading Settings
- Phases
- idle → cache → ensure → live
- History window presets
- 24 hours (today) by default, 3 days, 7 days
- Startup recovery
- Re-subscribe after 8 s of silence, up to 3 attempts; subscribe retries at 1.5 s, 4 s, 9 s
What it does
The overlay sits on the chart itself, where the attention is, instead of a blinking dot in a toolbar. Its candle strip is a deterministic silhouette, not prices: there is no axis, no number and the not-yet-loaded part is not drawn. A frontier line sweeps to the right as data arrives. The header reads Loading 1m history with the source on the right, for example Rithmic tick replay. The footer shows the percentage, the estimated time left, the number of bars loaded (or waiting for the first bar) and a sentence explaining why it takes time.
The estimate is computed from the observed pace: it appears once at least 2 % is done and 1.5 s have elapsed, is refreshed every second, and is capped at six hours. On crypto and Databento surfaces the count reads as steps out of 3 and a Show available data (history may be incomplete) button lets you open the chart before the download finishes.
Sequence
| Phase | What runs | What you see |
|---|---|---|
| cache | The local SQLite cache is read page by page (1,000 rows per page, at most 64 pages). The 1-minute grain is the pivot; other timeframes are aggregated from it, daily bars come from a separate TimeBar leg. | Bars appear immediately when the instrument has been loaded before. |
| ensure | Coverage gaps inside the history window are requested from the broker as tick replay. Progress never goes backwards within a run. | Percentage, bars loaded and ETA advance; the chart is usable as a preview. |
| live | Gauge at 100 %; the live feed keeps the last bar moving. | Overlay disappears; a notice may remain in the toolbar. |
Settings and constants
| Item | Value | Effect |
|---|---|---|
| History window | 24 hours (today) by default; 3 days and 7 days presets | Start of the window is midnight of the first day in the chart timezone. Daily bars always request at least 360 hours. |
| Busy retry | One retry after 3 s | When another load already holds the instrument. The notice appears at once and changes wording if the retry also finds it busy. |
| Stall watchdog | 120 s | No progress event for two minutes during ensure closes the gauge on what cache and live already have and posts a notice. |
| Reload history | ⚙ → Trading Settings → Reload history | Re-opens windows the broker drained to zero ticks. Clears nothing; cache and live feed continue. |
| Cache probe lookback | 400 days | How far back the disk is probed to find the newest cached bar and to list instruments with local data. |
Startup recovery
A subscription can be announced as successful and still deliver nothing, for instance when the gateway is not ready at auto-login. The recovery module retries the subscription with bounded delays of 1.5 s, 4 s and 9 s, then, once a subscription is accepted, waits 8 s for the first tick, bar or depth message. If nothing at all has arrived, it re-subscribes, at most three times. A quiet market that has printed even one message is never touched: recovery only handles the stillborn case. Re-subscribing is safe because the Rust side skips subscription bits already covered, so no duplicate registration error is produced.
Limits or pitfalls
What the loader does not do:
- It never clears the cache and never uses browser storage; the SQLite coverage decides what is requested.
- A window that came back empty is not asked again automatically. That is right on a weekend and wrong when the broker was merely busy; Reload history is the only manual lift.
- Progress is monotone per run: after a Reload history the gauge starts again from the beginning.
- The silhouette candles are not data. Do not read levels from the loading screen.
Related pages
This page in other languages
Frequently asked questions
- The percentage has not moved for a while. Is it stuck?
- Large empty windows advance in jumps and the ETA is refreshed every second from the observed pace. After 120 s without any progress event the watchdog closes the gauge and posts a notice; the chart stays usable on cache and live.
- Why does the chart show bars before the download is finished?
- The cache phase publishes what is already on disk, and during ensure the derived view is a preview updated as chunks arrive. The overlay tells you the history is still being completed.
- Do I still need to press F5 when the chart does not start?
- The startup recovery module re-subscribes on its own when a subscription delivers nothing for 8 s, up to three times. If it gives up, the error banner stays and you keep the hand.