Why EA Results Differ Between Brokers
Run the same Expert Advisor with identical inputs on live accounts at two brokers and the two trade histories will not match — sometimes they barely overlap. That is rarely a malfunction: the EA is deterministic, but its inputs are not, because each broker supplies its own server clock, price feed, costs and symbol rules. Each of those mechanisms is unpacked here with concrete numbers — starting with the least obvious one, the server's GMT offset — along with a checklist for comparing two accounts on equal terms.
Key takeaways
- A different server GMT offset cuts H1, H4 and daily candles at different instants, so a bar-based EA literally computes its signals from different bars at each broker.
- Spread differences change behaviour, not just cost: maximum-spread filters skip entries, and stops-level minimum distances can reject stop placement or trailing modifications at one broker only.
- Commission and swap differences are small per trade but apply to every trade and every held night, so they compound into a steady gap on identical signals.
- Symbol specifications — digits, contract size, naming suffixes, freeze levels — silently change what point-based inputs and hard-coded names mean.
- Tick feeds are broker-specific: marginal stop touches and tick-level logic fire at one broker and never trigger at the other.
- Compare fairly with the same period side by side, a forward record per broker, and each account's history isolated by the EA's magic number.
Deterministic code, non-deterministic inputs
An Expert Advisor is just code: feed it the same prices, the same clock and the same account conditions and it will always make the same decisions. Run it with identical settings on live accounts at two brokers, though, and after a month the two histories disagree — different entries, different exits, sometimes a different trade count entirely. The code did not change; every input did.
This is a separate question from why live results lag the Strategy Tester, which the backtest-vs-live guide covers. Here both accounts are live, so every divergence must come from something the brokers supply differently: the server clock, the quotes, the costs and the symbol rules. Seven mechanisms do most of the work — and the least obvious one does the most.
The server clock cuts different candles
Every candle in MetaTrader is cut by the broker’s server clock. A broker running GMT+3 starts each new H1, H4 and daily bar at a different instant than a broker running GMT+0 — the same stream of ticks, sliced at different points. Where those offsets come from is explained in the server time guide; what matters here is the consequence. Most EAs are bar-based: they evaluate once per new bar, read the previous bar’s open, high, low and close, and compute indicators from series of bar closes. Shift the boundaries by three hours and all of those values change — a 20-period average of H4 closes becomes an average of different numbers, and yesterday’s high can belong to a different day.
One tick stream
GBP/USD rallies late in the US session, then drifts higher overnight
Two day boundaries
Broker A (GMT+3) starts its new daily bar at 21:00 UTC; Broker B (GMT+0) at midnight
Two previous-day highs
A: 1.2754 — the late rally falls into the new day. B: 1.2779 — it stays in yesterday's bar
Two decisions
Price touches 1.2760: a breakout EA buys at A and stays flat at B
Time filters compound the effect. An input like “trade 09:00–17:00” runs in server time, so the same setting trades different UTC hours — and therefore different liquidity — at each broker. The two accounts can even drift in and out of alignment twice a year, as daylight-saving transitions move one server’s offset and not the other’s.
Spread feeds the logic, not just the bill
Spread differences obviously change costs, but for an EA they also change behaviour. Many EAs carry a maximum-spread filter — for instance, skip the entry if the spread exceeds 12 points. At a broker averaging 0.8 pips during the EA’s active hours, nearly every signal passes; at one averaging 1.3 pips and widening past 2 around rollover, a meaningful share of entries is silently skipped. The trade counts diverge before a single fill differs.
Stops levelsare stricter still. Each broker sets a minimum distance, in points, at which stop loss, take profit and pending orders may be placed or modified. With a stops level of 0, a 3-pip trailing stop tightens freely; with a stops level of 40 points, the same modification request is rejected every time it comes within 4 pips of the market. The EA’s exit logic effectively runs on one account and fails on the other — identical code, different broker rule.
Commission and swap compound quietly
Commission and swap are set per broker per symbol, and unlike a one-off misfire they apply to every trade and every held night. Individually trivial, they accumulate into a steady gap between two accounts trading the same signals.
An illustrative month of identical trades
- The EA closes 90 round trips at 0.5 lots on GBP/USD at both brokers.
- Commission — Broker A: 90 × 0.5 × $5.50 = $247.50. Broker B: 90 × 0.5 × $8.00 = $360.00.
- About 30 position-nights are held through rollover; swap long is −4.8 points at A and −8.3 points at B (≈ $0.50 per point at 0.5 lots).
- Swap — A: 30 × −$2.40 = −$72.00. B: 30 × −$4.15 = −$124.50.
- Identical trade list, ≈ $165 of divergence in a month before any difference in fills.
Neither line decides anything on its own — the broker charging the higher commission may quote the tighter spread. Only the all-in cost per round trip, with every component converted to the same unit, is comparable across accounts.
Fills, requotes and the EA's trading hours
How an order becomes a fill depends on the broker’s execution model — the dealing-desk and STP/ECN mechanics are mapped out in the broker execution guide. For an EA, the practical difference is the failure mode: market execution converts a moved price into slippage, while instant execution can answer with a requote that the EA must handle or lose the entry. Retry logic that gives up after two attempts produces missed trades on one account that simply never existed on the other.
Liquidity is also hour-specific. An EA active in the thin hour around rollover might average 0.2 pips of slippage at one broker and 0.6 at another, while the same comparison at the London open could lean the other way. Slippage is a property of broker, symbol and hour together — exactly the combination an EA’s schedule concentrates.
Symbol specifications and the feed itself
Each broker publishes its own specification per symbol, and an EA inherits every line of it:
Digits: 4 vs 5
A 200-point input is 20 pips on a five-digit quote and 200 pips on a four-digit one. Modern EAs usually normalise for digits; older code applies the raw number and trades a radically different geometry.
Contract size & lot step
Risk-based sizing divides by tick value and rounds to the lot step. A different contract size or a coarser step rounds identical risk to different volumes — same signal, different exposure.
Symbol names & suffixes
GBPUSD at one broker is GBPUSD.r or GBPUSDx at another. A hard-coded name can stop the EA from running at all — or attach it to a different variant of the instrument with its own spread and swap.
Freeze level
Inside the freeze distance, orders that are about to trigger cannot be modified or deleted. A wider freeze level blocks last-moment adjustments that another broker happily accepts.
Underneath the specification sits the feed itself. Each broker aggregates quotes from its own liquidity providers, so tick density and the exact micro-highs and lows differ. A buy stop at 1.27555 fills at a broker whose feed prints a high of 1.27562 and never triggers where the move tops out at 1.27549. Tick-level logic — tick counters, very tight breakouts — sees those differences amplified, because it consumes the feed at its rawest.
One EA, two brokers, side by side
| Variable | Broker A (illustrative) | Broker B (illustrative) |
|---|---|---|
| Server offset | GMT+3 | GMT+0 — every H4 and daily bar cut 3 hours apart |
| Average spread, EA hours | 0.8 pips | 1.3 pips — spread filter skips entries |
| Commission, round turn per lot | $5.50 | $8.00 |
| Swap long, per night | −4.8 points | −8.3 points |
| Stops level | 0 points | 40 points — trailing modifications rejected |
| Resulting month | 104 trades, exits as designed | 91 trades, later trailing exits, higher cost per trade |
All numbers above are illustrative, and the direction could just as easily reverse — Broker B could quote the tighter spread while Broker A enforces the awkward stops level. The point is structural: with this many independent inputs, matching results would be the surprise. How visible the divergence is scales with the EA’s average profit per trade — a strategy netting 2 pips per trade feels every mechanism, one netting 30 shrugs most of them off.
Comparing two accounts fairly
A fair comparison controls everything the brokers do not, so that whatever remains is the genuine broker effect:
- Same window, same build: compare identical calendar periods with the same EA version and inputs, and note each server's GMT offset for the period.
- Keep a forward record per broker rather than extrapolating one account's results to the other.
- Give the EA a unique magic number on each account so its trades can be isolated from anything else running there.
- Compare trade lists before totals: entries present on one account and missing on the other point to candle boundaries, spread filters or rejections; matching entries with different outcomes point to costs and fills.
- Normalise costs into one figure — spread, commission, swap and slippage in pips per round trip — before judging anything else.
- Scale expectations to the edge: the smaller the average profit per trade, the larger the divergence that counts as normal.
Run that way, the comparison stops being an argument about which account is “right” and becomes attribution. Reviewing your own synced MetaTrader accounts side by side — the EA’s trades isolated by magic number on each — turns “it behaves differently over there” into a short list of measured causes. No broker ranking follows from that, and none is intended; what follows is an accurate picture of what your EA actually does in each place it runs.
Frequently asked
Can a GMT-offset difference really change which trades an EA takes?
Yes, for any bar-based logic. H1, H4 and daily candles are cut on the server clock, so two offsets produce bars containing different ticks — different highs, lows, closes and indicator values. An EA that evaluates on bar open or reads previous-bar levels is fed different numbers at each broker and can legitimately reach different decisions. Tick-by-tick logic is less exposed to the boundaries themselves, though it meets feed differences instead.
Why does the same EA trade more often at one broker than another?
The usual suspects sit on the entry side: a maximum-spread filter skipping signals where the spread runs wider, requotes exhausting the EA's retry logic, stops-level rules rejecting pending orders placed too close to the market, and marginal signals that one broker's tick feed triggers and the other's never quite touches. Comparing the two trade lists entry by entry shows which one applies.
Which EA inputs are worth reviewing when running it on a new broker?
Anything expressed in points (four- and five-digit quotes interpret the same number very differently), hard-coded symbol names (suffixes differ between brokers), time filters (server offsets differ, so the same hours cover different market sessions), and distance-based features such as trailing stops checked against the new broker's stops and freeze levels. Values that were right at one broker can mean something else at the next.
How do I work out which mechanism is causing a divergence?
Line up the two trade lists for the same period. Trades that exist on one account but not the other point to candle boundaries, spread filters or rejected orders; trades that match but end differently point to spread, commission, swap, slippage or trailing-stop behaviour. Attributing each difference to a mechanism is far more useful than comparing the two bottom lines.
Related guides
How Broker Choice Affects Trade Execution
Dealing desk vs STP/ECN mechanics, where execution differences hide, and what your own trade history can measure.
Why Live EA Results Differ From Backtests
Spread, slippage, latency, data and downtime — the structural reasons live EA results diverge from the Strategy Tester.
MetaTrader Server Time Explained
Why MT4/MT5 charts and history run on broker time, the GMT+2/+3 convention, and converting timestamps to UTC or local.
Related free tools
Free, no login required.
Related NuvoraSync features
Sources & further reading
- MetaTrader 5 Help — trading platform user guide — reference documentation for charts, symbol specifications and order handling in the terminal.
- MQL5 Documentation — the language reference behind EA behaviour, including symbol properties such as stops and freeze levels.
Want to analyze your own MetaTrader account data automatically?
NuvoraSync is a read-only MetaTrader journal and analytics workspace. Connect MT4 or MT5 once and your trades, drawdown and performance update on their own — no manual entry, no signals, just your own data.
This article is for educational purposes only. It does not provide trading signals, investment advice, financial recommendations, broker recommendations or trade execution. NuvoraSync does not recommend or rank brokers.