Engineering note · Broker execution contract
Why the Same EA Can Behave Differently at Another Broker
Separate symbol rules, spread, fill policy and rejected-order behavior from strategy logic before comparing one EA across brokers.

Buyer question
Why does the same EA behave differently after moving to another broker?
First boundary
Freeze symbol and execution assumptions before changing the strategy.
Acceptance rule
One signal is comparable only when both runs expose the same requested order and every broker-side difference.
The complete answer
Identical source code does not create an identical execution environment. An Expert Advisor decides from the prices and symbol properties exposed by its terminal, then submits an order under that broker's validation and filling rules. Change any of those inputs and the observable trade sequence can change without a defect in the signal rule.
The clean comparison starts with one frozen strategy decision: symbol, direction, requested volume, entry rule, stop rule and decision timestamp. Each run must then record the broker-specific values used to validate and execute that request. Without that evidence, a different trade count or entry price cannot be assigned safely to strategy logic, data, transaction cost or order handling.
Source and public evidence
Freeze the broker execution contract
Treat these values as test inputs, not background details. Export them at startup and again when the terminal reports a change. Store them beside the order decision so a comparison can be reproduced later.
| Boundary | Evidence to freeze | Why it changes the result |
|---|---|---|
| Symbol rules | Tick size, tick value, contract size, volume minimum and step, stop and freeze distance | The same requested order can be valid at one broker and rejected or rounded at another. |
| Transaction cost | Bid, ask, spread, commission and swap convention | A strategy can cross its entry or exit threshold at a different effective price. |
| Fill policy | Market execution, allowed filling modes, partial fills and price deviation | The order path can change even when the signal timestamp is identical. |
| Failure behavior | Error code, retry rule, backoff, reconciliation key and terminal state | A hidden retry or silent parameter change turns one decision into a different experiment. |
Warning signs in a weak comparison
- The test compares account profit but does not expose the requested and accepted prices.
- Volume or stop values are rounded automatically and the changed request is not logged.
- A rejected order is retried with different parameters without a stable decision identity.
- The two terminals use different symbol suffixes, sessions or contract sizes.
- Spread, commission and swap are collapsed into one unexplained result number.
- Historical data and live execution are discussed as if they were the same boundary.
Three acceptance tests
Run these before editing strategy logic. Each test has one declared input and one observable pass condition.
Symbol-spec validation
Input: Send the same declared entry against two recorded symbol specifications.
Pass: The log records tick size, volume step, stop distance and the exact validation result before submission.
Bounded execution-cost scenario
Input: Replay one frozen signal under a declared spread and slippage allowance.
Pass: Requested price, accepted price, spread, commission and total execution cost are reported separately.
Invalid-request rejection
Input: Force one invalid stop distance and one invalid volume step.
Pass: Both requests end in a recorded rejection. The EA does not silently change the order or retry without a named rule.
What belongs in scope
A useful repair or port freezes the target platform and version, exact symbol mapping, volume and price precision, stop-distance rules, allowed fill modes, spread and deviation limits, commission model, session and time-zone rules, and the terminal states for every rejection. The source code must be authorized and the acceptance run must stay on demo or replay unless live-account operation is separately controlled by the owner.
Keep strategy changes outside the first comparison. If the EA needs a new entry rule, risk rule or retry policy, specify that as a separate change after the original behavior is measured. Mixing an execution repair with a strategy rewrite removes the baseline needed to show what was fixed.
Write the execution assumptions before comparing results
The free Scope Builder turns platform, symbol, order-state and acceptance assumptions into one reviewable brief. Use it to separate strategy logic from the broker boundary before commissioning a repair or migration.
Build the free scope brief