Updated June 2026 · NinjaTrader 8 desktop

How to Export Your Trades from NinjaTrader 8 (2026)

NinjaTrader 8 ships with the most flexible export grid of any retail futures platform — almost every panel can right-click → Excel or CSV. That power is also the trap: there are at least three different "trade history" grids that export different rows, two columns that look identical but mean different things, and a rollover-symbol quirk that silently splits your ES history into a dozen pieces. This guide walks the clean path.

Independent reference, not NinjaTrader documentation. Aurafy is not affiliated with NinjaTrader Group. NinjaTrader 8's UI varies by data-feed connection (Continuum, Rithmic, CQG, Kinetick) and by prop-firm DLL — the exact column set and menu wording may differ on your build. Always verify against your current install before scripting against an export. We import the standard NT8 CSV export and nothing more; no API or NinjaScript access is required.
Why export trades Export from NT8 desktop Trades vs Orders vs Executions CSV column reference 3 common pitfalls Cleaning the CSV for any journal Importing into Aurafy FAQ

Why you should export your trades (even though NT8 shows them)

NinjaTrader 8 has more built-in performance views than any other retail futures platform — Account Performance, Trade Performance, Strategy Analyzer, the Control Center's grids, even Market Replay's own log. But none of them give you a record you can take with you, version, or analyze against rule mechanics. The CSV does:

Bottom line: NT8 is an execution + charting platform with a basic performance dashboard. The CSV is what makes the data a record you can actually learn from across months and across firms.

How to export trades from NinjaTrader 8 desktop

NinjaTrader 8 is desktop-only (Windows; Mac users run it under Parallels or a Windows VM). Every grid in NT8 supports a right-click export, but the right grid to start with for journaling is Account Performance → Trades:

1
Open the Control Center.

If it's not already visible, NT8's main menu bar has a "Control Center" entry. Account Performance, Orders, Executions, and Positions all live under the Control Center's tabs.

2
Switch to the Account Performance tab.

Inside Account Performance you'll see sub-tabs — Summary, Trades, Orders, Executions, and an equity chart. The "Trades" sub-tab is the closest thing NT8 has to a round-trip ledger and is the right starting point for almost every journal.

3
Filter the account and date range.

