ForexBestRobots.comCompare EAs →
EN

LIVE MONITORING AND FORWARD VALIDATION · GUIDE 1

Live Forex EA Trade Reconciliation: Signals, Orders and Account Records

Reconcile live EA decisions, order requests and broker records in MT4. Trace a timeout, separate trading costs and deposits, and bridge closed trades to account equity.

14 min readReviewed by ForexBestRobots Editorial Team
An invented audit has 4 logged decisions, 3 market-entry attempts and 3 matched broker orders: 2 closed and 1 open. A documented no-signal decision sends no request. These counts describe evidence coverage, not trading performance. Match decision logs, request logs and broker records within one declared account and cutoff.
Reconcile the evidence before judging the result.

A live EA can be connected and still leave an incomplete trading record. Before interpreting profit, reconcile what the EA decided, what it requested and what the broker actually recorded. A screenshot of closed winners cannot establish that chain.

Keep decision evidence, execution evidence and account accounting separate until they match. This guide supplies a reproducible audit example, not a monitoring EA, automatic recovery controller or proof of profitability. Use the heartbeat and alert guide for operational monitoring.

1. Freeze the account and run scope

Create a manifest identifying broker server, account, live or demo mode, account currency and standard or cent units. Record the EA build, input-file version, run identity, actual symbol suffixes, timeframe, review interval and cutoff. Keep credentials out of shared reports.

For this invented example, one known EA run trades EURUSD H1 on a USD account. The window is 08:00–12:00 on a declared broker clock. Opening balance and equity are $10,000 with no open positions. Ownership is known from the run manifest; the account also permits another identified owner. This is an accounting fixture, not a strategy rule set.

2. Preserve evidence for one cutoff

Save raw EA decision and request logs, Experts and Journal logs, the required account-history range, and open-order and account snapshots. Record collection times and source ranges. Keep original exports unchanged; a corrected or later snapshot gets another version. The log guide explains the terminal files.

Normalize clocks only with documented time bases and offsets. Preserve source event time separately from collector receipt time. Similar timestamps do not prove causality or latency. A changing live account is not an atomic snapshot: note records that changed during collection and reconcile them again against the declared cutoff.

3. Read MT4 pools and fields correctly

MODE_TRADES includes open market and pending orders; MODE_HISTORY includes closed orders and cancelled pending orders. A zero close time alone does not distinguish open market exposure from a pending order: inspect order type. Filter market BUY and SELL records explicitly before counting trades. Loaded history depends on the terminal's Account History range.

OrderSelect() copies order data into the program; select again before relying on fresh fields. History row position is not guaranteed chronological order. Sort an export using explicit timestamps and identifiers, retain ties and provenance, and do not infer a decision sequence from terminal row order.

4. Match decisions, attempts and broker orders

The table covers the target EA only. D000 is logged at 08:00 and order 500 closes at 08:30. D001 is logged at 09:00 and order 501 closes at 10:15. D002 at 10:00 explicitly records no signal. D003 at 11:00 opens order 502, still open at the 12:00 cutoff. Each attempted entry has one unique matched broker order in this fixture.

DecisionLogged signalLocal request evidenceBroker ticketAudit classification
D000SELLQ0 · acknowledged500Matched · closed
D001BUYQ1 · timeout 128501Matched · closed
D002No signalNo request—Documented skip
D003SELLQ3 · acknowledged502Matched · open

There are 4 logged decisions, 3 entry attempts and 3 matched orders: 2 closed and 1 open. Do not report the open order as missing or the no-signal decision as a rejected order. These denominators are different. The illustrative times and directions do not define an entry strategy.

5. Resolve a timeout before another attempt

Error 128 means a trade timeout; it does not confirm that the broker rejected the request. In the constructed sequence below, BUY order 501 exists before the local timeout returns. Reconcile current market orders, pending orders and history, using the declared account and uniquely matching request evidence, before deciding whether a retry is permissible.

