资源加载中... loading...

Dual RSI Breakthrough Strategy

Author: ChaoZhang, Date: 2024-01-18 15:25:11
Tags:

img

Overview

The Dual RSI Breakthrough Strategy is a quantitative trading strategy that generates trading signals by using both fast and slow RSI indicators. The strategy forms trading signals through the breakthrough between the fast and slow RSI indicators to track market trends.

Strategy Principle

The strategy uses two RSI indicators simultaneously, a fast RSI indicator with a period of 2 and a slow RSI indicator with a period of 14. The trading signals of the strategy come from the breakthrough between the two RSI indicators.

When the slow RSI is greater than 50 and the fast RSI is less than 50, a long signal is generated. When the slow RSI is less than 50 and the fast RSI is greater than 50, a short signal is generated. After going long or short, if a stop loss signal occurs (a red K-line column appears when the long position loses money, and a green K-line column appears when the short position loses money), the position will be closed.

Advantage Analysis

  • Form trading signals by using the overbought and oversold features of RSI indicators to avoid chasing peaks and killing bottoms.
  • The combination of fast and slow RSI can track trend changes to realize timely entries and exits.
  • Track medium and long term trends and avoid being disturbed by short term market noise.
  • Good risk control with stop loss mechanism.

Risks and Solutions

  • Risk of false breakthrough. The solution is to reasonably set the parameters of fast and slow RSI to ensure true breakthrough.
  • Risk from improper stop loss point setting. The solution is to reasonably set the stop loss distance based on market volatility.
  • Risk of spiral losses. The solution is not to chase rises and beat declines, and make entries and exits according to the strategy rules.

Optimization Directions

The strategy can also be optimized in the following aspects:

  1. Optimize the parameters of fast and slow RSI to find the best parameter combination;
  2. Introduce other indicators to form more reliable trading signals;
  3. Set dynamic stop loss and adjust the stop loss point in real time according to market volatility.

Conclusion

The dual RSI breakthrough strategy uses fast and slow RSI indicators to track market trend changes and forms trading signals in overbought and oversold areas, which can effectively avoid chasing peaks and killing bottoms. At the same time, a stop loss mechanism is set up to control risks. The strategy is simple to operate and easy to implement, suitable for quantitative trading. The profit factor can be further improved through parameter optimization, combination indicators, etc.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Double RSI Strategy 1.0", shorttitle = "2RSI str 1.0", overlay=true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
fast = input(2, defval = 2, minval = 2, maxval = 100, title = "Fast RSI Period")
slow = input(14, defval = 14, minval = 2, maxval = 100, title = "Slow RSI Period")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(close), 0), fast)
fastdown = rma(-min(change(close), 0), fast)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Slow RSI
slowup = rma(max(change(close), 0), slow)
slowdown = rma(-min(change(close), 0), slow)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
up = slowrsi > 50 and fastrsi < 50
dn = slowrsi < 50 and fastrsi > 50
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)
lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1]

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot )

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot )
    
if exit
    strategy.close_all()
template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6