At the top of the Trades grid, pick the account (or "All Accounts" if you're auditing across the whole NT8 install) and a date range. For prop-firm review, set the range to match your evaluation or payout cycle. The grid updates live as you change filters.

4
Right-click anywhere in the grid → Export.

NinjaTrader's export menu is hidden in the right-click context menu of every grid, not in the toolbar. Right-click any row → "Excel" exports to a working .xlsx; "CSV" writes a comma-separated file. CSV is what almost every journal expects.

5
Open the CSV and confirm row count.

Open the file (Excel, LibreOffice, or any text editor) and compare the row count against the Trades grid's total. If they don't match, your grid filters are different from what you exported (a common gotcha — filters live on the grid, not the export dialog).

Trades vs Orders vs Executions — which to export

NT8 splits the same trading day across three different grids, and the difference matters for your journal:

Rule of thumb: export Trades for your journal; export Executions for slippage analysis; export Orders for fill-rate audits. Never mix the three CSVs in one analysis.

CSV column reference (Trades grid)

Column names and order vary slightly by NT8 build and by data-feed connection. These are the fields that consistently appear in the Trades export — verify yours and map them to whatever tool you import into.

Column (typical name)What it meansWhy it matters
InstrumentThe futures contract with rollover suffix (ES 03-26, NQ 06-26, MES 09-26)If you trade rollovers, the instrument string changes every quarter — group by root in your journal, not by the full instrument label
AccountThe NT8 account name (Sim101, your Topstep XFA, Apex eval, etc.)NT8 will happily mix sim + live accounts in a single export — filter on this column before any P&L math
StrategyThe strategy that opened the trade ("Manual" for hand-clicks, the strategy name for automated)If you run an ATM + manual hybrid, this column is how you separate the two for honest performance review
Market pos.Long or Short — for the round-tripCleaner than fill-level Buy/Sell because it reflects the actual trade direction
QuantityContracts in the round-tripFor a 4-contract entry exited as 2+2, this is still 4 — NT8 aggregates at the trade level
Entry price / Exit priceQty-weighted average prices for the open and close legsAlready aggregated across partial fills — saves you the math the Tradovate CSV makes you do
Entry time / Exit timeRound-trip start and end timestamps, in NT8's configured timezoneNT8 timezone usually matches your data feed's session timezone (CT for CME), not your local PC clock — verify before importing
Profit / Cum. profitNet P&L for the trade and the running totalProfit is per-trade; Cum. profit is the column to use for an equity curve
CommissionPer-trade commission as configured in NT8's commission templateIf your commission template is wrong or missing, this column lies — verify against your broker's monthly statement before trusting cumulative net P&L
MAE / MFEMax adverse excursion + max favorable excursion (in points or currency, per your settings)The single most under-used pair of columns in any NT8 export — perfect for "how much did I leave on the table" + "how close did I come to my stop" analysis
Quick test: open the CSV and sum the Profit column. It should equal the total P&L shown in the Account Performance Summary for the same date range and account filter. If it doesn't, you're either missing rows, double-counting (sim + live mixed in), or your commission template changed mid-period.

The three quiet pitfalls

Most "my NT8 numbers don't match my journal" tickets trace back to one of these three.

1. Rollover instrument codes

NT8 uses contract-specific instrument labels (ES 03-26, ES 06-26, ES 09-26) rather than a continuous symbol. Every quarter your ES trading splits into a new row of the instrument list, and if your journal groups by full instrument label rather than root, your equity curve looks like four small histories instead of one continuous one.

Fix: in your journal's import step, map every ES NN-NN instrument to the root ES. Same for NQ, MES, MNQ, RTY, etc. Aurafy does this automatically. If you're scripting in Excel, a simple split-on-space → take first token does it.

2. Sim vs live accounts mixed in one export

NT8 lets you "Export All Accounts" in one click, which silently merges your Sim101 practice account with your funded XFA. Sim P&L isn't real, but the export doesn't flag it as fake — every row looks the same. A journal that imports an "all accounts" CSV with no filter shows you an inflated equity curve that includes thousands of sim-money trades.

Fix: export one account at a time, name the file with the account ("topstep-xfa-2026Q2.csv"), and never use "All Accounts" for performance review. If you must use a combined export, filter the Account column ruthlessly before any P&L math.

3. NT8 timestamps live in the data-feed timezone, not your PC clock

NT8 displays and exports timestamps in the timezone configured under Tools → Options → General → Time zone — which for most CME-focused data feeds defaults to America/Chicago, not your local time. A 9:30 AM ET trade exports as 8:30 AM CT. If your journal assumes the CSV is in UTC or local time, every session-time analysis will be off by an hour or more.

Fix: in your journal's import step, explicitly tell the tool what timezone the CSV's timestamps are in. Check NT8's Tools → Options → General for the configured zone first. Aurafy and most journals support explicit timezone selection on import.

Cleaning the CSV before import

NT8 exports go in cleaner than Tradovate's because the Trades grid already aggregates fills into round-trips. But these cleanup steps still pay off if you're scripting, exporting into Notion / Sheets, or moving between journals:

  1. Strip the "Total" footer row. NT8 sometimes appends a summary total at the bottom of the grid — kill it before parsing or it'll double-count your P&L.
  2. Normalize the timestamp. Convert both Entry time and Exit time to ISO 8601 with an explicit timezone offset (2026-06-02T08:30:00-05:00). Most downstream tools read this cleanly.
  3. Map instrument to root. Add a root column derived from the instrument (ES 03-26ES). All cross-quarter analysis groups by root.
  4. Filter to one account. If you exported "All Accounts," split the CSV into per-account files before importing anywhere.
  5. Verify the commission column. Open NT8's commission template (Tools → Options → General → Commission rate) and confirm the per-side rate matches your broker statement. If the template was empty when you traded, the Commission column is zero and your "net P&L" is actually gross.
  6. Don't lose the raw rows. Keep the original Trades + Executions exports archived together. You will eventually need the Executions data for a slippage audit.

Or skip all of that — drop the CSV into Aurafy

Aurafy's NinjaTrader 8 importer maps rollover instruments to roots, filters out sim accounts when asked, normalizes the data-feed timezone, and overlays MAE/MFE on the chart at the time of the trade. Drag the CSV into your account, pick the timezone if asked, and your trades land grouped by round-trip with R-multiples, prop-firm rule tracking, and chart context already overlaid. Free tier — 1 account, 30 days of history, no card required.

Start importing free More on Aurafy + NinjaTrader

While you're cleaning up the data — track the rules too

Once your CSV is in a journal, a few free Aurafy tools layer prop-firm rule math on top of any NT8 trade history — no signup required:

FAQ

Does NinjaTrader 8 have a built-in journal so I don't need an export?

Account Performance is closer to a journal than Tradovate's Performance view — you get MAE/MFE, an equity curve, and trade-level commission. But it tags nothing (no setup labels, no playbook column, no chart screenshots tied to trades), and it doesn't compute R-multiples or track prop-firm rules. For execution monitoring it's enough; for learning your edge across months, you'll outgrow it.

Can I export trades programmatically via NinjaScript?

Yes — NinjaScript can read SystemPerformance.AllTrades and write a CSV with any column layout you want. For one-off journal exports this is overkill; the right-click → CSV path takes ten seconds. For automated nightly exports into a long-term database, NinjaScript is the right path. Aurafy and most journals import the right-click CSV, not the NinjaScript output, so the two flows don't compete.

Why does my exported P&L not match what TopstepX or another prop-firm dashboard shows?

Two reasons usually. First: prop-firm dashboards compute P&L net of the firm's commissions + exchange-fee schedule, which may differ from NT8's commission template. Second: post-August-2024, Topstep accounts on NinjaTrader 8 require the TopstepX DLL — and TopstepX's dashboard is the canonical P&L source, with NT8's local Profit column potentially trailing it by minutes. When the two disagree, the firm's dashboard wins for funded-account rule tracking.

What about Combine vs XFA exports — same flow?

Same flow, separate accounts. If your prop firm exposes both inside NT8, the Trades grid shows them as separate Account entries and you export them one at a time. Never combine eval and funded data in a single journal view if you're analyzing rule-survival rates — they have different rule sets and different psychological pressures.

Does the export include cancelled or rejected orders?

The Trades view does not (only round-trips that actually filled). The Orders view does. If you want to audit how often your stops or limits got cancelled before filling — a useful execution-quality metric — pull the Orders view separately, and never mix the two CSVs.

Can I include trade comments / chart screenshots in the export?

No. NT8's CSV export is grid columns only — no screenshots, no Chart Trader notes, no NinjaScript variables. If you need screenshots tied to trades, capture them outside NT8 (Aurafy's recorder is one path) and key them by entry timestamp in your journal.

What if I'm on NinjaTrader 8 routed through Rithmic instead of Continuum?

The export path is identical — the data feed only changes the live ticks, not how the Trades grid records them. Where it does matter: with Rithmic-routed accounts, the multi-firm-on-one-Rithmic-login workflow lets you trade Apex + Bulenox + MFFU under one NT8 install, and each will show up as its own Account row in the export. See our Rithmic journal guide for the multi-firm workflow.

Will the CSV work the same way on the NinjaTrader desktop trial / sim build?

Yes — the Trades grid and right-click export work identically on the free sim build. This means you can practice the journal workflow on Sim101 before your first funded day. The only difference: sim trades have Sim101 in the Account column, which makes filtering them out trivial later.

Free trading journal that actually reads NinjaTrader 8 CSVs cleanly

Aurafy imports the standard NT8 Trades export, maps rollover instruments to roots, filters sim from live, normalizes the data-feed timezone, computes R-multiples per trade, and overlays everything on the chart at the time of the round-trip. Topstep / Apex / MFFU / TPT / Tradeify / Bulenox / Earn2Trade rule tracking included. Free tier — 1 account, 30 days history, no card.

Start free — no card See pricing