Invented events on one normalized broker-clock basis: Q1 sent at 09:00:02; order 501 opened at 09:00:03; local timeout 128 returned at 09:00:05; order 501 observed and matched at 09:00:10. The timeout is not evidence of rejection. This constructed timeline does not measure real network latency or promise a reconciliation time.
Invented events on one normalized broker-clock basis: Q1 sent at 09:00:02; order 501 opened at 09:00:03; local timeout 128 returned at 09:00:05; order 501 observed and matched at 09:00:10. The timeout is not evidence of rejection. This constructed timeline does not measure real network latency or promise a reconciliation time.On a narrow screen, scroll the diagram horizontally.

Time and symbol alone are weak matches when concurrent orders exist. If a unique result cannot be established, mark the request unresolved and prevent an improvised duplicate entry. Follow the existing account-risk policy for operational escalation and current protection; the audit itself authorizes neither liquidation nor looser risk limits.

6. Attribute ownership and order lineage

Match broker account, ticket, symbol, run records and the documented Magic Number convention. A Magic Number is not an EA-version stamp, and a ticket is not a universal identifier across brokers and accounts. Collisions, missing manifests and manual interventions require investigation, not a convenient assignment to the target EA. Review portfolio attribution when owners share an account.

One history row need not equal one independent strategy decision. Partial closes, remainder records and close-by operations require the broker's actual documented lineage. Track original and closed volume without double counting, retain links and corrections, and keep unresolved ownership visible. This example has no partial closes or pending orders.

7. Add signed booked costs exactly once

All table amounts are USD. For a selected closed order whose costs are recorded in these fields, booked net is OrderProfit() + OrderCommission() + OrderSwap(). Price P/L excludes commission and swap. Add their actual signed values; do not subtract a negative charge again. Order 602 belongs to the other known owner and closes at 11:30.

TicketOwnerPrice P/LCommissionSwapBooked net
500Target EA−25.00−2.000.00−27.00
501Target EA+40.00−2.00−1.00+37.00
602Other owner+8.00−1.000.00+7.00

The target EA's closed net is +$10; the other owner's is +$7. Actual fill prices already contain their execution and spread effect: do not deduct a hypothetical spread or slippage allowance again from booked results. A separately posted fee belongs on its own ledger line exactly once, not also in the order total. See the trading-cost guide.

8. Bridge the ledger to balance and equity

A $500 deposit at 08:45 is an external cash flow. With no withdrawals, credits or additional fees, ending balance is $10,517: opening $10,000 plus the deposit and closed net +$10 and +$7. At 12:00, order 502 has floating price P/L −$18; its current commission and swap are both zero. There are no other open positions or adjustments, and observed equity is $10,499.

Excluding the deposit gives whole-account cash P/L −$1. The target EA's marked result is −$8, combining closed +$10 with open −$18; adding the other owner's +$7 gives the same account −$1. This is a money reconciliation, not a percentage or time-weighted return. In real accounts, fee posting, credits and equity treatment vary by server: verify actual broker equity and its components rather than assuming this simplified bridge always applies.

All bars use the same USD scale and zero. Target EA closed net +$10, another owner's closed net +$7 and the open position's floating price P/L −$18 combine to whole-account cash P/L −$1 after excluding the $500 deposit. Balance is $10,517 and observed equity $10,499. No open commission, swap or other adjustments apply in this simplified example. Cash P/L is not a percentage return.
All bars use the same USD scale and zero. Target EA closed net +$10, another owner's closed net +$7 and the open position's floating price P/L −$18 combine to whole-account cash P/L −$1 after excluding the $500 deposit. Balance is $10,517 and observed equity $10,499. No open commission, swap or other adjustments apply in this simplified example. Cash P/L is not a percentage return.On a narrow screen, scroll the diagram horizontally.
Optional: reproduce the signed USD ledger

