How Toolbox catches missed and orphan trades in a live copier
A trade copier is only as trustworthy as its ability to prove it stayed in sync. A missed close on a slave account, a position the master never opened, a partial close that leaves two platforms disagreeing about volume — any of these can sit undetected until a client complains or someone reconciles by hand at the end of the week.
Toolbox's Trades Copier runs a continuous reconciliation service instead, across MT4, MT5 and MatchTrader. This post covers what it actually checks, what it catches, and the two safety fixes that shipped this year after we found the check itself could be wrong.
Two reconciliations, not one
Copiers drift in two different ways, and they need two different checks.
Open Trades Reconciliation (OTR) compares what is currently open on the master against what is currently open on each slave — missing positions, orphan positions, volume mismatches, all live.
Closed Trades Reconciliation (CTR) looks backward: it verifies that trades already closed on both sides agree on P&L, and can correct discrepancies it finds. CTR takes a custom date range — 7 days, 14, one month, three, six, or any range you set — and runs in two modes:
- Preview shows what it would correct, without touching anything.
- Execution applies the corrections and logs every action taken, visible afterward in the Execution Actions table on the report.
Both reports show full platform context — source and destination platform names and types, the copy configuration (logins, group masks) that produced the run — so a report answers "what happened and under what scope" on its own, without you cross-checking current settings.
What "orphan" and "missing" mean in practice
- Missing positions — the master has a trade the slave doesn't. The copier missed it.
- Orphan positions — the slave has a trade the master never opened.
- Volume mismatches — the position exists on both sides, with different lot sizes.
Matching runs by ticket reference where a copier tags slave orders with the master ticket, or falls back to symbol + side + volume where it doesn't. Partial closes are where this gets genuinely hard: MetaTrader keeps the same ticket after a partial close and reports the volume that closed, while MatchTrader reports the volume that remains and can issue a new ticket in-place. Reconciliation has to know which convention each platform speaks and translate — a naive same-ticket assumption would misread every MatchTrader partial close as an orphan.
Failed operations, without parsing logs
Not every copy attempt succeeds — a platform timeout, insufficient margin, a symbol that doesn't exist on the destination. Instead of leaving you to grep Serilog for the reason, Toolbox has a Failed Operations view: error message, source and destination detail, symbol, side, volume, and a way to mark an operation resolved once you've corrected it manually. Export to CSV if you need it outside the dashboard.
The loop check, and why we had to fix it twice
Run enough copiers and a misconfiguration can wire A → B → C → A. Toolbox validates for cycles with a DFS-based check at the login level before a copier is allowed to start — not a runtime detector that notices after trades already went in circles, a pre-flight check that refuses to save the configuration.
That check got two corrections this year, both about the same failure mode: being too aggressive.
The first was cross-platform group filtering. If you scoped a copier's source by a Groups mask with no accompanying Logins mask, the mask could be silently ignored for the OTR report on MT4 and MT5 sources — reconciliation looked broader than what you'd actually configured. Fixed so the group filter is honored consistently across all three platforms.
The second was in the loop check itself. On a same-platform copier scoped only by Groups (no Logins mask), an empty Logins mask used to be read as "matches every login" — so a legitimate setup like copy from group IFX*CHF to login 10283, where 10283 isn't even in that group, got rejected as a false loop. Fixed to actually consult the Groups mask in that shortcut path. Where a loop is real, the error is now more specific too — it names both the Logins and Groups mask that triggered it, instead of a generic "loop detected."
Reports don't lie about their own scope
A more subtle bug: if you generated an OTR or CTR report, then edited your copier's filters afterward, the report used to show current filter values — not the ones that were active when it actually ran. A report is supposed to be evidence; evidence that silently rewrites itself when you change unrelated settings isn't evidence.
Reports now carry a small Snapshot indicator confirming the filter values shown are frozen at generation time. You can edit live settings freely without old reports drifting. Reports from before this shipped show a Live settings indicator instead — their underlying data is still correct, only the displayed filter context comes from current settings rather than a stored snapshot.
Where this lives
Reconciliation runs automatically for every copier configuration — no separate setup. Reports are in the dashboard under Trades Copier → Reconciliation; configuration lives under Apps → Trades Copier, where you set master, slaves, volume mode (multiplier, fixed lot, or proportional), symbol mapping, and filters.
If you run copy-trading as a service, reconciliation is the difference between believing trades executed as intended and being able to show it — which is also usually the first thing a regulator or auditor asks for.
Try it
Connect a copier pair on the sandbox — it's free, permanently, with reconciliation running exactly as it does in production. Bring your own master and slave accounts, or use test ones; either way you'll see the same OTR and CTR reports this post describes.

