RSI와 Bollinger Bands를 결합한 단기 거래 전략


생성 날짜: 2023-12-19 11:31:09 마지막으로 수정됨: 2023-12-19 11:31:09
복사: 0 클릭수: 894
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

RSI와 Bollinger Bands를 결합한 단기 거래 전략

개요

이 전략은 상대적으로 강한 지표 ((RSI) 와 부린 반지를 결합하여 단선 거래 전략을 구축한다. 이 전략은 주로 RSI 지표가 부린 반지를 뚫고 하향으로 갈 때 구매 및 판매 작업을 수행한다. 동시에, 전략은 손실 메커니즘을 포함하고 있으며 위험을 효과적으로 제어 할 수 있다.

전략 원칙

  1. RSI 지표값을 계산하고, 변수는 14주기로 설정한다.
  2. 브린 밴드 중선을 계산하여 RSI의 중도 이동 평균을 사용하며, 주기는 25 로 설정된다.
  3. 브린 띠의 상반도와 하반도, 상반도와 하반도, RSI 표준 차이의 20배로 설정
  4. RSI가 오르면 더 많이 하고, RSI가 오르면 더 적게 한다.
  5. 구매 가격의 6% 이하로 떨어지면 손실을 막기 위해 스톱 메커니즘을 설정합니다.

우위 분석

이 전략은 RSI 지표와 브린 밴드를 결합하여 두 가지의 장점을 효과적으로 활용하여 단선 거래를 할 수 있습니다. 주요 장점은 다음과 같습니다:

  1. RSI는 시장의 과매매 현상을 효율적으로 판단할 수 있다. 부린 대역과 결합하여 신호의 정확도를 향상시킬 수 있다.
  2. 브린은 시장의 변동 정도에 따라 자동으로 범위를 조정할 수 있는 Dynamic을 띠고 있다.
  3. 상쇄 메커니즘 설정은 합리적이고, 6%의 상쇄 폭으로, 정상적인 변동을 견딜 수 있고, 손실을 효과적으로 제어할 수 있다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. RSI 지표는 뒤처져 있고, 빠른 반전 기회를 놓칠 수 있다.
  2. 부린 벨트 파라미터가 잘못 설정되거나 시장의 급격한 변동이 발생하면 신호 오류가 발생할 수 있습니다.
  3. 스톱피스 설정이 부적절하고, 너무 광범위하거나 너무 급진적이어서 불필요한 손실을 증가시킬 수 있습니다.

대책과 해결책:

  1. KDJ와 같은 다른 지표와 결합하여 시장 상황을 종합적으로 판단할 수 있다.
  2. 동적으로 최적화된 브린 밴드 매개 변수, 다른 시장에 따라 매개 변수를 조정한다.
  3. 테스트 및 최적화 중지 위치, 최적의 파라미터를 설정한다.

최적화 방향

이 전략에는 더 많은 최적화할 수 있는 여지가 있습니다.

  1. 고정된 폭에서 동적 추적으로 조정되는 스톱로스를 고려할 수 있다. 이렇게 가격 변동에 따라 스톱 위치를 유연하게 조정할 수 있다.
  2. 부린 띠를 기반으로 부린 대역폭 지수 ((BBW) 의 판단 규칙을 추가할 수 있다. 부린 띠가 너무 확장하거나 수축하면 거래를 일시 중지하여 잘못된 신호를 방지할 수 있다.
  3. 거래량 지표, 에너지 물결과 같은 조건과 결합하여 양값 확인을 증가시킬 수 있습니다. 이것은 가짜 돌파구를 추가적으로 방지 할 수 있습니다.

요약하다

이 전략은 전체적으로 안정적이고 신뢰할 수 있는 단선 거래 전략이다. RSI 지표가 과매매를 판단하는 우위를 결합하고, 부린이 자동으로 변동 범위를 추적하는 특성을 결합하여, 약간의 우위를 가진 단선 전략을 형성한다. 매개 변수 최적화 및 규칙 최적화 후, 이 전략은 비교적 안정적인 수익을 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2022-12-12 00:00:00
end: 2023-10-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("rsi+bb st", shorttitle="rsibb st 0.3")

len_rsi=input(14)
len_bb = input(25)
mul10 = input(20.0)
mul=mul10/10
sl100 = input(94.0, title='stop loss rate')
sl=sl100/100

lw = 3

vwma_e(src, len) =>
    ema(src*volume, len)/ema(volume,len)

rsi = rsi(close, len_rsi)
plot(rsi, color=blue, title= 'rsi blue', linewidth=lw)
plot(70, color=gray, title='line 70', linewidth=lw)
plot(30, color=gray, title='line 30', linewidth=lw)

bbg = stdev(rsi, len_bb)*mul
bbc = vwma_e(rsi, len_bb)
//bbc=ema(rsi,len_bb)
ratio = 0.6
bbc := bbc*ratio + 50*(1-ratio)

bbu = bbc+bbg
bbl = bbc-bbg
plot(bbu, color=green, title='bb_up green', linewidth=lw)
plot(bbl, color=red, title='bb_low red', linewidth=lw)
plot(bbc, color=#808000ff, title='bb center', linewidth=lw)

plot(50, color=black)

lc = crossover(rsi, bbl) //or crossover(rsi, bbc)
sc = crossunder(rsi, bbu)

last_pos = 0*close
if lc
    last_pos := 1
else
    last_pos := last_pos[1]
if sc
    last_pos := 2

last_price = 0*close
if last_pos[1] !=1 and last_pos == 1
    last_price := close
else
    last_price := last_price[1]
    
if last_pos==1 and close < last_price*sl
    lc:=false
    sc:=true
    last_pos:=2

if (lc)
    strategy.entry("long", strategy.long)

if (sc)
    strategy.entry("short", strategy.short)