NinjaTrader Trading Journal: Import the Orders CSV Correctly
Product research based on TDLab workflows, hands-on testing and cited source material.
A NinjaTrader trading journal import is reliable only when the file contains enough order-fill data to rebuild completed positions. TDLab targets the futures Orders report CSV, groups filled orders by source account and contract, and emits a journal trade when that position returns to flat.
This is a file-import workflow, not a live NinjaTrader connection. Export the right report, use a date range that starts and ends flat, select the timezone used to generate the report and reconcile the result before using the analytics.
Short answer
Download the Orders report as CSV, filter it to one trading account, include the complete opening and closing fills, then import it with NinjaTrader selected. TDLab reconstructs scale-ins, scale-outs and reversals, skips still-open cycles and records gross P&L because this report format does not include commissions.Factual review
Product behavior on this page was checked on August 9, 2026 against the current TDLab importer and NinjaTrader's official help guide.Not every NinjaTrader export is the same
NinjaTrader exposes several grids and performance views. The desktop Orders tab can export its visible grid, while Trade Performance can display executions, trades and orders. Those exports do not necessarily contain the same headers.
TDLab's guided NinjaTrader parser expects the Orders-report schema used for futures account reporting. Before uploading, open the CSV and confirm that it contains these columns:
- Order ID;
- B/S;
- Contract;
- avgPrice or Avg Fill Price;
- filledQty or Filled Qty;
- Fill Time;
- Status;
- Notional Value.
Account and Product are useful additional fields. If the required headers are absent, do not rename unrelated columns merely to make the upload pass. Export the correct report or use the custom completed-trade CSV workflow.
NinjaTrader's official documentation confirms that the Orders grid can be exported to CSV or Excel and that the Trade Performance window includes distinct Executions, Trades and Orders views. See the official NinjaTrader Orders tab guide and Trade Performance display reference.
Do not apply NinjaTrader's “always UTC” rule for historical market-data exports to this account Orders report. The historical-data import guide documents UTC for that separate file type. Account reporting supports a timezone for its rendered timestamps, so TDLab asks you to identify the Orders report's source timezone explicitly.
Import NinjaTrader trades into TDLab
- Create or select the destination TDLab account and set its platform to NinjaTrader.
- In the NinjaTrader account reporting area, generate the Orders report for one source account.
- Choose a range that begins before the first opening fill and ends after every position in that export is flat.
- Download the report as CSV.
- Open Add trades, choose File / Report and select NinjaTrader.
- Select the timestamp source used by the Orders report: choose America/Chicago when the report uses Central Time, or the matching IANA timezone when it uses the generating computer's local time. Then upload the CSV.
- Reconcile imported and skipped counts against the source report.
Use one source account per file
The Orders CSV may contain an Account column, which TDLab uses while reconstructing positions. Every resulting trade is still imported into the TDLab account selected during upload. Filter the report to one source account so evaluation, funded, live and simulation history cannot be assigned to the wrong journal.Why the range must start and end flat
An order row is not necessarily a completed trade. One position can contain several entries, partial exits and a final closing order. The importer needs the entire sequence to infer the position state.
TDLab processes filled orders chronologically for each account and contract. It starts a cycle when quantity moves away from zero, adds same-direction fills at a weighted entry price and realizes P&L as opposite fills reduce the position. A journal trade is created only when the quantity returns to zero.
If the file starts halfway through an existing position, its first visible sell can be mistaken for a new short. If the file ends with an open position, that unfinished cycle is intentionally not emitted. NinjaTrader itself uses the last flat point when building performance reports so a selected date range does not begin in the middle of a position, as described in the official Trade Performance guide.
How scale-ins, scale-outs and reversals are represented
- Additional entries in the same direction update the weighted average entry price.
- Partial exits accumulate realized P&L without closing the journal cycle.
- The final exit closes one round trip whose size is the total closed quantity.
- An order that crosses through flat closes the old cycle and starts a new cycle in the opposite direction with the remaining quantity.
- Re-imported round trips are checked against existing tickets and trade fingerprints before insertion.
This differs from NinjaTrader's own Trades display, where scaled positions may appear as separate trade objects. Neither grouping is universally correct; use the source fills when reconciling a complex position.

Why imported NinjaTrader P&L is gross
The targeted Orders report does not supply commissions. TDLab derives the contract point value from Notional Value, fill price and quantity, then calculates realized P&L from entry and exit prices. Fees are stored as zero and the record is marked as having no available fees.
Do not compare that number directly with broker net P&L. Compare gross to gross first. If commission-sensitive expectancy matters, record the missing cost through a supported completed-trade export or keep the limitation visible when reading the trading performance scorecard.
Common NinjaTrader import errors
The report is missing required columns
You likely exported a different NinjaTrader grid. Check the exact header list above. An Executions or desktop grid export is not interchangeable with the supported Orders-report schema.
The import completes with no trades
Confirm that Status contains Filled rows and that the file includes at least one complete flat-to-flat cycle. Open positions are not imported as completed journal trades.
Trade direction or P&L looks wrong
Look for an opening fill just outside the exported range, a missing partial fill or mixed source accounts. Re-export a wider range and reconcile the order IDs used by the position.
Trades appear in the wrong session
Check the timezone selected when the Orders report was generated. Use America/Chicago for Central Time, or the matching IANA timezone for local time so daylight-saving changes are handled automatically. The selected TDLab account timezone separately controls how those instants appear in session and daily analytics.
Some rows are skipped
Non-Filled statuses, incomplete fills and duplicates are skipped. Read imported and skipped counts as a reconciliation signal, not as an automatic failure.
Turn the import into a review process
The CSV can reconstruct what happened, but it cannot know why the trade existed. Add setup, planned risk, plan adherence, execution quality and mistakes through the TDLab Trade Review queue. Futures evaluation accounts should also keep firm constraints separate from personal guardrails using the prop firm trading journal workflow.
Common questions
Does TDLab auto-sync NinjaTrader?
No. The current supported workflow is an Orders CSV import. Describing it as auto-sync would be inaccurate.
Can I import an open NinjaTrader position?
Not through this completed-trade workflow. TDLab emits a journal record only after the reconstructed position returns to flat.
Does the NinjaTrader import include commissions?
No. The supported Orders report lacks commissions, so TDLab records gross P&L and zero fees.
Can I re-import an overlapping range?
Yes. TDLab uses order tickets and fingerprints to skip round trips it already knows. Always verify the skipped count after import.
NinjaTrader and related marks belong to NinjaTrader. TDLab is an independent journal and is not presented as an official NinjaTrader product.
See your own behavior, priced.
TDLab imports your real trades, attaches a cost to each behavior and tracks whether you follow your own rules. Start free for 7 days.
