Exp_RVIDiff
This EA trades based on the RVIDiff custom indicator, which applies additional smoothing (T3 by default) to the Relative Vigor Index. It opens buy positions when the RVI value rises above its prior value during a downtrend in the RVI, and opens sell positions when the RVI falls below its prior value during an uptrend, with configurable stop-loss and take-profit levels.
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.74% | +1.51% | 4.07% | 144 | 56.60% | 0.39 | 0.43 | 4 | +$1.45 | Reliable |
| GBPUSD | -8.85% | -7.74% | 11.46% | 144 | 48.30% | -1.42 | -0.77 | 5 | −$6.02 | Reliable |
| USDJPY | +2.11% | +1.83% | 5.38% | 144 | 51.00% | 0.40 | 0.39 | 7 | +$1.37 | Reliable |
| XAUUSD | -93.59% | -89.66% | 98.86% | 126 | 47.60% | -0.55 | -0.95 | 7 | −$74.27 | 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 Momentum EAs with a reliable result on the same market: EURUSD: better than 72% of 68 · GBPUSD: better than 12% of 66 · USDJPY: better than 76% of 68 · XAUUSD: better than 21% of 75
Month by month
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| EURUSD | 46% | +3.19% 2026-03 | -2.60% 2026-01 |
| GBPUSD | 46% | +2.36% 2026-09 | -3.77% 2026-01 |
| USDJPY | 62% | +3.57% 2026-08 | -2.78% 2026-01 |
| XAUUSD | 31% | +38.52% 2026-01 | -66.52% 2026-07 |
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 based on momentum reversal signals from the RVIDiff indicator, which smooths the standard RVI with an additional averaging method (T3 by default). Entry conditions: a buy signal is triggered when RVI[1] < RVI[2] (downtrend) and RVI[0] >= RVI[1] (momentum turning upward); a sell signal is triggered when RVI[1] > RVI[2] (uptrend) and RVI[0] <= RVI[1] (momentum turning downward). Exit conditions include a fixed 1000-point stop-loss, 2000-point take-profit, and closing positions on opposing signals. Position sizing is controlled by the MM parameter with multiple margin modes including balance-based, free margin-based, and fixed lot sizing. Money management leverages the TradeAlgorithms.mqh library for standardized position calculation. The strategy operates on H6 timeframe by default, using SignalBar=1 to reference the previous bar's values, avoiding look-ahead bias.
Strengths
- Uses SignalBar=1 to avoid look-ahead bias, making backtesting results more reliable
- Offers multiple smoothing algorithms (10 methods), providing high strategy flexibility
- Includes complete stop-loss, take-profit mechanism and slippage control
- Buy/sell open and close switches are independently configurable, offering granular control
- Leverages standardized TradeAlgorithms library for position sizing, ensuring good code reuse
Weaknesses
- Lacks spread filtering, which may cause unnecessary losing entries during high-spread periods
- No position check logic, potentially opening duplicate positions in the same direction
- Fixed 1000-point SL and 2000-point TP do not adapt to market volatility changes
- Depends on iCustom calling external RVIDiff indicator; EA fails if the indicator file is missing
- No time filter or trading session control, may trade during low-liquidity periods
Possible improvements
- Add a spread filter to pause trading when spread exceeds a threshold, avoiding unfavorable entries
- Add position check logic to prevent duplicate same-direction entries that increase leverage exposure
- Introduce ATR-based dynamic stop-loss and take-profit that automatically adjusts to market volatility
Risk assessment
Overall risk: Medium
- No spread filter; widened spreads during high-volatility periods may cause unfavorable entries
- No position check; duplicate entries may cause risk exposure to exceed expectations
- Fixed SL/TP does not account for market volatility; SL too wide in low volatility, TP insufficient in high volatility
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
MM | 0.1 | Capital allocation ratio per trade |
MMMode | LOT | Margin mode: free margin/balance/drawdown free margin/drawdown balance/fixed lot |
StopLoss_ | 1000 | Stop loss in points |
TakeProfit_ | 2000 | Take profit in points |
Deviation_ | 10 | Maximum allowed slippage in points |
BuyPosOpen | true | Allow buy positions |
SellPosOpen | true | Allow sell positions |
BuyPosClose | true | Allow buy position close on reverse signal |
SellPosClose | true | Allow sell position close on reverse signal |
InpInd_Timeframe | PERIOD_H6 | Indicator calculation timeframe |
RVIPeriod | 12 | RVI indicator averaging period |
XMA_Method | MODE_T3 | Extra smoothing method |
XLength | 13 | Extra smoothing period |
XPhase | 15 | Smoothing phase (-100~+100 for JJMA, different for VIDYA/AMA) |
SignalBar | 1 | Signal detection bar index position |
Similar Momentum EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.