
이것은 RSI 지표와 거래량에 기반한 역전 거래 전략이다. 이 전략은 시장에서 과매매 과매매 상태를 식별하여 거래량 확인을 결합하고, 가격 상태가 극단적일 때 역전 거래한다. 전략의 핵심 아이디어는 RSI 지표가 과매매 또는 과매매 신호가 나타나고 거래량이 평균 수준보다 높을 때 거래하는 것이며, RSI 중간선 ((50) 을 통해 탈퇴 신호로 사용한다.
이 전략은 다음과 같은 핵심 구성 요소에 기반합니다.
이 전략은 RSI 지표와 거래량 분석을 결합하여 완전한 역전 거래 시스템을 구축한다. 전략 설계는 합리적이며, 좋은 조작성과 유연성을 가지고 있다. 제안된 최적화 방향에 의해 전략에는 추가적인 향상할 여지가 있다. 실장 적용 시, 충분히 매개 변수를 테스트하고 시장 특성에 맞게 타겟팅 최적화를 수행하는 것이 좋습니다.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("RSI & Volume Contrarian Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=0)
//---------------------------
// Inputs and Parameters
//---------------------------
rsiPeriod = input.int(14, title="RSI Period", minval=1)
oversold = input.int(30, title="RSI Oversold Level", minval=1, maxval=50)
overbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
volMAPeriod = input.int(20, title="Volume MA Period", minval=1)
//---------------------------
// Indicator Calculations
//---------------------------
rsiValue = ta.rsi(close, rsiPeriod)
volMA = ta.sma(volume, volMAPeriod)
//---------------------------
// Trade Logic
//---------------------------
// Long Entry: Look for oversold conditions (RSI < oversold)
// accompanied by above-average volume (volume > volMA)
// In an uptrend, oversold conditions with high volume may signal a strong reversal opportunity.
longCondition = (rsiValue < oversold) and (volume > volMA)
// Short Entry: When RSI > overbought and volume is above its moving average,
// the temporary strength in a downtrend can be exploited contrarily.
shortCondition = (rsiValue > overbought) and (volume > volMA)
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// Exit Logic:
// Use a simple RSI midline crossover as an exit trigger.
// For longs, if RSI crosses above 50 (indicating a recovery), exit the long.
// For shorts, if RSI crosses below 50, exit the short.
exitLong = ta.crossover(rsiValue, 50)
exitShort = ta.crossunder(rsiValue, 50)
if strategy.position_size > 0 and exitLong
strategy.close("Long", comment="RSI midline exit")
log.info("strategy.position_size > 0 and exitLong")
if strategy.position_size < 0 and exitShort
strategy.close("Short", comment="RSI midline exit")
log.info("strategy.position_size > 0 and exitLong")
//---------------------------
// Visualization
//---------------------------
// Plot the RSI on a separate pane for reference
plot(rsiValue, title="RSI", color=color.blue, linewidth=2)
hline(oversold, title="Oversold", color=color.green)
hline(overbought, title="Overbought", color=color.red)
hline(50, title="Midline", color=color.gray, linestyle=hline.style_dotted)
// Optionally, you may plot the volume moving average on a hidden pane
plot(volMA, title="Volume MA", color=color.purple, display=display.none)