Closed order calculations: 40 − 2 − 1 = +37; −25 − 2 + 0 = −27; 8 − 1 + 0 = +7. Target EA closed net: 37 − 27 = +10. Balance: 10,000 + 500 + 10 + 7 = 10,517. Equity: 10,517 − 18 = 10,499. Whole-account cash P/L: 10,499 − 10,000 − 500 = −1. Target EA marked result: 10 − 18 = −8. All amounts are USD; decimal points and thousands commas use English numeric notation.

9. Keep missing evidence unknown

An empty trade history does not prove there was no signal. A documented skip requires decision-level evidence that the EA actually exposes. An EX4 file or an external observer cannot automatically reveal internal skipped decisions. If the vendor supplies no such log, report the coverage limit. Do not replace the trading EA on its chart just to attach an observer.

Missing history, stale snapshots, unmatched requests and unexplained balance differences are unknowns to investigate. They are not zero losses or clean execution. Preserve the raw precision; round only for display. Reconcile differences in account-currency units and record the explanation, source and correction version. The demo-versus-live guide covers additional comparison limits.

10. Sign off evidence before performance review

A complete reconciliation supports a later equity and drawdown review; it does not validate the EA's edge. A clean small sample is still a small sample. No universal number of days or trades establishes reliable forward performance. Freeze strategy and configuration changes as separate run versions rather than rewriting the past.

Preserve a cutoff snapshot, verify scope and source coverage, match decisions and broker orders, then reconcile booked money and open exposure. Complete evidence may be signed off for performance review. Missing or ambiguous evidence holds that sign-off and requires investigation. Operational actions follow the existing account-risk policy; this diagram does not execute orders.
Preserve a cutoff snapshot, verify scope and source coverage, match decisions and broker orders, then reconcile booked money and open exposure. Complete evidence may be signed off for performance review. Missing or ambiguous evidence holds that sign-off and requires investigation. Operational actions follow the existing account-risk policy; this diagram does not execute orders.On a narrow screen, scroll the diagram horizontally.
  1. Is the account, run, currency, clock basis and cutoff explicit?
  2. Are source ranges complete and every decision, request and broker record accounted for or visibly unresolved?
  3. Are ownership, volume lineage and signed costs attributed without duplication?
  4. Do cash flows, booked balance, open exposure and observed equity reconcile?
  5. Is performance sign-off held wherever evidence remains missing or ambiguous?

Save the manifest, raw exports, matched ledger, coverage gaps and review decision together. Continue operational monitoring under the existing risk policy. This audit offers no automated order management, guaranteed alert delivery or loss ceiling, and it does not authorize a new live allocation.

11. Questions about live reconciliation

Does a timeout mean that the order failed?

No. A timeout leaves execution status uncertain. Check the broker's open, pending and historical records against the request before any retry; otherwise a duplicate order may add exposure.

Is the history-order count the number of completed trades?

Not by itself. The loaded range may be incomplete, and history includes cancelled pending orders. Filter order type and reconstruct partial-close lineage before defining a trade count.

Does positive closed EA profit mean the account gained money?

No. Open losses, other owners, costs and external cash flows affect the interpretation. In this example the target EA closed +$10, but its marked result is −$8 and whole-account cash P/L is −$1 after excluding the deposit.

Does a fully matched ledger prove future profitability?

No. It establishes traceable accounting for the covered period and sources. Forward validation still requires a fixed protocol, adequate relevant evidence and honest treatment of uncertainty and strategy changes.

12. Sources and scope

Official references: MQL4 OrderSelect, order pools and copied fields, MQL4 OrderProfit and excluded costs, and MQL4 OrdersHistoryTotal and loaded history. Sources checked on 2026-10-18. Platform documentation describes fields and behavior; it does not certify this audit or any EA.

All decisions, tickets, timestamps and money amounts here are invented teaching values. The diagrams are precise illustrations of those assumptions, not original tester reports or verified live performance. No profitability, suitable risk level, guaranteed execution or future result is claimed.