How to Debug a NinjaTrader Trade Copier with AI
The CrossTrade trade copier moves orders from a leader to one or more followers. When a follower misses, the broker UI usually shows nothing. The CrossTrade Add-On activity log holds the truth. With CrossTrade MCP, an AI agent reads both leader and follower logs in one conversation and points at the gap.
Direct answer
Authenticate with mcp:read. Run this prompt with the leader, follower, and time window:
For leader <leader_account> and follower <follower_account> between <start> and
<end>:
1. GetActivityLog for both accounts.
2. ListOrders and ListExecutions for both in the same window.
3. ListPositions for both.
4. Build a single chronological timeline.
5. Identify the step where the follower path broke.
6. State the verbatim rejection reason if any.
7. Tell me the most likely root cause.
8. Suggest a one-line check the trader can run before the next session.
Do not place, cancel, modify, or flatten anything.
The agent reconstructs the timeline. The rejection reason is usually one line, like "follower rejected: max contracts (existing 4 + routed 2 > limit 5)".
Common copier failures
| Pattern | Cause |
|---|---|
| Leader filled, follower rejected | Max contracts on follower account |
| Follower late or out of sync | Routing delay or follower broker latency |
| Wrong quantity on follower | Copier ratio or per-account override |
| Follower took the wrong side | Configuration error in copier mapping |
| Two accounts diverged silently over time | Manual trades on one account, or copier-disabled window |
Prerequisites
| Requirement | Detail |
|---|---|
| CrossTrade subscription | Elite |
| CrossTrade Add-On | v1.13.0 or higher |
| MCP client | Any |
| Scope | mcp:read |
Step 1: Confirm the symptom
Before running the agent, note the leader fill time and the follower account that missed. A 5-minute window around the leader fill is usually enough.
Step 2: Run the diagnostic prompt
Paste the prompt above with your specific accounts and window.
Step 3: Read the timeline
Look for the step where the follower path stops. Typical patterns:
14:32:09.812 LEADER order placed
14:32:10.041 LEADER fill confirmed, 2 contracts at 5240.25
14:32:10.044 copier leader fill received
14:32:10.047 copier follower routing started
14:32:10.121 copier follower rejected: max contracts (existing 4 + routed 2 > limit 5)
14:32:10.121 FOLLOWER no order placed
The verbatim rejection reason is what you want. It usually tells you exactly which check fired.
How to spot each cause in the timeline
| Root cause | Indicator in the timeline |
|---|---|
| Max contracts | Rejection reason explicitly states max contracts. |
| Daily loss lockout | Rejection or no order; account summary shows lockout. |
| Account disconnected | GetConnections shows disconnected; no follower routing entry at all. |
| Symbol mapping | MarketInfo differs across accounts; routing entry references the wrong instrument. |
| Existing position conflict | ListPositions shows opposite side or already-over-limit qty before the leader fill. |
| Copier configuration | Routed quantity differs from leader; no rejection. |
| Bracket/ATM mismatch | Leader entry uses bracket; follower has none configured. |
Worked example
A typical case looks like this when you trace it end to end:
- Leader APEX1234 filled long 2 MES at 5240.25.
- Follower APEX1235 already held 4 MES from earlier in the session.
- Activity log:
follower rejected: max contracts (already at 5/5). - Root cause: follower APEX1235 was configured at max 5 contracts; the copier was routing the leader's 2 on top of an existing 4, total 6, exceeding the limit.
- Fix: either raise max contracts on APEX1235 if firm rules allow, or close the existing position before letting the copier replicate.
The agent's job is to extract the timeline and point at the line. The fix is your judgment.
Step 4: Fix the underlying issue
| Cause | Fix |
|---|---|
| Max contracts on follower | Reduce existing position or raise the per-account limit (if firm rules allow) |
| Follower disconnected | Reconnect the follower account in NT8 |
| Symbol mapping | Confirm both accounts subscribe to the same instrument; update copier mapping |
| Existing position conflict | Flatten the conflicting position manually |
| Copier ratio mismatch | Update copier configuration in CrossTrade |
| Bracket/ATM mismatch | Make sure both accounts have compatible bracket settings |
Step 5: Verify with a test signal
After the fix, fire a controlled leader order on Sim101 (or whatever non-funded environment you use for tests) and re-run the diagnostic prompt. The agent should report the follower path matched.
Funded futures considerations
- Apex prohibits automation entirely; a copier that routes to an Apex follower may violate firm rules even when CrossTrade can technically perform the route. Verify the firm's automation policy.
- Some firms prohibit cross-firm copying. Verify before you rely on it.
- Per-account max contracts on funded accounts usually cannot be raised without firm approval.
Related
- Main site: Trade Copier Diagnostics
- Tool: Trade Copier Incident Explainer
- Docs: GetActivityLog
- Trade Copier docs: Configuration