Exporting bars to CSV
The Export button on a Senzoukria chart writes the bars currently loaded, and their per-price levels, as two gzip-compressed CSV files in Documents › Senzoukria › Exports, with UTC timestamps and the cache provenance of every row.
Senzoukria · Documentation · Updated September 2026
Where to find it
- Where
- ⇩ button in the chart toolbar (Rithmic and crypto footprint)
- Destination
- Documents › Senzoukria › Exports (falls back to the app data exports folder)
- Files
- <symbol>.<timeframe>.<from>-<to>.bars.csv.gz and .levels.csv.gz
- Range
- First to last loaded bar, inclusive; at most one year
What it does
The export writes what the cache holds for the loaded range: aggregates per bar (OHLC, volume, delta, delta high and low, trade count) and per price level (aggressive buy and sell volume, buy and sell trades). It is not a tick export; the cache does not keep transactions. Two files are produced so that a bar and its levels can be joined on bucket_ts_ns, symbol and timeframe.
The button is disabled while nothing is loaded (Nothing loaded to export yet). Clicking it opens a confirmation: Export the loaded bars and their price levels as compressed CSV to Documents › Senzoukria › Exports? followed by Export now. Progress reads Exporting… {bars} bars, {levels} levels and can be cancelled; the final message gives counts, size, the first and last UTC timestamps and how many bars have no price levels (OHLC only). Show in folder reveals the bars file.
Columns
| File | Columns | Notes |
|---|---|---|
| bars | bucket_ts_ns, bucket_utc, symbol, timeframe, source, open, high, low, close, volume, delta, delta_high, delta_low, trades, levels | bucket_ts_ns is the nanosecond epoch of the bar open; bucket_utc is the same in ISO 8601 UTC. source is the cache provenance per row: live, ohlcv, aggtrades, tick, or a bridge name. |
| levels | bucket_ts_ns, symbol, timeframe, price, buy_volume, sell_volume, buy_trades, sell_trades | One row per traded price level. An unknown side is an empty field, never 0. |
Behaviour
| Rule | Value | Effect |
|---|---|---|
| Compression | gzip on | Files end in .csv.gz. |
| Never overwrite | -2, -3 … suffixes | An earlier export with the same name is kept; the new one gets a numbered name. |
| Streaming | Pages of 2,000 bars | Written page by page; the cache lock is taken per page so the chart keeps reading during the export. |
| Progress event | Every 5 pages | Updates the bars and levels counters. |
| Cancel | Between pages | Partial files are removed; the result is reported as cancelled, never as success. |
| Maximum window | 366 days | Longer ranges are refused. |
| Unreadable levels | Counted | A bar whose level JSON cannot be read exports with an empty levels column and is counted separately from bars without levels. |
Limits or pitfalls
Before opening the files elsewhere:
- Units are the source's: contracts for futures, base units for crypto. The file does not convert them.
- Text fields are protected against spreadsheet formula injection (a leading =, +, - or @ is prefixed with an apostrophe) and quoted per RFC 4180 when needed.
- The export covers the loaded range, not the whole cache. Load a wider history window first if you need more.
- Bars marked ohlcv have no levels: they came from an OHLC fallback, not from tick replay.
Related pages
- History loading screen
- Offline chart and weekend behaviour
- Bar delta indicator
- Volume profile explained
This page in other languages
Frequently asked questions
- Where do the files go?
- Documents › Senzoukria › Exports. If the Documents folder cannot be resolved, the app data folder's exports directory is used. The done message shows the full path and Show in folder opens it.
- Why are some level fields empty rather than zero?
- An empty field means that side is unknown for that level. Zero and unavailable are kept distinct on purpose.
- Can I export ticks?
- No. The cache stores aggregates per bar and per price level. Replay sessions keep tick data separately, but this button exports bars and levels only.