Strategy vault / Mean reversion
Dual RSI Differential Strategy
The Dual RSI Differential Strategy is a trading approach that utilizes the difference between two Relative Strength Index (RSI) indicators calculated over different time periods to make trading decisions. Unlike…

Overview
The Dual RSI Differential Strategy is a trading approach that utilizes the difference between two Relative Strength Index (RSI) indicators calculated over different time periods to make trading decisions. Unlike traditional single RSI strategies, this method provides a more nuanced analysis of market dynamics by examining the difference between a short-term and a long-term RSI. This approach enables traders to more accurately capture overbought and oversold market conditions, resulting in more precise trading decisions.
Strategy Principle
The core of this strategy lies in calculating two RSI indicators over different time periods and analyzing the difference between them. Specifically, the strategy employs a short-term RSI (default: 21 days) and a long-term RSI (default: 42 days). By calculating the difference between the long-term RSI and the short-term RSI, we obtain an RSI differential indicator. When the RSI differential falls below -5, it suggests strengthening short-term momentum, indicating a potential long trade. Conversely, when the RSI differential rises above +5, it implies weakening short-term momentum, signaling a potential short trade.
Strategy Advantages
The advantage of the Dual RSI Differential Strategy lies in its ability to provide a more granular analysis of market dynamics. By examining the difference between RSIs of different time periods, the strategy can more accurately capture shifts in market momentum, providing traders with more reliable trading signals. Moreover, the strategy introduces the concept of holding days and the option to set take profit and stop loss levels, allowing traders to have greater control over their risk exposure.
Strategy Risks
Despite its many advantages, the Dual RSI Differential Strategy is not without potential risks. Firstly, the strategy relies on the correct interpretation of the RSI differential indicator. If traders misunderstand the indicator, it may lead to incorrect trading decisions. Secondly, the strategy may generate more false signals in highly volatile market conditions, resulting in frequent trades and high transaction costs. To mitigate these risks, traders may consider combining the Dual RSI Differential Strategy with other technical indicators or fundamental analysis to validate trading signals.
Strategy Optimization Directions
To further enhance the performance of the Dual RSI Differential Strategy, we can consider optimizing the strategy in the following aspects:
Parameter Optimization: By optimizing parameters such as RSI periods, RSI differential thresholds, and holding days, we can find the most suitable parameter combination for the current market environment, thereby improving the strategy's profitability and stability.
Signal Filtering: Introducing other technical indicators or market sentiment indicators to provide secondary confirmation of the Dual RSI Differential Strategy's trading signals, reducing the occurrence of false signals.
Risk Control: Optimizing the settings for take profit and stop loss levels, or introducing dynamic risk control mechanisms to adjust position sizes based on changes in market volatility, allowing for better control of the strategy's risk exposure.
Multi-Market Adaptation: Extending the Dual RSI Differential Strategy to other financial markets, such as forex, commodities, and bonds, to verify the strategy's universality and robustness.
Summary
The Dual RSI Differential Strategy is a momentum trading strategy based on the Relative Strength Index. By analyzing the difference between RSIs of different time periods, it provides traders with a more granular method of market analysis. Although the strategy has some potential risks, through appropriate optimization and improvement, we can further enhance the strategy's performance, making it a more reliable and effective trading tool.
Source Pine Script
/*backtest
start: 2023-05-09 00:00:00
end: 2024-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading
// This strategy stands out by using two distinct RSI lengths, analyzing the differential between these to make precise trading decisions.
// Unlike conventional single RSI strategies, this method provides a more nuanced view of market dynamics, allowing traders to exploit
// both overbought and oversold conditions with greater accuracy.
//@version=5
strategy("Dual RSI Differential - Strategy [presentTrading]", overlay=false, precision=3,
commission_value=0.1, commission_type=strategy.commission.percent, slippage=1,
currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
// Input parameters for user customization
tradeDirection = input.string("Both", "Trading Direction", options=["Long", "Short", "Both"])
lengthShort = input(21, title="Short RSI Period")
lengthLong = input(42, title="Long RSI Period")
rsiDiffLevel = input(5, title="RSI Difference Level")
useHoldDays = input.bool(true, title="Use Hold Days")
holdDays = input.int(5, title="Hold Days", minval=1, maxval=20, step=1)
TPSLCondition = input.string("None", "TPSL Condition", options=["TP", "SL", "Both", "None"])
takeProfitPerc = input(15.0, title="Take Profit (%)")
stopLossPerc = input(10.0, title="Stop Loss (%)")
// Calculate RSIs
rsiShort = ta.rsi(close, lengthShort)
rsiLong = ta.rsi(close, lengthLong)
// Calculate RSI Difference
rsiDifference = rsiLong - rsiShort
// Plotting
hline(rsiDiffLevel, "Level +20", color=color.green, linestyle=hline.style_dashed)
hline(-rsiDiffLevel, "Level -20", color=color.red, linestyle=hline.style_dashed)
// Variables to track entry times
var float longEntryTime = na
var float shortEntryTime = na
// Condition for significant RSI difference
combinedLongCondition = rsiDifference < -rsiDiffLevel
combinedExitLongCondition = rsiDifference > rsiDiffLevel
combinedShortCondition = rsiDifference > rsiDiffLevel
combinedExitShortCondition = rsiDifference < -rsiDiffLevel
// Strategy logic using conditions and direction selection
if (tradeDirection == "Long" or tradeDirection == "Both")
if (combinedLongCondition)
strategy.entry("Long", strategy.long)
longEntryTime := time
if (useHoldDays and (time - longEntryTime >= holdDays * 86400000 or combinedExitLongCondition))
strategy.close("Long")
else if (useHoldDays == false and combinedExitLongCondition)
strategy.close("Long")
if (tradeDirection == "Short" or tradeDirection == "Both")
if (combinedShortCondition)
strategy.entry("Short", strategy.short)
shortEntryTime := time
if (useHoldDays and (time - shortEntryTime >= holdDays * 86400000 or combinedExitShortCondition))
strategy.close("Short")
else if (useHoldDays == false and combinedExitShortCondition)
strategy.close("Short")
// Conditional Profit and Loss Management
if (TPSLCondition == "TP" or TPSLCondition == "Both")
// Apply take profit conditions
strategy.exit("TakeProfit_Long", "Long", profit=close * (1 + takeProfitPerc / 100), limit=close * (1 + takeProfitPerc / 100))
strategy.exit("TakeProfit_Short", "Short", profit=close * (1 - takeProfitPerc / 100), limit=close * (1 - takeProfitPerc / 100))
if (TPSLCondition == "SL" or TPSLCondition == "Both")
// Apply stop loss conditions
strategy.exit("StopLoss_Long", "Long", loss=close * (1 - stopLossPerc / 100), stop=close * (1 - stopLossPerc / 100))
strategy.exit("StopLoss_Short", "Short", loss=close * (1 + stopLossPerc / 100), stop=close * (1 + stopLossPerc / 100))
bgcolor(combinedLongCondition ? color.new(color.green, 90) : na, title="Background Color for Significant Long RSI Diff")
bgcolor(combinedShortCondition ? color.new(color.red, 90) : na, title="Background Color for Significant Short RSI Diff")
// Plot RSIs and their difference
plot(rsiDifference, title="RSI Difference (35-7)", color=color.fuchsia)
// Alerts
alertcondition(combinedLongCondition, title="Significant Long RSI Difference Alert", message="RSI Difference is significant Long at {{close}} with RSI7 at {{rsiShort}} and RSI35 at {{rsiLong}}.")
alertcondition(combinedShortCondition, title="Significant Short RSI Difference Alert", message="RSI Difference is significant Short at {{close}} with RSI7 at {{rsiShort}} and RSI35 at {{rsiLong}}.")
Published by ChaoZhang on the FMZ strategy square · last modified 2024-05-15. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.
Build this with AgenKit
A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Dual-RSI-Differential-Strategy.md- npx agenkit install engineering-kit in your project
- Paste the command into your agent and approve each phase
- Get tests, backtest, risk controls and a paper-trading switch
Understand it first
Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.
Related specs
- ATR and EMA based Dynamic Take Profit and Stop Loss Adaptive StrategyPine Script · Mean reversion · 1h
- Adaptive Mean Reversion Trading Strategy Based on Chande Momentum OscillatorPine Script · Mean reversion · 1d
- Adaptive RSI Oscillator Dynamic Trading Strategy with Threshold OptimizationPine Script · Mean reversion · 1d
- Advanced 15 Minute Chart Trading Signal StrategyPine Script · Mean reversion · 3h
- Advanced Fibonacci Retracement Trend Following and Reversal Trading StrategyPine Script · Mean reversion · 3h
- Advanced Momentum EMA Trend Following with RSI Overbought Oversold Trading StrategyPine Script · Mean reversion · 1d