이 전략은 RSI 지표를 사용하여 오버구트 및 오버셀드 수준을 결정하는 거래 시스템을 구축하며, 동적 트레일링 스톱 로스 및 수익 목표 출구와 함께합니다. RSI가 오버구트 수준을 넘어서면 짧고 RSI가 오버셀드 수준을 넘어서면 길게됩니다. 트레일링 스톱 로스 및 수익 목표 출구는 포지션을 닫기 위해 사용됩니다.
이 전략은 시장의 기술적 패턴을 판단하기 위해 14 기간 RSI 지표를 사용합니다. RSI는 시장이 과소매 또는 과소매인지 알 수 있도록 일정 기간 동안 상승과 하락 힘의 비율을 반영합니다. 여기서 RSI 길이는 14입니다. RSI가 70을 넘을 때 시장은 과소매로 간주되며, 우리는 짧습니다. RSI가 30을 넘을 때 시장은 과소매로 간주되며, 우리는 길게 간다.
또한 이 전략은 동적 인 트레이링 스톱 손실 메커니즘을 사용합니다. 긴 포지션을 보유 할 때 트레이링 스톱 가격은 폐쇄 가격의 97%로 설정됩니다. 짧은 포지션을 보유 할 때 트레이링 스톱 가격은 폐쇄 가격의 103%입니다. 이것은 시장 소음으로 중단되는 것을 피하면서 대부분의 이익을 잠금합니다.
마지막으로, 이 전략은 수익 목표 출구를 사용합니다. 포지션 이윤이 20%에 도달하면 닫을 것입니다. 이것은 일부 이윤을 잠금하고 수익 회귀를 피합니다.
이 전략의 장점은 다음과 같습니다.
이 전략의 몇 가지 위험은 다음과 같습니다.
이러한 위험을 극복하기 위해 RSI 매개 변수를 최적화하고, 스톱 로스 비율을 조정하고, 수익 목표 요구 사항을 합리적으로 완화하면 도움이 될 수 있습니다.
전략을 최적화하는 몇 가지 방향:
이 전략은 다이내믹 스톱과 수익 취득을 통해 과소 구매 / 과소 판매 시장을 결정하기 위해 RSI를 사용하는 명확한 논리를 가지고 있습니다. 이 전략의 장점은 이해하기 쉽고 구현, 좋은 리스크 제어 및 높은 확장성입니다. 다음 단계는 신호 품질을 향상시키고, 자동 조정 매개 변수 등을 통해 전략을 더 지능화시키는 것입니다.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Modified RSI-Based Trading Strategy", overlay=true) // RSI settings rsiLength = input(14, title="RSI Length") overboughtLevel = 70 oversoldLevel = 30 // User-defined parameters trailingStopPercentage = input(3, title="Trailing Stop Percentage (%)") profitTargetPercentage = input(20, title="Profit Target Percentage (%)") rsiValue = ta.rsi(close, rsiLength) var float trailingStopLevel = na var float profitTargetLevel = na // Entry criteria enterLong = ta.crossover(rsiValue, oversoldLevel) enterShort = ta.crossunder(rsiValue, overboughtLevel) // Exit criteria exitLong = ta.crossover(rsiValue, overboughtLevel) exitShort = ta.crossunder(rsiValue, oversoldLevel) // Trailing stop calculation if (strategy.position_size > 0) trailingStopLevel := close * (1 - trailingStopPercentage / 100) if (strategy.position_size < 0) trailingStopLevel := close * (1 + trailingStopPercentage / 100) // Execute the strategy if (enterLong) strategy.entry("Buy", strategy.long) if (exitLong or ta.crossover(close, trailingStopLevel) or ta.change(close) > profitTargetPercentage / 100) strategy.close("Buy") if (enterShort) strategy.entry("Sell", strategy.short) if (exitShort or ta.crossunder(close, trailingStopLevel) or ta.change(close) < -profitTargetPercentage / 100) strategy.close("Sell") // Plot RSI and overbought/oversold levels plot(rsiValue, title="RSI", color=color.blue) hline(overboughtLevel, "Overbought", color=color.red, linestyle=hline.style_dashed) hline(oversoldLevel, "Oversold", color=color.green, linestyle=hline.style_dashed)