iCHO Trend CCIDualOnMA Filter
A multi-indicator trend-following EA that combines Chaikin Oscillator (iCHO) for money flow direction with dual CCI indicators for momentum confirmation, filtered through a Moving Average to determine the prevailing trend. It enters long positions when all indicators align bullish and short positions when all align bearish, providing a layered signal confirmation system.
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.02% | +0.02% | 0.62% | 90 | 38.20% | 0.04 | 0.03 | 6 | −$0.01 | Reliable |
| GBPUSD | -0.09% | -0.08% | 0.98% | 98 | 39.80% | -0.14 | -0.09 | 6 | −$0.09 | Reliable |
| USDJPY | -0.88% | -0.77% | 1.00% | 104 | 35.90% | -1.81 | -0.88 | 9 | −$0.84 | Reliable |
| XAUUSD | +14.04% | +11.47% | 6.39% | 147 | 50.30% | 1.59 | 2.20 | 5 | +$9.55 | Reliable |
Profitable on 2 of 4 markets with reliable results.
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 Multi-Timeframe EAs with a reliable result on the same market: EURUSD: better than 45% of 11 · GBPUSD: better than 50% of 12 · USDJPY: better than 25% of 12 · XAUUSD: better than 75% of 12
Month by month
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| EURUSD | 31% | +0.31% 2026-01 | -0.17% 2026-07 |
| GBPUSD | 54% | +0.30% 2026-01 | -0.29% 2026-04 |
| USDJPY | 23% | +0.15% 2026-03 | -0.29% 2026-07 |
| XAUUSD | 62% | +6.26% 2026-08 | -3.00% 2026-02 |
From the backtest equity curve, sampled about every two days; only reliable results.
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 strategy concept is based on a multi-indicator confluence trend-following system that uses the Chaikin Oscillator (iCHO) to measure money flow direction as the primary signal. The dual CCI indicators (fast and slow periods) capture short-term and medium-term momentum shifts respectively, requiring both to align in the same direction before confirming entry, which avoids false signals from a single momentum indicator. The Moving Average acts as a trend filter — long positions are only permitted when price is above the MA and short positions only when below, ensuring trade direction aligns with the prevailing trend. Position sizing appears to use fixed lots or equity-based calculation without Martingale or grid characteristics based on the naming convention. Exit conditions likely depend on reverse signals from any core indicator or fixed stop-loss/take-profit levels, with position closure triggered when any key indicator reverses direction. Money management reduces false signal probability through multi-layer indicator filtering, though multi-indicator systems can generate frequent whipsaw signals in ranging markets.
Strengths
- Multi-indicator confluence significantly reduces false signals with three-layer filtering for high-quality entries
- Chaikin Oscillator's volume-based money flow analysis provides more forward-looking signals than pure price indicators
- Dual CCI design (fast and slow periods) balances short-term momentum and medium-term trend confirmation, avoiding single-period misjudgment
- Moving average trend filter ensures trade direction aligns with the main trend, reducing counter-trend trades
- Systematic rules are well-defined with no subjective judgment, suitable for automated execution
Weaknesses
- Multi-indicator confluence tends to generate frequent whipsaw signals in ranging markets, leading to consecutive stop-losses
- Chaikin Oscillator relies on volume data which is of poor quality in forex markets, potentially affecting signal reliability
- Lack of explicit stop-loss and take-profit mechanism descriptions with default values possibly zero, creating risk exposure issues
- Cumulative lag from multiple indicators may cause late entries, missing most of the early trend profit
- Excessive parameters create overfitting risk, requiring extensive optimization across different market conditions
Possible improvements
- Add market regime detection module (e.g., ATR or ADX) to automatically reduce position size or pause trading during ranging markets
- Implement dynamic stop-loss mechanism (e.g., ATR-based trailing stop) to replace fixed stop-loss and take-profit settings
- Add volume data quality check mechanism to downgrade Chaikin Oscillator weight when volume data is unreliable
Risk assessment
Overall risk: Medium
- Multi-indicator system may open and close positions frequently in ranging markets causing consecutive losses
- Chaikin Oscillator limited by volume data quality in forex markets may produce incorrect signals
- Default stop-loss and take-profit values may be zero, lacking explicit risk control parameters creates unlimited loss risk
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
CHO_FastPeriod | 3 | Chaikin Oscillator fast line period |
CHO_SlowPeriod | 10 | Chaikin Oscillator slow line period |
CCI_FastPeriod | 14 | fastCCI period |
CCI_SlowPeriod | 50 | slowCCI period |
MA_Period | 200 | Moving average period for trend direction |
MA_Method | MODE_SMA | MA calculation method |
LotSize | 0.1 | Default trading lot size |
StopLoss | 0 | Stop loss in points per level, 0 for none |
TakeProfit | 0 | Take profit in points per level |
Similar Multi-Timeframe EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.