Introduction
The RSI is without doubt one of the hottest oscillators in buying and selling — and one of many largest sources of false indicators in scalping. The usual RSI(14) was designed for day by day charts. On M1 or M5, it reacts to noise, stays pinned in oversold territory throughout traits, and generates whipsaw after whipsaw.
The Double RSI method solves this by requiring two RSI indicators — one quick, one gradual — to agree earlier than getting into a commerce. On this article, I will clarify the logic, present you MQL5 code, and share backtesting outcomes.
Why Single RSI Fails in Scalping
On decrease timeframes, single RSI faces these issues:
- Noise sensitivity: RSI(14) on M5 reacts to microstructure fluctuations with no directional data
- Development persistence: In robust strikes, RSI stays under 30 for dozens of candles — every one a false purchase sign
- Whipsaw frequency: 5-10 false entries per session is widespread
The Double RSI Idea
Use two RSIs with totally different durations:
- Quick RSI (interval 7): Captures momentum shifts early. Your set off.
- Sluggish RSI (interval 21): Filters noise. Your affirmation.
Purchase sign: Quick RSI < 30 (oversold) AND Sluggish RSI < 40 (confirming bearish context)
The three:1 ratio between gradual and quick durations ensures they seize genuinely totally different timeframes. If each agree, the sign is actual. If solely the quick RSI triggers, it is probably noise.
MQL5 Implementation
Core Setup
enter int FastRSI_Period = 7; enter int SlowRSI_Period = 21; enter int FastRSI_Oversold = 30; enter int SlowRSI_Confirm = 40; int handleFastRSI, handleSlowRSI; int OnInit()
Sign Detection with Crossover
enum SIGNAL_TYPE { SIGNAL_NONE, SIGNAL_BUY, SIGNAL_SELL }; SIGNAL_TYPE CheckDoubleRSICrossover() { double fastBuf[3], slowBuf[3]; if(CopyBuffer(handleFastRSI, 0, 0, 3, fastBuf) < 3) return SIGNAL_NONE; if(CopyBuffer(handleSlowRSI, 0, 0, 3, slowBuf) < 3) return SIGNAL_NONE; if(fastBuf[1] < FastRSI_Oversold && fastBuf[0] >= FastRSI_Oversold && slowBuf[0] < SlowRSI_Confirm) return SIGNAL_BUY; if(fastBuf[1] > (100-FastRSI_Oversold) && fastBuf[0] <= (100-FastRSI_Oversold) && slowBuf[0] > (100-SlowRSI_Confirm)) return SIGNAL_SELL; return SIGNAL_NONE; }
Important Filters
void OnTick() dt.hour >= 16) return; SIGNAL_TYPE sign = CheckDoubleRSICrossover(); if(sign == SIGNAL_BUY) ExecuteBuy(); if(sign == SIGNAL_SELL) ExecuteSell();
Backtesting Outcomes
Examined on GBPUSD M5, January 2023 – December 2024, actual tick knowledge:
- Single RSI(14): 847 trades, 52.3% win fee, revenue issue 1.08, max DD 18.4%
- Double RSI (7/21): 312 trades, 64.7% win fee, revenue issue 1.61, max DD 9.2%
The Double RSI generates a 3rd of the indicators however practically doubles the revenue issue and halves the drawdown. Fewer trades, higher high quality.
Sensible Ideas
- Begin buy-only on GBP pairs — optimistic swap provides a secondary edge
- By no means danger greater than 1-2% per commerce — place sizing issues greater than entry
- Watch RSI divergence — when quick RSI makes a brand new low however gradual RSI makes a better low, high-probability setup
- Belief the filter — the toughest half isn’t buying and selling when solely the quick RSI triggers
Conclusion
The Double RSI addresses a structural weak point of normal RSI: untimely indicators in quick markets. By requiring two totally different lookback durations to agree, you filter noise whereas preserving sensitivity to real reversals.
I’ve constructed a whole implementation of this method in my EA GBP RSI Purchase Milker on the MQL5 Market, designed particularly for GBPUSD scalping. The code above offers you the muse to construct and take a look at your personal model.
Jaume Sancho — Algorithmic dealer and MQL5 developer.

























