Expert_ABH_BH_MFI
This EA uses the MFI (Market Facilitation Index) indicator smoothed by a Moving Average as a momentum signal filter within the MQL5 Standard Library Expert framework. It opens and closes positions based on threshold values applied to the CBH_BH_MFI signal, with fixed lot sizing and no trailing stop. The strategy relies on the MFI indicator's ability to detect market momentum shifts combined with a MA filter to reduce noise.
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 | -2.95% | -2.57% | 8.79% | 1 | 0.00% | — | — | — | — | Too few trades |
| GBPUSD | +3.88% | +3.36% | 6.49% | 1 | 0.00% | — | — | — | — | Too few trades |
| USDJPY | +2.85% | +2.47% | 6.62% | 1 | 0.00% | — | — | — | — | Too few trades |
| XAUUSD | -57.50% | -50.69% | 76.89% | 130 | 48.50% | -0.10 | -0.75 | 5 | −$44.23 | Reliable |
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.
Against the other Momentum EAs with a reliable result on the same market: XAUUSD: better than 36% of 75
Month by month
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| XAUUSD | 54% | +78.86% 2026-08 | -52.81% 2026-02 |
From the backtest equity curve, sampled about every two days; only reliable results.
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 strategy concept is based on the Market Facilitation Index (MFI) indicator, using a moving average of MFI to identify shifts in market momentum direction. Entry conditions trigger when the CBH_BH_MFI signal value exceeds the opening threshold (default 40), and exit conditions trigger when the signal drops below the closing threshold (default 20), employing a 0-100 threshold system for signal filtering. Exit conditions rely entirely on signal threshold-based closing with no Stop Loss (StopLevel=0) and no Take Profit (TakeLevel=0) configured, which is a significant risk deficiency. Position sizing uses a fixed lot approach (default 0.1 lots) implemented by the CMoneyFixedLot class, without dynamic adjustment based on account balance or volatility. Money management uses a 10% percent parameter with fixed lots, lacking dynamic position sizing based on volatility or risk proportion. The overall strategy framework leverages the MQL5 Standard Library CExpert multi-filter signal architecture, but this EA only uses a single MFI filter, making the signal source relatively one-dimensional.
Strengths
- Uses the MQL5 Standard Library CExpert framework with clean, well-structured code that is easy to maintain and extend
- MFI indicator combined with MA smoothing effectively filters market noise and reduces false signals
- Threshold system (0-100) provides flexible signal strength control for tuning entry/exit sensitivity
- Framework supports multi-filter extension, making it easy to add additional signal sources for confirmation
Weaknesses
- Both Stop Loss and Take Profit are set to 0, providing no hard risk protection which could lead to catastrophic losses in extreme market conditions
- Relies on a single MFI signal filter only, making the signal source one-dimensional and lacking multi-dimensional market analysis
- Fixed lot money management cannot dynamically adjust position size based on market volatility or account risk
- No trailing stop mechanism (uses TrailingNone), meaning profitable positions cannot lock in floating gains
- Lacks spread filter and trading session filter, potentially opening positions under unfavorable conditions
Possible improvements
- Add Stop Loss and Take Profit parameters with at least a default SL to prevent extreme losses; consider ATR-based dynamic stop distance
- Add multi-timeframe confirmation or additional indicator filters (e.g., trend-direction MA, volume confirmation) to improve signal reliability
- Implement volatility-based (ATR) dynamic position sizing and trailing stop to replace the current fixed lot and no-trailing-stop approach
Risk assessment
Overall risk: High risk
- Stop Loss and Take Profit are both 0, providing absolutely no hard risk protection
- Single indicator signal source is prone to frequent false signals in ranging markets leading to consecutive losses
- No spread filter may result in unfavorable entries under high spread conditions
- Pending order expiration of only 4 bars may cause frequent triggering and expiration during low liquidity periods
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
Signal_ThresholdOpen | 40 | Open signal threshold [0...100], open when signal exceeds |
Signal_ThresholdClose | 20 | Close signal threshold [0...100], close when signal falls below |
Signal_PriceLevel | 0.0 | Trade execution price level, 0 for market execution |
Signal_StopLevel | 0.0 | Stop loss level (points), 0 means no SL set |
Signal_TakeLevel | 0.0 | Take profit points |
Signal_Expiration | 4 | Pending order expiration (bars) |
Signal__PeriodMFI | 37 | MFI indicator period |
Signal__PeriodMA | 11 | MFI MA smoothing period |
Signal__Weight | 1.0 | Signal weight [0...1.0] |
Money_FixLot_Percent | 10.0 | Money management percentage |
Money_FixLot_Lots | 0.1 | Fixed trading lot size |
Similar Momentum EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.