EA-311 · Momentum

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

CategoryMomentum
RiskHigh risk
Blow-up riskLow
Rating★★☆☆☆
TypeTrading EA
TimeframesM15, H1, H4
IndicatorsCCI, MA
AuthorMetaQuotes Software Corp.

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD-6.76%-5.90%10.03%13843.80%————Same as other EAs
GBPUSD-8.45%-7.38%11.36%14043.90%————Same as other EAs
USDJPY-3.89%-3.39%5.56%13845.30%————Same as other EAs
XAUUSD-99.63%-99.01%99.78%3762.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

Code quality4.0
Strategy logic3.0
Risk management1.0
Robustness2.0
Innovation2.0
Documentation2.0
Overall2.3

Parameters

ParameterDefaultDescription
Expert_MagicNumber7218EA magic number for order identification
Expert_EveryTickfalseExecute trading logic on every tick
Signal_ThresholdOpen40Open signal threshold [0...100], open when signal exceeds
Signal_ThresholdClose20Close signal threshold [0...100], close when signal falls below
Signal_PriceLevel0.0Trade execution price level, 0 for market execution
Signal_StopLevel0.0Stop loss level (points), 0 means no SL set
Signal_TakeLevel0.0Take profit points
Signal_Expiration4Pending order expiration (bars)
Signal__PeriodCCI11CCI indicator period parameter
Signal__PeriodMA5MFI MA smoothing period
Signal__Weight1.0Signal weight [0...1.0]
Money_FixLot_Percent10.0Money management percentage
Money_FixLot_Lots0.1Fixed trading lot size

Similar Momentum 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.