RSI 볼링거 밴드 거래 전략

저자:차오장, 날짜: 2024-01-24 14:56:02
태그:

img

전반적인 설명

이 전략은 주로 거래 신호 판단을 위해 상대 강도 지수 (RSI) 와 볼링거 밴드를 결합하여 사용합니다. 구체적으로, RSI가 과소매 수준 이상과 하부 볼링거 밴드 아래에 넘어가면 길게 가고, RSI가 과소매 수준 아래와 상부 볼링거 밴드 위에 넘어가면 짧게됩니다.

전략 논리

이 전략은 먼저 RSI 지표와 볼링거 밴드를 계산합니다. RSI 지표는 거래 도구의 상대적 강도를 반영합니다. RSI가 과잉 판매 구역 (디폴트 30) 이하일 때, 그것은 도구가 과잉 판매되어 구매해야한다는 것을 의미합니다. 볼링거 밴드는 상위 밴드, 중간 밴드 및 하위 밴드를 포함하며, 이는 가격 변동 범위를 잘 반영합니다. 하위 밴드 근처에서 구매하고 상위 밴드 근처에서 판매하면 비교적 신뢰할 수있는 신호를 제공할 수 있습니다. 이 전략은 거래 신호 판단을 위해 RSI 지표와 볼링거 밴드를 결합합니다. RSI가 과잉 판매 구역에서 위로 올라갈 때 구매 신호를 생성하고 (디폴트 30) 하위 밴드에서 가격이 위로 올라갈 때 판매 신호를 생성합니다. RSI가 과잉 판매 구역에서 아래로 떨어질 때 판매 신호를 생성하고 (디폴트 70 가격) 상위 밴드에서 아래로 떨어집니다.

장점

  1. RSI와 볼린거 대역을 결합하면 신호 정확도가 향상됩니다.
  2. RSI는 소음을 필터링합니다.
  3. 볼링거 대역은 현재 시장 변동성 범위, 신뢰할 수 있는 신호를 반영합니다.
  4. 엄격한 거래 규칙, 유효하지 않은 거래를 피합니다.

위험성

  1. 부적절한 볼링거 밴드 매개 변수는 잘못된 신호를 일으킬 수 있습니다.
  2. 부적절한 RSI 과잉 매수/ 과잉 판매 구역 설정은 판단에 영향을 미칠 수 있습니다.
  3. 전략이 엄격해서 기회를 놓칠 수도 있어요

해결책:

  1. 가장 좋은 조합을 찾기 위해 볼링거 밴드와 RSI 매개 변수를 최적화하십시오.
  2. 조건이 완화되어 더 많은 기회를 얻기 위해 유효하지 않은 거래를 허용

최적화 방향

  1. 최적의 RSI와 볼링거 매개 변수를 테스트하고 최적화
  2. 위험 통제에 스톱 로스를 추가합니다
  3. 신호 검증을 위해 MACD와 같은 다른 지표를 추가하는 것을 고려하십시오.
  4. 다양한 제품과 시간 프레임에 대한 테스트 최적화 결과

요약

전체 전략은 견고하며, 스톱 로스를 위해 RSI와 볼링거 밴드를 효과적으로 결합합니다. 매개 변수를 테스트하고 최적화함으로써 추가 개선이 가능합니다. 또한 엄격한 규칙으로 인해 잠재적인 신호가 빠지는 위험을 알아야합니다. 일반적으로 이것은 신뢰할 수있는 양적 거래 전략입니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BB + RSI 20MIN,", shorttitle="BBRSI 20MIN", overlay=true )
     
     // Strategy Tester Start Time
sYear = input(2019, title = "Start Year")
sMonth = input(04, title = "Start Month", minval = 01, maxval = 12)
sDay = input(01, title = "Start Day", minval = 01, maxval = 31)
sHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = true


///////////// RSI
RSIlength = input(9,title="RSI Period Length") 
RSIoverSold = input(30, minval=1,title="RSIL")
RSIoverBought = input(69, minval=1,title="RSIh")
price = open
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(60, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50,title="Bb")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))

    if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower))
        strategy.entry("RSI_BB_L", strategy.long and startTime, stop=BBlower,  comment="RSI_BB_L")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
        strategy.entry("RSI_BB_S", strategy.short and startTime, stop=BBupper,comment="RSI_BB_S")
    else
        strategy.cancel(id="RSI_BB_S")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

더 많은