Exp_MovingAverage_FN
This EA trades based on the MovingAverage_FN custom indicator, which applies a configurable Fourier noise filter to a smoothed moving average. It opens buy positions when the filtered MA turns upward and sell positions when it turns downward, with optional position closing on reverse signals. The strategy is a trend-following system using multiple smoothing methods and a Fourier-based noise reduction filter.
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
None of the usual blow-up patterns were found in the code, 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 trend following based on a Fourier noise-filtered moving average. Entry conditions are: open a long position when the indicator values show an uptrend at the SignalBar (Value[0]>Value[1] and Value[1]<Value[2]), and open a short position when the values show a downtrend (Value[0]<Value[1] and Value[1]>Value[2]). Exit conditions include StopLoss (default 1000 points) and TakeProfit (default 2000 points), plus optional closing on reverse signals controlled by BuyPosClose and SellPosClose parameters. Position sizing is managed through the MM parameter, where negative values represent fixed lot sizes and positive values represent a share of the deposit per deal. The money management uses either percentage-based or fixed lot modes, but lacks dynamic position adjustment mechanisms like scaling in or out. The strategy leverages the CXMA class supporting up to 10 smoothing methods (SMA, EMA, SMMA, LWMA, JJMA, JurX, ParMA, T3, VIDYA, AMA) and selects Fourier filter orders from 4 to 60 via the filter_mode enumeration, providing strong noise reduction capability.
Strengths
- Fourier noise filter effectively reduces market noise and minimizes false signals
- Supports 10 smoothing methods and multiple price types, offering high flexibility
- Independent buy/sell open and close permission controls allow fine-grained strategy management
Weaknesses
- Default StopLoss of 1000 points and TakeProfit of 2000 points are large, potentially exposing to significant drawdowns during volatile markets
- Lacks scaling in/out or trailing stop mechanisms, making money management relatively simplistic
- Depends on iCustom call to external MovingAverage_FN indicator, increasing deployment complexity and dependency
Possible improvements
- Add trailing stop functionality to lock in floating profits and reduce drawdown risk
- Add spread filter and trading session restrictions to avoid high-cost and low-liquidity periods
Risk assessment
Overall risk: Medium
- Fixed stop loss in points does not adapt to volatility differences across instruments, potentially being too wide for low-volatility assets
- When MM is negative, it is used directly as lot size without minimum/maximum lot validation
- No spread filter mechanism, so positions may still be opened during high-spread conditions
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
MM | -0.1 | Deposit percentage or fixed lot; negative value = lot size |
StopLoss_ | 1000 | Stop loss in points |
TakeProfit_ | 2000 | Take profit in points |
Deviation_ | 10 | Maximum slippage deviation in points |
BuyPosOpen | true | Allow buy position opening |
SellPosOpen | true | Allow sell position opening |
BuyPosClose | true | Allow closing long positions |
SellPosClose | true | Allow closing short positions |
InpInd_Timeframe | PERIOD_H4 | AroonSignal indicator timeframe |
FilterNumber | N44 | Fourier filter order (4-60) |
XMA_Method | MODE_JJMA | Smoothing method (SMA/EMA/SMMA/LWMA/JJMA/JurX/ParMA/T3/VIDYA/AMA) |
XLength | 12 | Smoothing depth (period) |
XPhase | 15 | Smoothing param; JJMA: -100 to +100, VIDYA: CMO period, AMA: slow MA period |
IPC | PRICE_CLOSE | Price constant type (close/open/high/low/median/typical/weighted etc.) |
SignalBar | 1 | Bar index for entry signal |
Similar Trend Following EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.