NinjaTrader 8 already records every execution you make — the data is sitting in the platform. The problem is that it stays there as rows in a grid, never turning into the thing you actually need: a structured journal you can review by strategy, session, and R-multiple.
Bridging that gap is a solved problem once you know where NinjaTrader keeps the data and how to get it out cleanly.
Where NinjaTrader Keeps Your Execution Data
Every fill in NinjaTrader 8 lands in two places you can reach. The Executions tab (Control Center → Executions) lists each individual fill — instrument, side, quantity, price, timestamp, and the account it hit. The Trade Performance report (Control Center → Trade Performance) pairs those fills into round-trip trades and computes realized P&L.
Two ways out of the platform:
- Grid export. Right-click the Executions grid and export to CSV. You get raw fills — one row per partial, not per trade — which is the honest, complete record before anything rounds them into positions.
- Trade Performance export. Export the Trades view for pre-paired round trips with entry, exit, and P&L already matched.
Fills are the source of truth; the Trade Performance view is a convenience layer on top. For a journal you can trust, start from fills and let the tool reconstruct positions — that way a scale-out or a reversal is reconstructed the same way every time.
NinjaScript Bridge vs Execution CSV Import
There are two ways to feed NinjaTrader into an automated journal, and they trade convenience against setup effort.
| NinjaScript add-on bridge | Execution CSV import | |
|---|---|---|
| How it works | An add-on hooks ExecutionUpdate and streams fills out live | You export the grid and import the file |
| Freshness | Near real-time | Batched, whenever you export |
| Setup cost | Compile a NinjaScript add-on once | None — just export |
| Best for | Active daily traders who want hands-off logging | Occasional review, or a locked-down prop terminal |
A NinjaScript add-on subscribes to account execution events and pushes each fill to a file or endpoint as it happens, so the journal fills itself with no end-of-day step. It costs you one compile in the NinjaScript editor and a running terminal, but after that it’s automatic.
CSV import asks nothing of the platform — you export executions and hand the file over. It’s slower and manual, but it works even when a prop firm’s terminal restricts add-ons, which some do. Either path beats the alternative of retyping trades into a spreadsheet, where a single fat-fingered fill or a forgotten losing day quietly corrupts every statistic you later rely on.
What Actually Lands in the Journal
However the data arrives, the same fields should end up structured on each trade record:
- Instrument and contract count — ES vs MES matters, because a “1-point loss” is a very different dollar figure per contract.
- Entry and exit fills — every partial, with timestamps, so scale-ins and scale-outs reconstruct into one position instead of three phantom trades.
- Net P&L — after commissions and the exchange/NFA fees NinjaTrader applies, not the gross tick count.
- Direction and duration — long or short, and how long the position was open.
From those primitives, an automated journal derives the metrics you can’t eyeball from a fills grid: R-multiple, win rate, expectancy per contract, and give-back. Shibiki reads fills through auto-journaling and computes live edge health with a Wilson confidence interval on top — so you’re reviewing whether an edge is statistically real, not staring at last week’s P&L and guessing.
Attributing Trades to a Strategy
A journal that lumps every futures trade into one pile tells you almost nothing. The value comes from tagging each trade to the strategy that produced it — your opening-range breakout, your VWAP reversion, your news fade — so each one accumulates its own sample.
Do that and you can finally answer the question that decides your evaluation: which setup is actually paying, and which one feels good but bleeds. NinjaScript strategy names or the manual tag you add on import become the join key; from there, expectancy and win rate compute per strategy instead of as one muddy average. When a setup’s confidence interval says it’s genuinely positive, you lean in. When it’s noise, you cut it before it costs you an Apex Trader Funding evaluation.
Verifying Nothing Slipped Through
Automation is only worth trusting if it’s complete, so reconcile once. Open NinjaTrader’s Trade Performance report for the same window and check two numbers against your journal: total trades and net realized P&L. They should match to the cent.
If they don’t, the usual culprits are:
- Partials counted as separate trades instead of one position.
- Commissions and fees missing on one side, so P&L drifts.
- A reversal (long straight to short) mis-paired into the wrong round trip.
Run this check the first week you connect, then spot-check monthly. Once the totals reconcile, you can stop reading fills grids entirely — and the journal you review before every futures session is the same trades the firm sees, structured into something you can actually learn from. If your firm also offers a platform Shibiki connects to natively, like Tradovate, the same fills can flow server-side with no export step at all. Keeping that record honest is also what keeps you aware of your room against a trailing drawdown, which you can pressure-test against your account with a drawdown calculator.
Related: Trade journal vs spreadsheet · Tradovate integration · Drawdown calculator