Expert_ABH_BH_CCI
This EA uses the CBH_BH_CCI custom signal filter, which combines the Commodity Channel Index (CCI) with a Moving Average to generate trading signals within the MQL5 Standard Library Expert Advisor framework. It employs fixed lot money management with no trailing stop, relying on the CCI-MA crossover momentum signals for entry and exit decisions.
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 | -6.76% | -5.90% | 10.03% | 138 | 43.80% | — | — | — | — | Same as other EAs |
| GBPUSD | -8.45% | -7.38% | 11.36% | 140 | 43.90% | — | — | — | — | Same as other EAs |
| USDJPY | -3.89% | -3.39% | 5.56% | 138 | 45.30% | — | — | — | — | Same as other EAs |
| XAUUSD | -99.63% | -99.01% | 99.78% | 37 | 62.20% | — | — | — | — | Same as other EAs |
On every market this backtest is identical to EA-315. The automatic conversion almost certainly lost what makes this EA different (a custom indicator, a filter or the money management), so these results are not ranked or counted.
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 strategy concept is based on combining the CCI momentum indicator with a Moving Average filter, where CCI identifies the degree of price deviation from its statistical mean and MA smooths the CCI values to reduce false signals. Entry conditions are generated by the CBH_BH_CCI filter, producing buy signals when CCI crosses above its MA line and sell signals when it crosses below, with signal strength required to exceed a threshold of 40 for opening and 20 for closing positions. Exit conditions rely on the signal threshold mechanism, closing positions when the reverse signal strength reaches the closing threshold, with support for pending orders that expire after 4 bars. Position sizing uses a fixed lot model (default 0.1 lots), which does not dynamically adjust position size based on account balance or equity. Money management employs CMoneyFixedLot with a percentage parameter set to 10%, but actual trade volume is determined by the fixed lot size, lacking dynamic risk adjustment mechanisms.
Strengths
- Uses the MQL5 Standard Library framework with clean, modular code structure that is easy to maintain and extend
- CCI combined with MA smoothing effectively reduces false signals from a single indicator, improving signal reliability
- Signal threshold mechanism (open 40/close 20) provides flexible signal filtering, avoiding trades on weak signals
- Supports pending orders with expiration, allowing entry at better prices under specific conditions
Weaknesses
- Stop loss and take profit are both set to 0, meaning no hard risk protection exists, potentially leading to massive losses in extreme market conditions
- Fixed lot money management ignores account size changes and cannot dynamically adjust positions based on risk
- No trailing stop (TrailingNone), profitable positions cannot lock in floating profits and may suffer profit drawdowns
- Relies on a single signal filter, lacking multi-timeframe or multi-indicator confirmation, resulting in insufficient strategy depth
Possible improvements
- Add reasonable default values for stop loss and take profit parameters to ensure every trade has hard risk protection
- Replace fixed lot sizing with dynamic position management (e.g., ATR-based or account risk-based calculation) to improve capital efficiency and risk control
- Introduce a trailing stop mechanism to protect floating profits and prevent winning positions from turning into losses
Risk assessment
Overall risk: High risk
- Stop loss and take profit are both 0, no hard risk floor exists, single trade loss is uncapped
- No trailing stop means profitable positions rely entirely on signal-based exit, potentially missing optimal exit timing
- Fixed lot sizing ignores account risk capacity, small accounts may be over-leveraged
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
Expert_MagicNumber | 7218 | EA magic number for order identification |
Expert_EveryTick | false | Execute trading logic on every tick |
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__PeriodCCI | 11 | CCI indicator period parameter |
Signal__PeriodMA | 5 | 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.