The comparative relative strength strategy generates trades by comparing the relative strength of two markets. Outperformance of the comparison market versus the benchmark is seen as a buy signal, underperformance as a sell signal.
The logic is:
Select comparison market, e.g. a stock
Select benchmark market, e.g. S&P 500 index
Compute ratio of comparison market vs benchmark
Go long the comparison when ratio exceeds overbought level
Go short when ratio falls below oversold zone
Set pullback line to close positions when price falls back
By comparing relative strength, the strategy aims to uncover undervalued opportunities and avoid overvalued conditions.
Compares relative strength to find undervaluation
Pullback line avoids chasing trends
Simple and clear rules
Appropriate benchmark needs selection
Overbought/oversold zones require optimization
LONG/SHORT only misses full opportunities
The relative strength strategy identifies arbitrage chances by comparing two markets. But parameter tuning and stop strategies require prudent assessment.
/*backtest start: 2022-09-07 00:00:00 end: 2023-09-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 10/03/2017 // Comparative Relative Strength Strategy for ES // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy("Comparative Relative Strength Strategy", shorttitle="CRS") a = syminfo.tickerid b = input("BTC_USDT:swap") len = input(10) BuyBand = input(0.9988, step = 0.0001) SellBand = input(0.9960, step = 0.0001) CloseBand = input(0.9975, step = 0.0001) reverse = input(false, title="Trade reverse") hline(CloseBand, color=blue, linestyle=hline.style_dashed) hline(SellBand, color=red, linestyle=hline.style_solid) hline(BuyBand, color=green, linestyle=hline.style_solid) as = security(a, timeframe.period, close) bs = security(b, timeframe.period, close) nRes = sma(as/bs, len) pos = iff(nRes > BuyBand, 1, iff(nRes < SellBand, -1, iff(pos[1] == 1 and nRes < CloseBand, 0, iff(pos[1] == -1 and nRes > CloseBand, 0, nz(pos[1], 0))))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close("Long", when = possig == 0) strategy.close("Short", when = possig == 0) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(as/bs, title="CRS", color=gray) plot(nRes, color=navy)