CoensioTrader1V06
This EA trades Bollinger Band mean-reversion signals confirmed by DEMA trend direction across up to 6 currency pairs simultaneously. It enters buy when price pierces below the lower Bollinger Band and reverses upward in an uptrend, and sells when price pierces above the upper band and reverses downward in a downtrend. It includes equity take-profit, trailing stop-loss, optimization data mining, and a remote server verification 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 | +1.60% | +1.39% | 6.09% | 142 | 51.80% | 0.38 | 0.26 | 7 | +$0.90 | Reliable |
| GBPUSD | -3.17% | -2.76% | 9.93% | 142 | 47.50% | -0.52 | -0.32 | 6 | −$2.08 | Reliable |
| USDJPY | +8.05% | +6.96% | 3.37% | 142 | 59.60% | 1.47 | 2.39 | 5 | +$5.60 | Reliable |
| XAUUSD | -93.28% | -89.25% | 95.61% | 37 | 48.60% | -1.56 | -0.98 | 5 | −$252.10 | Account stopped out |
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 Mean Reversion EAs with a reliable result on the same market: EURUSD: better than 70% of 30 · GBPUSD: better than 34% of 32 · USDJPY: better than 97% of 32 · XAUUSD: better than 10% of 31
Month by month
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| EURUSD | 46% | +1.79% 2026-01 | -1.62% 2026-10 |
| GBPUSD | 54% | +2.86% 2026-01 | -3.07% 2026-08 |
| USDJPY | 69% | +3.92% 2026-08 | -1.80% 2026-09 |
| XAUUSD | 15% | +24.91% 2025-12 | -89.20% 2026-02 |
From the backtest equity curve, sampled about every two days; only reliable results.
Blow-up risk: High
- Hit a stop-out in our backtest (equity below 10%) on XAUUSD
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 Bollinger Band mean reversion, entering when price pierces outside the bands and reverses back, with DEMA trend direction on a higher timeframe serving as a trend filter. Buy entry requires the previous bar to open below the lower band and close above it (piercing back inside), a higher low on the previous bar versus the one before, and a lower low two bars back (double bottom pattern), all confirmed by an ascending DEMA; sell signals follow the symmetrical logic. Exit conditions include fixed take-profit and stop-loss in pips, an equity take-profit that closes all positions when equity exceeds a multiple of balance, a trailing stop-loss step mechanism, and optional signal-based position closing. Position sizing supports three modes: risk-percentage-based lot calculation, fixed lot size, or equity-divided lot sizing. Money management has gaps including no minimum stop-loss distance, no spread filter, no maximum position limit per symbol, and the remote server verification code is obsolete and potentially insecure.
Strengths
- Multi-currency simultaneous trading capability supporting up to 6 pairs for risk diversification
- Combines Bollinger Band mean reversion with DEMA trend filter to avoid counter-trend trades
- Multiple position sizing modes (risk percentage, fixed lot, equity ratio) for flexible risk management
- Equity take-profit mechanism prevents floating profit drawdowns
- Built-in optimization data mining and remote result uploading for systematic backtesting analysis
Weaknesses
- Indicator handles (iBands, iDEMA) are recreated on every BarLogic call causing severe resource leaks and performance degradation
- Uses deprecated MQL4 functions like MarketInfo(), StrToDouble(), DoubleToStr() resulting in poor compatibility
- Depends on remote server verification (coensio.com is defunct) which may prevent the EA from starting
- Missing spread filter, maximum position limits, and slippage protection exposing risk during volatile markets
- Hardcoded URLs and access codes pose security concerns, and the copyright check logic is inverted (rejects when username equals 'coensio')
Possible improvements
- Move indicator handle creation to Init() and only call CopyBuffer in BarLogic() to eliminate resource leaks
- Remove remote server verification and wininet.dll dependency, replace with local license validation
- Add spread filter, maximum open position limits, and news event time filtering to improve robustness
- Replace all deprecated MQL4 functions with MQL5 equivalents and fix the inverted logic in EACheck()
Risk assessment
Overall risk: Caution
- Indicator handles recreated on every new bar may cause memory leaks and terminal crashes
- Remote server verification depends on a defunct website, potentially preventing EA initialization
- No spread filter may cause entries at extreme slippage during low-liquidity periods
- Username validation logic in EACheck is inverted, rejecting the default username instead of accepting it
- PositionSelect by symbol alone may accidentally select positions from other EAs on the same symbol
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
UserName | coensio | Username for identification and remote verification |
TimeFrame | PERIOD_H1 | Base timeframe |
NumOfCurrencies | 1 | Number of trading currency pairs, 1 to 6 |
MarketWatchTimer | 60 | EA loop timer interval (seconds) |
EquityTakeProfit | 1.2 | Equity take profit multiplier, closes when equity exceeds balance by this factor |
RiskMax | 0 | Maximum risk percentage, 0 uses fixed lot |
LotSize | 0 | Fixed lot size, 0 calculates by equity ratio |
LotBalanceDivider | 1000000 | Equity divider for equity-proportional lot calculation |
TrailingStopLossStep | 10 | Trailing stop step (points), 0 disables |
CloseOnSignal | false | Close position on reverse signal |
Slip | 3 | Slippage tolerance (points) |
TakeProfitPips1-6 | 250/300/100/200/100/300 | Take profit in pips per symbol |
StopLossPips1-6 | 100/200/150/100/150/200 | Stop loss in pips per symbol |
BPeriod1-6 | 30/40/10/40/50/30 | Bollinger Bands period per symbol |
BShift1-6 | 1 | Bollinger Bands shift per symbol |
BDeviation1-6 | 1.5/2/2/2/1.5/1 | Bollinger Bands deviation multiplier per symbol |
DemaTimeFrame1-6 | PERIOD_D1 | DEMA timeframe per symbol |
DemaPeriod1-6 | 20/40/20/40/10/10 | DEMA period per symbol |
Similar Mean Reversion EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.