The gap between a strategy that worked in the tester and one that bleeds in live trading is often a single parameter nobody noticed changed. Before you push an EA live, diff the two set files — the one you validated and the one you're about to run — and make every difference a deliberate decision, not an accident.
Why deployments drift
A set file is just a list of key=value lines, and it drifts for boring reasons: you tuned lot size for a demo and forgot to raise it, a prop firm's rules forced a tighter stop, you copied last quarter's file as a starting point, or MetaTrader re-saved the set with a subtly different value after an input change. None of these announce themselves. The EA loads whatever the file says and trades it, silently, with real money.
Every difference between your validated set and your live set is either intentional or a bug. There is no third category — so review the list until every line is accounted for.
The parameters that actually move risk
Not all differences matter equally. A changed comment string is noise; a changed lot size is your account. Scan hardest for the inputs that scale exposure or change behaviour:
- Position sizing —
Lots,RiskPercent,MaxTrades. These multiply directly into drawdown. - Protective levels —
StopLoss,TakeProfit,TrailingStop. A wider stop changes your loss per trade and your whole risk-reward. - Execution guards —
MaxSpread,Slippage. Loosen these and the EA takes fills it would have refused in the test. - Trading windows and filters — session hours, a
NewsFiltertoggle. Turning a filter off changes which trades exist at all. - Identity —
MagicNumber. This one should differ between deployments so they don't collide, but confirm the new value is unique across the account.
A worked diff
Say deployment A is your backtested set and B is the prop-account version. A field-by-field comparison surfaces this:
Lots:0.10→0.05— intentional, the prop account is smaller. Keep.MaxSpread:25→18— intentional, prop rules are stricter. Keep.TrailingStop:120→90— was this deliberate? It changes exit behaviour and wasn't in your test. Flag it.RiskPercent:1.5→1.0— intentional de-risking. Keep.MagicNumber:20501→30777— correct, must differ. Keep.NewsFilter: absent in A,truein B — a parameter that only exists on one side. Either B runs a newer EA build, or A never tested this behaviour. Investigate before trusting the comparison.
Two of six differences here are silent risks: a trailing stop you never validated, and a filter that changes the trade universe. Everything else is a choice you can defend. That is exactly the review you want to do before going live, not after the first bad week.
Gotchas when comparing at scale
- Keys present on only one side are the dangerous ones. A changed value is obvious; a parameter that exists in the live set but not the tested one — or vice versa — means the two EAs may not even be the same build.
- Set-file metadata pollutes a raw text diff. MT5 appends optimization ranges and flags after
||on each line; MT4 instead stores them on separate lines with a,F/,1..nsuffix. A plain text compare screams "everything changed" over metadata that doesn't affect trading. Compare the values, not the trailing junk. - Comments and blank lines are noise. Lines starting with
;or#aren't parameters — ignore them or they drown the real signal. - Type and locale traps.
1.0versus1,0, ortrueversus1, can be the same intent stored differently — or a genuine change. Read them, don't assume. - Duplicate keys. If a key appears twice in one file, the last value usually wins — know which one your platform actually loads.
Use the comparator
The EA Deployment Comparator makes this a two-paste job. Drop your validated set into Deployment A and your go-live set into Deployment B; it parses each side into a key-to-value map, strips the || metadata and comment lines when the 'Ignore optimization metadata' option is enabled, and lists every parameter that is Changed, Only in A, or Only in B. A running total tells you how many real differences exist and whether the two are safe-to-go-live identical — so nothing changes silently between the test that convinced you and the account that pays for it.
Takeaway
Never assume two set files match because they came from the same EA. Diff them, sort the differences into intentional versus accidental, pay special attention to sizing, stops and any parameter that exists on only one side, and only deploy once every line is accounted for. The differences you don't check are the ones that cost you.