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
Backtest results (H1, about 1 year)
| Symbol | P&L | Annual | Max DD | Trades | Win rate | Sharpe | Recovery | Losing streak | Per trade | Status |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| GBPUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| USDJPY | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| XAUUSD | 0.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
Parameters
| Parameter | Default | Description |
|---|---|---|
Symb0-Symb11 | EURUSD/USDCHF/USDJPY/USDCAD/AUDUSD/EURGBP/EURAUD/EURCHF/GBPCHF/GBPUSD/GBPJPY/EURJPY | 12 currency pair symbols |
Trade0-Trade11 | true/false/... | Allow trading toggle per symbol |
Per0-Per11 | 50/100 | SMA period per symbol |
ApPrice0-ApPrice11 | PRICE_CLOSE | SMA applied price type per symbol |
MaMethod0-MaMethod11 | MODE_SMA | Moving average method per symbol |
StLoss0-StLoss11 | 0 | Stop loss in points per symbol (0=no stop loss) |
TkProfit0-TkProfit11 | 0 | Take profit in points per symbol (0=no take profit) |
Lots0-Lots11 | 1/0.1 | Trading lot size per symbol (overridden by Money_M) |
Slippage0-Slippage11 | 30 | Slippage tolerance per symbol |
Similar Trend Following EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.