NinjaTrader 8 v1.0 Indicator Free

Market Data Exporter for NinjaTrader 8 — Export Chart Data to CSV

Export NinjaTrader chart data to CSV in one click — OHLCV plus a duration column, and it handles range, Renko and tick charts that the built-in historical export leaves out.

You will also get the Monday macro read. Unsubscribe in one click. How we handle it.

MARKET DATA EXPORTERCHART -> CSVes-12range-2026-07.csvtime,open,high,low,close,vol09:30,5318.25,5321.25,5317.50,532109:31,5321.25,5324.25,5320.50,532409:32,5324.25,5327.25,5323.50,532709:33,5327.25,5330.25,5326.50,533009:34,5330.25,5333.25,5329.50,533309:35,5333.25,5336.25,5332.50,533609:36,5336.25,5339.25,5335.50,533909:37,5339.25,5342.25,5338.50,534209:38,5342.25,5345.25,5341.50,5345EVERY BAR · EXACT TICKS · NO GAPS
Range and Renko bars are built from ticks, so exports from time-based data get them wrong. This walks the chart itself and writes exactly what NinjaTrader drew, bar by bar.

What it does

  • Exports bar types the built-in export cannot — NinjaTrader's historical export only writes the raw stored series — tick, minute, day. Range bars, renko bricks and tick bars are built by the chart, so they never reach it. This runs on the chart, so it sees them.
  • Actual CSV — Comma-separated, ready for Excel, pandas or R. The built-in export writes semicolon-delimited text that NinjaTrader's own documentation tells you to find-and-replace.
  • A duration column — DurationSec records how long each bar took to form. Meaningless on a time chart, essential on any bar type where bars are not equal in time.
  • What you see is what you get — It exports the series on the chart, at the settings on the chart. No second guessing which data NinjaTrader decided to give you.

The gap this fills

NinjaTrader can export historical data. Tools → Historical Data → Export gives you tick, minute or day data as a semicolon-delimited text file.

What it cannot give you is range bars. Or renko bricks. Or tick bars. Those are not stored on disk — they are constructed by the chart as it loads, from the underlying tick data. The export never sees them.

This is NinjaTrader's own position on it: there is no built-in way, and a custom NinjaScript is the answer. So here is the NinjaScript.

How it gets around the problem

It runs as an indicator, on the chart. By the time it executes, the bars exist: whatever type you are looking at, however you configured it. It writes those.

What you get

BarStartTime,Open,High,Low,Close,Volume,DurationSec

Six of those columns are what you would expect. The seventh is the reason to use this over anything else.

Why DurationSec matters

On a five-minute chart every bar takes five minutes and the column is noise.

On a range chart it is the most informative number in the file. Two bars can cover identical price distance — that is what makes them range bars — while one took nine seconds and the other took forty minutes. That difference is the market changing pace, and it is invisible in OHLC.

If you are backtesting on range bars without it, you are treating a frantic bar and a dead one as the same event.

Notes

It exports what the chart has loaded, so load more history first if you need it. The file is written as the chart loads and closed when you remove the indicator or close the chart.

Install

  1. Download the zip. Do not unzip it — NinjaTrader imports the zip as it is.
  2. In NinjaTrader: Tools → Import → NinjaScript Add-On…, then pick the zip.
  3. Restart NinjaTrader.
  4. Open the chart whose bars you want, right-click → Indicators…, find Bar Data Exporter, and add it.
  5. Set Export Path. The file is written as the chart loads.

Settings

SettingWhat it changes
Export PathFull path of the CSV to write, including the filename.