Overview
An Expert Advisor is a systematic trading strategy expressed as code. The quality of that code — the correctness of the trading logic, the completeness of the risk management, the robustness of the execution handling — determines whether the EA performs in live trading the way it was intended to. Many EAs that look profitable in backtesting fail in live trading not because the underlying strategy is wrong but because the implementation contains subtle errors that the backtest environment masked: lookahead bias, overfitting to historical data, execution assumptions that do not hold in live markets, risk controls that have edge-case failures, or operational fragility that causes the EA to behave incorrectly when connectivity or broker conditions change.
An EA strategy review is an independent technical assessment of an existing Expert Advisor — the MQL4, MQL5, or external strategy code — against the standard of what is required for reliable live trading. It examines the trading logic for correctness and internal consistency, the risk management for completeness and enforceability, the execution handling for robustness, and the operational characteristics for the resilience required in an always-on automated trading system.
The review is conducted from the perspective of someone who has no stake in the outcome being positive — whose interest is in finding the problems before live capital is exposed to them, rather than confirming that the EA is ready to trade. The most valuable finding in an EA review is the problem that would have caused a loss. The second most valuable finding is the design limitation that constrains performance in ways the strategy owner did not anticipate. A review that finds no significant problems is also valuable — it provides confidence that is grounded in examination rather than assumption.
We conduct EA strategy reviews for traders, systematic trading firms, signal providers, and prop firm challenge participants who want independent verification that their Expert Advisor implementation is correct and operationally sound before deploying it with real capital.
What an EA Strategy Review Covers
Trading logic review. The correctness of the signal generation, entry and exit logic, and trade management rules as implemented in code.
Signal implementation: whether the indicator calculations, pattern recognition logic, or other signal generation methods are implemented correctly. The moving average calculation that uses the wrong price type. The RSI that calculates over the wrong period because of an off-by-one error in the lookback. The pattern recognition that misidentifies patterns due to an incorrect comparison operator. The signal logic that produces the right output on the data it was tested on and the wrong output under conditions that appear rarely in the test dataset.
Entry and exit logic: whether the entry and exit conditions are correctly translated from the strategy specification into code. The condition that is intended to require both A and B but uses OR instead of AND. The exit condition that fires on the wrong bar because the close price check uses the current bar rather than the previous bar. The take profit and stop loss that are placed in pips rather than price when the broker uses a five-digit pricing convention.
Trade management: the rules that govern how open positions are managed — the trailing stop implementation, the partial close logic, the pyramid entry rules, the time-based exit. The trailing stop that does not trail correctly because the step size is implemented in the wrong units. The partial close that rounds to the wrong lot size. The time-based exit that does not correctly convert server time to the intended trading session boundary.
Filter logic: the market conditions filters that are supposed to restrict trading to favourable conditions — the spread filter, the volatility filter, the trend filter. The filter that is inverted, trading when it should avoid trading and vice versa. The filter that uses a fixed threshold appropriate for one instrument that does not translate correctly to a different instrument.
Multi-currency and multi-timeframe logic: for EAs that trade multiple instruments or reference multiple timeframes, the correct synchronisation of signals across instruments and timeframes. The higher-timeframe reference that returns the wrong bar because of how MetaTrader handles multi-timeframe data. The cross-instrument correlation logic that uses different bar timestamps across instruments.
Risk management review. The completeness and enforceability of the risk controls that protect the trading account.
Position sizing logic: the lot size calculation — fixed lot, percentage of balance, percentage of equity, risk-per-trade. The calculation that produces correct lot sizes across the full range of account sizes and instrument prices that the EA will encounter. The lot size that is not normalised to the broker's minimum lot step, causing order rejection. The percentage-of-equity sizing that uses the wrong equity reference when scaling out of a position.
Stop loss correctness: whether every trade has a stop loss, whether the stop loss is placed correctly according to the strategy's risk management rules, and whether the stop loss cannot be removed by subsequent trade management logic. The EA that places a stop loss on entry but the stop loss logic in a subsequent OnTick call removes it under specific conditions. The stop loss that is placed too close due to pip value calculation errors and triggers immediately.
Maximum position limits: the controls that prevent the EA from building a position beyond the intended maximum. The limit that checks before entry but not during pyramid entries, allowing an accidental accumulation beyond the limit if entries fire in rapid succession. The limit that applies to the number of trades but not the total notional exposure.
Drawdown enforcement: the maximum drawdown limit — whether it is calculated correctly (including floating losses), whether it fires before the limit is reached rather than after, and whether it correctly handles the case where a single trade's loss could exceed the daily loss limit. The daily drawdown that resets at midnight server time when the strategy owner expects it to reset at a different time.
Margin level protection: the minimum free margin check before order submission. The check that uses the wrong balance reference — total equity rather than free margin — and allows order submission when margin is insufficient. The margin check that is not present at all.
Execution handling review. The robustness of the order submission and management code.
Order submission error handling: the handling of order submission failures — the requote, the off-quotes error, the off-market error, the broker-busy error. The EA that retries immediately on error without a delay, hammering the broker with repeated submissions. The EA that does not retry at all and silently fails to enter a trade. The EA that retries indefinitely and can accumulate multiple positions if the initial order was actually filled.
Broker-specific handling: the handling of broker conventions that vary between brokers — the ECN versus market maker execution model, the five-digit versus four-digit pricing, the varying spread environments, the different order type availability. The EA that was developed on one broker's demo account and fails on a different broker's live account because of execution model differences.
Slippage and spread handling: the handling of variable spreads and slippage in live markets. The EA that was backtested with fixed spreads and that behaves incorrectly when the live market spread exceeds the expected maximum. The entry logic that places a limit order at a price that is already past because it was calculated on a different tick.
Order state management: the tracking of open orders across OnTick calls. The order that is counted multiple times because the order counting logic does not correctly exclude orders in the process of being closed. The order that the EA has lost track of because it was closed by a stop hit during a gap and the EA's internal state was not updated.
Multi-order management: for EAs that can have multiple simultaneous orders, the correct management of all orders — the closure logic that correctly identifies and closes only the intended orders rather than all orders of a specific type. The magic number usage that correctly distinguishes this EA's orders from other EAs running on the same account.
Backtesting validity assessment. The assessment of whether the backtest results represent a valid simulation of how the EA would perform in live trading.
Lookahead bias: the examination of the EA code for data access patterns that could introduce future data into historical decisions. The iBarShift call that returns the wrong bar index. The indicator that is calculated on the current unfinished bar and then read in a condition that is supposed to reflect the previous completed bar. The custom function that caches historical data incorrectly and returns future prices.
Testing methodology: the assessment of the testing approach — the data quality used (tick data versus 1-minute modelling), the spread settings (fixed versus variable), the initial deposit and lot sizing settings, the optimisation approach and the risk of overfitting. The backtest settings that produce inflated results compared to what live trading would achieve.
Out-of-sample performance: whether the EA has been tested on data outside the optimisation period and whether the out-of-sample performance is consistent with the in-sample performance. The strategy that performs well in the optimisation period and poorly on data outside it — the marker of overfitting.
Sensitivity analysis: whether the EA's performance is robust to small changes in the strategy parameters. The strategy that performs well with one specific parameter set but whose performance degrades significantly with parameter variations in any direction — the marker of curve fitting to the specific test dataset.
Operational resilience assessment. The behaviour of the EA under the operational conditions that live trading introduces.
Connectivity interruption handling: the EA behaviour when the connection to the broker is interrupted and restored. The position that was opened before disconnection and needs to be correctly identified and managed after reconnection. The pending order that was placed and may or may not have been triggered during the disconnection.
Terminal restart behaviour: the EA behaviour when MetaTrader is restarted — whether it correctly re-initialises, whether it correctly identifies existing positions from a previous session, whether it correctly handles the case where trading conditions have changed significantly during the downtime.
Market closure handling: the EA behaviour around weekend gaps, holiday closures, and unexpected market halts. The position held into the weekend that gaps significantly on Monday open. The stop loss that is set within the weekend gap and that fills at the Monday open price rather than the stop loss price.
Broker server restart: the MetaTrader behaviour during the broker's daily server restart and the EA response. The EA that loses its internal state during the server restart and re-enters positions that are already open.
VPS and timing considerations: the assumptions about execution timing that may not hold on a VPS with different latency characteristics than the development environment. The time synchronisation issues that cause bar open logic to fire at the wrong time.
Parameter and configuration review. The EA's configurable parameters and the settings appropriate for the intended use.
Parameter documentation: whether each configurable parameter is clearly documented — what it does, what values are appropriate, what the consequences of setting it too high or too low are. The parameter that is undocumented because the developer knew what it did but left no indication for anyone else.
Parameter interaction: the interactions between parameters where setting one changes the appropriate range for another. The risk percentage and maximum lot size that interact in a way that can cause the EA to take outsized positions when set to specific combinations.
Default settings: whether the default parameter values are appropriate for live trading or whether they represent aggressive settings from optimisation that would be unsuitable for a real account.
Broker-specific parameters: the parameters that need to be adjusted for different broker conventions — the magic number, the slippage tolerance, the lot normalisation settings. The guidance on how to configure the EA correctly for a specific broker's environment.
Review Output
An EA strategy review produces a structured findings report covering:
Critical findings. Issues that could cause significant losses or account damage — the stop loss that can be inadvertently removed, the risk calculation that produces incorrect lot sizes under specific conditions, the order submission loop that can create multiple positions. Critical findings require remediation before live trading.
Significant findings. Issues that will affect performance or reliability in live trading without the catastrophic loss potential of critical findings — the execution handling that is fragile under specific broker conditions, the edge case in the trade management logic that fires incorrectly, the backtesting methodology issue that makes the historical results unreliable. Significant findings should be addressed before scaling live trading.
Observations. Areas where the implementation is functional but could be improved — the code structure that makes future modifications error-prone, the lack of logging that makes diagnosing live trading problems difficult, the parameter sensitivity that suggests the strategy is overfitted. Observations for the strategy owner's consideration.
Positive confirmation. Where the implementation is correct — the risk controls that are correctly implemented, the execution handling that correctly manages broker errors, the signal logic that correctly translates the strategy specification into code. The confirmation that gives the strategy owner justified confidence in the reviewed components.
Technologies Covered
- MetaTrader 4 (MQL4) — Expert Advisor and indicator code review
- MetaTrader 5 (MQL5) — Expert Advisor, indicator, and script review
- Python — external strategy code that connects to MetaTrader via the MetaTrader5 library, file bridge, or socket bridge
- cTrader (cAlgo/C#) — cBot and indicator review
- Other platforms — custom platform implementations and multi-platform signal systems
Before Live Capital
The cost of an EA review is measured in hours of an engineer's time. The cost of the problems the review identifies — measured in the losses that would have resulted from those problems in live trading — is almost always significantly higher. An EA that looks profitable in backtesting and that has never been independently reviewed carries unknown risk. An EA that has been independently reviewed and whose known issues have been addressed carries known risk, which is manageable.
The right time for an EA review is before live capital is at risk — not after a problem has already occurred.