동적 RSI 거래 전략

저자:차오장, 날짜: 2024-02-04 17:36:41
태그:

img

전반적인 설명

이 전략은 RSI 지표를 사용하여 오버구트 및 오버셀드 수준을 결정하는 거래 시스템을 구축하며, 동적 트레일링 스톱 로스 및 수익 목표 출구와 함께합니다. RSI가 오버구트 수준을 넘어서면 짧고 RSI가 오버셀드 수준을 넘어서면 길게됩니다. 트레일링 스톱 로스 및 수익 목표 출구는 포지션을 닫기 위해 사용됩니다.

전략 논리

이 전략은 시장의 기술적 패턴을 판단하기 위해 14 기간 RSI 지표를 사용합니다. RSI는 시장이 과소매 또는 과소매인지 알 수 있도록 일정 기간 동안 상승과 하락 힘의 비율을 반영합니다. 여기서 RSI 길이는 14입니다. RSI가 70을 넘을 때 시장은 과소매로 간주되며, 우리는 짧습니다. RSI가 30을 넘을 때 시장은 과소매로 간주되며, 우리는 길게 간다.

또한 이 전략은 동적 인 트레이링 스톱 손실 메커니즘을 사용합니다. 긴 포지션을 보유 할 때 트레이링 스톱 가격은 폐쇄 가격의 97%로 설정됩니다. 짧은 포지션을 보유 할 때 트레이링 스톱 가격은 폐쇄 가격의 103%입니다. 이것은 시장 소음으로 중단되는 것을 피하면서 대부분의 이익을 잠금합니다.

마지막으로, 이 전략은 수익 목표 출구를 사용합니다. 포지션 이윤이 20%에 도달하면 닫을 것입니다. 이것은 일부 이윤을 잠금하고 수익 회귀를 피합니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. RSI 지표를 사용하여 과잉 매수/ 과잉 판매 시장을 효과적으로 결정합니다
  2. 리스크를 제어하기 위해 동적 트레일링 스톱 로스를 채택
  3. 적당한 수익 목표를 설정하여 수익을 확보합니다.
  4. 명확한 논리와 몇 가지 매개 변수, 라이브 거래에 쉽게 구현
  5. RSI 길이, 과잉 구매 / 과잉 판매 수준, 중지 손실 비율 등과 같은 매개 변수를 최적화하기 쉽습니다.

위험 분석

이 전략의 몇 가지 위험은 다음과 같습니다.

  1. 불필요한 손실을 유발하는 RSI의 잠재적 인 잘못된 신호
  2. 스톱 로스 타격 확률, 손실 증대
  3. 수익 목표가 너무 낮아서 적당한 수익을 얻을 수 있는 지위를 충분히 유지할 수 없습니다.

이러한 위험을 극복하기 위해 RSI 매개 변수를 최적화하고, 스톱 로스 비율을 조정하고, 수익 목표 요구 사항을 합리적으로 완화하면 도움이 될 수 있습니다.

최적화 방향

전략을 최적화하는 몇 가지 방향:

  1. 잘못된 신호를 줄이기 위해 RSI 매개 변수 및 과반 구매/ 과반 판매 판사 표준을 최적화
  2. 단일 RSI로 인한 잘못된 신호를 피하기 위해 다른 표시 필터를 추가합니다.
  3. 시장 조건에 따라 수익 목표를 동적으로 최적화
  4. 거래량 지표를 포함하여 낮은 거래량으로 인한 가짜 브레이크를 피합니다.
  5. 자동 조정 매개 변수에 기계 학습 알고리즘을 도입

요약

이 전략은 다이내믹 스톱과 수익 취득을 통해 과소 구매 / 과소 판매 시장을 결정하기 위해 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)


더 많은