Your Bot and Your Broker Are Lying to Each Other
Right now, your trading bot has a record of filled orders. Your broker has a different record. The two don't match.
Your bot logged a buy as "filled at 1.2050." The broker confirms the fill but reports only 0.8 lots instead of 1.0. Your bot thinks you're holding 1 lot. You're actually holding 0.8. Your risk calculation is wrong. Your exit plan is wrong. Your position math is corrupted.
Most traders don't know this is happening until they close the trade and the numbers don't reconcile.
Why DIY Bots Lose Position Awareness
A professional EA does one thing most DIY traders skip: live reconciliation. It asks "what does the broker confirm I own?" and compares that against "what does my bot think I own?" Every single tick.
DIY bots skip this because:
- They log fills once and never verify. Your bot filled 5 orders and moved on. It never asked the broker "did those actually stick?" It assumed its own records were law.
- They don't handle partial fills. You sent a 1-lot order. The broker filled 0.6 and rejected 0.4 due to liquidity. Your DIY bot logged "1 lot filled" and kept going.
- They ignore rejected orders. You sent a buy. The broker said no—account locked, max lot exceeded, connection timeout. Your bot logged it as pending. It will never know it failed.
- They don't track requotes. You sent a limit at 1.2050. The broker filled you at 1.2055. Your stop loss is still at 1.2020, but the fill was worse, so your risk/reward is dead.
- They have zero rollback mechanism. When discrepancies happen (and they will), your bot can't resolve them. It just keeps trading on corrupted data.
What This Costs You
Being blind to your actual position means managing risk based on imaginary data.
Your bot thinks you're up 50 pips on a 1-lot position, so it holds for 100. You're actually up 50 pips on 0.6 lots. When it closes the "position," it closes 0.6 and leaves 0.4 open—bleeding pips while your bot thinks it's flat.
The small reconciliation gap compounds. Across 100 trades, across months of tiny discrepancies, you're leaking 5-15% of expected returns without knowing why. In extreme cases (network outages, broker resets, API limits), the gap widens fast. You go from "up 2K" to "down 5K" the moment you close and see what's actually in the account.
Here's the thing: If your DIY bot doesn't reconcile, it's not managing risk. It's gambling with incomplete information. And gamblers don't win long-term.
Brokers Aren't Transparent About This Either
Your broker isn't deceiving you. They're just not volunteering transparency.
When you place an order, the broker sends a fill confirmation. You assume it's final. In reality, it's provisional. The broker's risk engine might reverse it 100ms later if you've exceeded limits. Your bot never gets the reversal message because it didn't subscribe to the right API callback.
Different brokers use different APIs. MetaTrader 4 uses delayed callbacks—OnTrade() fires after the trade server finishes processing, not when the fill happens. MT5 is better but still lags. Binance, Bybit, OKX all have their own latencies. A bot coded for MT4 won't reconcile correctly on Bybit because the timing model is completely different.
Your broker also won't tell you when they're rationing liquidity. You hit 10 lots at once and they only have 6. They quietly fill 6 and leave 4 pending. Your bot doesn't know—it's still waiting for the order, holding a partial position, draining margin.
The Professional Approach to Live Reconciliation
A custom EA built by someone who understands order management does this on every tick:
- Query broker positions. "What does the server say I own right now?" Compare against the bot's internal ledger.
- Identify gaps. If the bot thinks 1.5 lots are open but the broker says 1.0, flag it immediately.
- Resolve the gap. Don't keep trading. Stop, reconcile, figure out what happened (partial? rejection? network loss?), update the ledger, then resume.
- Log everything. Every fill, every partial, every rejection gets timestamped. You can audit what happened post-trade.
- Use confirmed data for all decisions. Exit strategy, risk calculation, position sizing—all based on what the broker confirms, not what your bot guesses.
This reconciliation loop must run faster than your trading logic. If you're trading every 5 seconds, reconciliation must run every tick. Anything slower and you're back to being blind.
Why DIY Reconciliation Always Breaks
You might think: "I'll just add a check to my code."
Reconciliation is fragile across scenarios:
- Multi-broker setups. MT4, MT5, and a crypto exchange each have different APIs and timing models. DIY bots usually only reconcile on one platform.
- Network timeouts. Your bot queries positions and gets no response. Does it assume the last state is correct? If so, it's operating on stale data. If it waits, it misses the next signal.
- Partial fills across multiple orders. You sent 5 pending orders for different scenarios. Three hit, one partially fills, one rejects. DIY bots usually can't handle that cascade.
- Broker reconnects. Your EA disconnects from the broker (network blip, broker restart, API rate limit). When it reconnects, position state changed. DIY bots resume with old state.
Order management systems used by institutional traders handle this with strict state machines and audit trails—but DIY bots skip all of it. They assume fills are always correct and move forward.
This Is Where Custom EA Development Makes the Difference
Order reconciliation is complex enough that DIY traders don't bother. They assume fills are correct and hope.
Professional reconciliation has to be built for your exact broker, your exact strategy, your exact risk model. You can't copy-paste it from GitHub. It has to be custom.
This is why Alorny builds custom EAs with reconciliation baked in from day one. We've completed 660+ projects on MQL5, and reconciliation is standard on every complex strategy. Here's what you get:
- Live position tracking that catches discrepancies before they cost you
- Full order audit logs—timestamp, fill price, partial/full/rejected status
- Risk calculations based on what the broker confirms, not what your bot guesses
- Backtest reports showing position accuracy (not just P&L)
- Working demo in 45 minutes, full delivery in hours
Tell us your broker, your strategy, and your risk model. We design reconciliation for your exact setup. You get a demo trading with live position tracking in 45 minutes. Full backtest report included.
Key Takeaways
- DIY bots don't reconcile—they log fills once and assume they're correct forever.
- Brokers and bots disagree regularly (partial fills, rejections, requotes, network issues).
- Being blind to actual position means your risk calculations are wrong on every trade.
- Professional EAs reconcile live—they query the broker every tick and fix discrepancies immediately.
- Order reconciliation is too complex for DIY—it needs custom logic for your specific broker and strategy.
If you're running a bot without live reconciliation, you're not managing risk. Fix it now, before it costs you real money.