EA-158 · Trend Following

Multik_SMA_Exp

A multicurrency Expert Advisor that trades up to 12 currency pairs simultaneously using SMA slope direction. It generates buy signals when the SMA is rising for two consecutive periods and sell signals when the SMA is falling, with position management handled independently per symbol.

Open the interactive view (equity curve, symbol switch)

Key facts

RiskHigh risk
Blow-up riskLow
Rating★★☆☆☆
TypeTrading EA
TimeframesM15, H1, H4, D1
IndicatorsSMA
AuthorCopyright © 2010, Nikolay Kositsin

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD0.00%0.00%0.00%0—————Not convertible yet
GBPUSD0.00%0.00%0.00%0—————Not convertible yet
USDJPY0.00%0.00%0.00%0—————Not convertible yet
XAUUSD0.00%0.00%0.00%0—————Not convertible yet

Why this EA never traded: no entry rule survived the conversion.

Converted from MQL5 to Python and run with the same rules for every EA. Positions use MT5 lot sizes (100,000 units per FX lot, 100 oz per gold lot) with 1:100 leverage, one order at a time, and a stop-out below 10% of the starting balance. Sharpe is computed from the equity curve. Results marked as unreliable are shown for completeness only.

Blow-up risk: No blow-up pattern found

  • Has no stop loss or trailing stop

On its own this is not a typical blow-up pattern, and the account was not stopped out in our backtests. That is not a guarantee: any EA can lose money.

High: stopped out in our backtest, or martingale/grid sizing without a stop loss. Elevated: martingale or grid sizing with a stop loss, or several positions at once without a stop loss. What the label means and what we found →

Strategy analysis

The core strategy of this EA is based on the slope change of the Simple Moving Average (SMA) to determine trend direction. Entry conditions: when the SMA differences for bars 2-3 and bars 1-2 are both positive (SMA rising for two consecutive periods), a buy signal is generated; when both differences are negative (SMA falling), a sell signal is generated. Exit conditions: when the SMA difference for bars 1-2 turns negative, the long position is closed; when it turns positive, the short position is closed. Position management is handled independently per symbol, with a maximum of one position per symbol checked via PositionSelect. Money management uses dynamic lot sizing via the Money_M function, calculating lot size proportionally from free margin and clamping between 0.1 and 5 lots. The EA supports up to 12 currency pairs running simultaneously, each with independent parameter configuration for period, applied price, and MA method.

Strengths

  • Simultaneous multi-currency trading diversifies single-symbol risk and increases strategy variety
  • Independent parameter configuration per symbol allows flexible adaptation to different currency pair characteristics
  • Signal calculation only on new bars avoids per-tick recalculation, reducing resource consumption
  • Uses iMA indicator handle approach, conforming to MQL5 standard indicator calling pattern

Weaknesses

  • Stop loss and take profit parameters are defined but hardcoded to 0 in the open functions, making SL/TP effectively useless
  • The Money_M function completely overrides user-input Lots parameter, rendering manual lot settings ineffective
  • Signal naming is confusing (DnSignal actually triggers buy), severely hurting code readability
  • PositionSelect by symbol cannot handle multiple positions on the same symbol
  • Hardcoded ORDER_FILLING_FOK may cause order rejection by some brokers

Possible improvements

  • Fix BuyPositionOpen and SellPositionOpen functions to properly pass StopLoss and TakeProfit parameters to request.sl and request.tp instead of hardcoding them to 0
  • Remove the Money_M dynamic lot function or make it optional, so the user's Lots parameter actually takes effect, avoiding contradiction with input parameters
  • Fix signal variable naming (DnSignal to BuySignal, UpSignal to SellSignal) to improve code readability and maintainability
  • Add position direction checks before opening trades to confirm no same-direction position exists, preventing duplicate entries

Risk assessment

Overall risk: High risk

  • Stop loss and take profit are completely disabled (hardcoded to 0), every trade is unprotected and extreme market moves could cause massive losses
  • Money_M calculates lots dynamically based on free margin, lot size inflates during profits amplifying risk, potentially leading to account blow-up
  • Multi-symbol simultaneous trading without stop losses creates compounded risk when correlated currency pairs move in the same direction

Evaluation scores

Code quality2.0
Strategy logic2.0
Risk management1.0
Robustness2.0
Innovation1.0
Documentation1.0
Overall1.5

Parameters

ParameterDefaultDescription
Symb0-Symb11EURUSD/USDCHF/USDJPY/USDCAD/AUDUSD/EURGBP/EURAUD/EURCHF/GBPCHF/GBPUSD/GBPJPY/EURJPY12 currency pair symbols
Trade0-Trade11true/false/...Allow trading toggle per symbol
Per0-Per1150/100SMA period per symbol
ApPrice0-ApPrice11PRICE_CLOSESMA applied price type per symbol
MaMethod0-MaMethod11MODE_SMAMoving average method per symbol
StLoss0-StLoss110Stop loss in points per symbol (0=no stop loss)
TkProfit0-TkProfit110Take profit in points per symbol (0=no take profit)
Lots0-Lots111/0.1Trading lot size per symbol (overridden by Money_M)
Slippage0-Slippage1130Slippage tolerance per symbol

Similar Trend Following EAs

Backtests are historical simulations and do not guarantee future results. Not financial advice.

Get the weekly Arena report

One email a week: ranking changes, new signals and new research. No spam; unsubscribe any time.