Telemetry off
Documentation

Documentation

5. Importing CSV Data

Created
Aug 22, 2026
Updated
Aug 22, 2026

The CSV provider charts your own data: import CSV files of OHLCV bars and the symbols behave like any other instrument — symbol search, watchlists, every timeframe you imported, indicators, Pine request.security, backtesting, and replay. The one deliberate difference: CSV data is static. There is no realtime feed, so charts don't tick and alerts on CSV symbols will not trigger.

Everything is stored in this browser (IndexedDB). Nothing is uploaded, and datasets don't follow you to another browser or device.

Importing

Open Chart Settings → Data provider, pick CSV, and drop your files onto the panel (or click Import CSV). You can select many files at once.

Files named SYMBOL_tf.csv are grouped automatically — one symbol, one series per timeframe file:

MES_1m.csv  MES_3m.csv  MES_5m.csv  MES_10m.csv  MES_15m.csv  MES_30m.csv
MES_1h.csv  MES_2h.csv  MES_4h.csv  MES_1d.csv   MES_1w.csv   instruments.csv

The tf token maps to the chart's timeframes (1m → 1M, 1h → 1H, 1d → 1D, 1w → 1W, …). An instruments.csv manifest (symbol,minQty,mintick) is recognized and merged into symbol metadata. Files with other names import as a single series — you pick the symbol, timeframe, and asset class in the preview.

Before committing, the preview shows what was detected per file (delimiter, time format, row estimate, timeframe). Re-importing a file for an existing symbol + timeframe replaces that series — the flow for datasets you re-export over time.

File format

A header row plus one bar per line:

time,open,high,low,close,volume
1577919600,3237.0,3239.0,3235.5,3236.25,409.0
  • Delimiters: comma, semicolon, or tab (auto-detected). RFC-4180 quoting is supported.
  • Columns: time/date/timestamp, open, high, low, close, and optional volume — common synonyms (o, h, l, c, vol) are auto-mapped. An adj close column is never auto-picked over close.
  • Time: epoch seconds, epoch milliseconds, ISO-8601 datetimes, or plain dates. Everything is interpreted as UTC — datetimes without an offset are treated as UTC, and date-only rows as UTC midnight.
  • Rows are sorted, duplicate timestamps keep the last occurrence, high/low are clamped to contain open/close, and unparseable rows are skipped — the summary reports all counts.

Limits: 256 MB per file, 4 million rows per series, 11 series per symbol, 32 symbols.

Charting

Address a dataset like any provider-prefixed symbol: CSV:MES (or CSV:FU:MES for a non-default asset class), or pick it from symbol search, where CSV rows carry a CSV badge. Bare tickers resolve to CSV only when no regular provider serves them — a dataset named AAPL never shadows the real AAPL.

Each chart timeframe is served from the series you imported for it. A timeframe you didn't import is aggregated from the best finer series (in UTC buckets); a timeframe finer than anything imported shows an empty chart. Weekly and daily bars render exactly as exported — session-anchored weeklies stay on their anchor.

If a dataset ends in the past, opening its chart shows the most recent bars it has; scrolling left pages back to the first row and stops.

[!NOTE]

Large libraries live in browser storage — the panel shows current usage, and the app asks the browser to persist it on first import. Clearing site data deletes your datasets.