BeerGodEA(barabashkakvn's edition)
This EA trades momentum reversals using a single EMA indicator combined with a time-based candle filter. It opens buy positions when the price is below a falling EMA and below the previous candle close at a specific minute after bar opening, and vice versa for sells. Positions are reversed—existing opposite positions are closed before opening new ones—with fixed lot sizing and no stop loss or take profit.
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.01% | -0.01% | 3.82% | 110 | 50.50% | 0.02 | -0.00 | 4 | +$0.30 | Reliable |
| GBPUSD | +8.67% | +7.49% | 3.82% | 107 | 53.30% | 1.54 | 2.27 | 8 | +$8.10 | Reliable |
| USDJPY | +2.72% | +2.36% | 4.46% | 100 | 51.00% | 0.58 | 0.61 | 6 | +$2.72 | Reliable |
| XAUUSD | -18.03% | -15.15% | 58.22% | 104 | 48.50% | 0.17 | -0.31 | 7 | −$15.10 | 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 Momentum EAs with a reliable result on the same market: EURUSD: better than 57% of 68 · GBPUSD: better than 97% of 66 · USDJPY: better than 82% of 68 · XAUUSD: better than 45% of 75
Month by month
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| EURUSD | 54% | +2.67% 2026-04 | -1.12% 2026-07 |
| GBPUSD | 69% | +2.62% 2026-04 | -2.51% 2026-10 |
| USDJPY | 54% | +2.93% 2026-04 | -1.90% 2026-03 |
| XAUUSD | 54% | +27.03% 2026-02 | -34.43% 2026-08 |
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 EMA momentum reversal: a buy signal triggers when the price is below the current EMA, the EMA is declining (MA_current<MA_previous), and the price is below the previous candle's close, interpreted as an oversold momentum reversal opportunity; sell conditions are the exact mirror. Entry conditions require three simultaneous criteria—price relative to EMA, EMA direction, and price relative to prior close—plus a time window filter (InpTimeBarOpen) that restricts signals to a specific minute after bar opening to prevent duplicate trades within the same candle. Exit conditions rely solely on reverse signals closing existing positions, with no independent stop loss or take profit logic, meaning positions can endure prolonged and significant drawdowns. Position sizing uses a fixed lot size (InpLots) with no dynamic adjustment based on account equity, risk percentage, or volatility. Money management includes a margin sufficiency check via CheckVolume before order placement, but lacks maximum exposure limits, drawdown controls, equity protection, or any portfolio-level risk safeguards. The overall strategy is logically simple but critically deficient in risk management.
Strengths
- Clean code structure using MQL5 standard trade libraries (CTrade/CPositionInfo/CSymbolInfo) with proper encapsulation
- Time window filter (InpTimeBarOpen) prevents duplicate entries within the same candle
- Pre-trade margin check (CheckVolume) prevents order failures due to insufficient funds
Weaknesses
- No stop loss or take profit whatsoever—positions can suffer unlimited drawdown
- Fixed lot sizing with no dynamic position management, unsuitable for varying account sizes and volatility regimes
- Relies on only a single EMA and previous candle close, producing overly simplistic signals prone to false entries
- No proper new bar check mechanism—the minute-based filter is less reliable than standard new bar detection
- No spread filter—trades can open during wide spreads resulting in unfavorable fills
Possible improvements
- Add stop loss and take profit logic, ideally using ATR-based dynamic stop distances
- Replace the minute-based time filter with a proper new bar detection mechanism to ensure one trade per candle
- Add spread filter and volatility filter to avoid opening positions under unfavorable market conditions
Risk assessment
Overall risk: High risk
- No stop loss or take profit—positions can suffer extreme drawdowns without any protection
- No new bar check mechanism; the minute-based filter may fail and allow multiple entries per candle
- No spread filter; entries during widened spreads result in slippage losses
- Fixed lot size ignores account risk capacity, large lots can lead to margin call
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
InpLots | 1.0 | Fixed trading lot size |
InpTimeBarOpen | 3 | Minutes after bar open to trigger signal |
InpPeriod_MA | 60 | EMA MA period |
m_magic | 47120320 | EA magic number to identify its own positions |
Similar Momentum EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.