RSI에 기반한 볼링거 밴드 및 트렌드 추적 전략

저자:차오장, 날짜: 2024-02-05 11:02:51
태그:

img

이 전략은 볼링거 밴드 및 RSI 지표를 결합하여 가격 트렌드의 주요 전환점을 식별합니다. 트렌드가 역전될 때 포지션을 설정하고 트렌드 추진력을 따라 수익성있게 빠져 나갑니다.

전반적인 설명

이 전략은 먼저 볼링거 밴드의 상부 및 하부 밴드를 사용하여 가격 오스실레이션 범위 및 방향을 결정합니다. 그 다음 RSI 지표를 사용하여 긴 및 짧은 기회를 식별합니다. 예를 들어, RSI가 과잉 구매 / 과잉 판매 영역을 벗어날 때 하부 밴드 근처에 황금 십자가가 나타나면 긴 위치를 설정합니다. 또는 RSI가 과잉 구매 영역을 벗어날 때 상부 밴드 근처에 죽음의 십자가가 나타나면 짧은 위치를 설정합니다. 그 다음 Bollinger Bands의 동적 정지를 사용하여 정지 및 수익 목표를 추적합니다.

전략 논리

이 전략은 주로 볼링거 밴드와 RSI 지표의 조합을 사용하여 가격 트렌드의 주요 반전을 식별합니다.

볼링거 밴드 (Bollinger Band) 는 가격의 변동성 범위를 기반으로 상위 및 하위 대역을 계산하는 기술적 지표이다. 가격의 표준편차를 계산함으로써 가격 변동의 폭을 결정하고 이에 따라 상위 및 하위 한도를 그래프한다. 상위 대역은 가격 변동의 상위 한도를 나타내고 하위 대역은 하위 한도를 나타낸다. 가격이 상위 대역에 접근하면 가격이 황소 시장에서 상향으로 변동하고 있음을 나타냅니다. 따라서 잠재적 인 하락은 조심해야합니다. 가격이 하위 대역에 접근하면 가속화된 하락을 나타냅니다. 따라서 잠재적 인 반등은 조심해야합니다.

RSI는 가격 상승과 하락의 강도를 계산하여 가격 추세와 과잉 구매/ 과잉 판매 조건을 판단하는 기술적 지표이다. 기간 동안 평균 폐쇄 이익과 평균 폐쇄 손실을 비교함으로써, RSI는 지속적인 가격 상승 또는 하락의 동력을 측정한다. 70 이상의 RSI는 과잉 구매 조건을 나타내고 30 이하는 과잉 판매 조건을 나타냅니다. 이는 잠재적 인 가격 반전을 의미합니다.

이 전략의 거래 신호는 볼링거 밴드와 RSI 신호의 조합에서 나옵니다. 가격이 볼링거 밴드의 하단 밴드 아래로 떨어지는 동안 RSI가 과잉 구매 구역에서 중립 구역으로 떨어지면 상승 가격 추세가 무너지고 단편화 기회가 나타납니다. 우리는 단편 포지션을 설정할 수 있습니다. 반대로, 가격이 상단 범위를 넘어서면서 RSI가 과잉 판매 구역에서 중립 구역으로 상승하면 하위 가격 추세가 깨지고 긴 기회가 나타납니다. 우리는 긴 포지션을 설정할 수 있습니다.

포지션 설정 후 볼링거 밴드의 상부와 하부 밴드는 위험 관리 및 수익 목표를 위해 동적 스톱으로 사용됩니다. 가격이 뒤집어지고 다시 그 핵심 수준을 돌파 할 때 우리는 적시에 포지션을 닫습니다.

장점

이 전략의 가장 큰 장점은 가격의 주요 전환점을 식별 할 때 서로 확인하기 위해 볼링거 밴드 및 RSI 지표를 사용하는 것입니다. 볼링거 밴드를 혼자 사용하면 쉽게 잘못된 신호를 생성 할 수 있습니다. 그러나 RSI의 과잉 구매 / 과잉 판매 구역을 결합하면 잘못된 거래를 효과적으로 피할 수 있습니다. 또 다른 장점은 볼링거 밴드의 역동적 인 상위 및 하위 밴드를 이익 및 손실 중지로 사용하는 것입니다. 이는 고정 이익 및 손실 중지를 미리 설정하는 것보다 더 유연하고 합리적입니다.

위험성

이 전략의 주요 위험은 두 가지 측면에서 반영됩니다.

  1. 부적절한 Bollinger Bands 매개 변수 설정. Bollinger Bands 매개 변수가 너무 크거나 너무 작게 설정되면 증가하는 오스실레이션을 식별하는 효과가 크게 감소합니다.

  2. 지표로부터의 잘못된 신호. 이 전략은 주요 지점을 식별하기 위해 RSI 지표와 결합된 볼링거 밴드에 주로 의존합니다. 일부 개별 경우에 발산된 신호는 여전히 잘못 될 수 있습니다. 그 시간에 그들을 맹목적으로 따르는 것은 손실로 이어질 수 있습니다.

위의 위험을 해결하기 위해 최적화는 다음과 같은 측면에서 수행 할 수 있습니다.

  1. 합리적인 매개 변수를 설정하기 위해 다른 시장과 주기 기간에서 볼링거 밴드 매개 변수의 최적 값을 테스트합니다.

  2. 신호를 확인하고 단일 지표에서 잘못된 판단을 피하기 위해 다른 지표를 추가하십시오. KD와 같은 지표가 추가 될 수 있습니다.

  3. 특정 시장 조건에 따라 참여 여부를 결정하기 위해 수동 경험적 규칙을 추가합니다.

최적화

이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.

  1. 기본 조건에 적합한 최적의 매개 변수를 찾기 위해 볼링거 밴드 매개 변수를 테스트하고 최적화합니다.

  2. 스톱 로스 및 취익 전략을 추가하십시오. 트레일링 스톱 또는 이동 수익 타겟은 더 큰 수익을 확보하는 데 사용할 수 있습니다.

  3. 정확도를 높이기 위해 입시 신호를 확인하는 더 많은 지표와 패턴을 결합하십시오. 예를 들어 볼륨 가격 지표, 기본 요소 등을 포함합니다.

  4. 다양한 제품과 시장의 특성에 따라 매개 변수 최적화 조합을 설정하여 여러 매개 변수 조합으로 전략 풀을 구축합니다.

결론

이 전략은 볼링거 밴드 및 RSI 지표를 결합하여 두 지표가 서로 확인 될 때 주요 잠재적인 반전 지점을 식별합니다. 주요 시장 지점을 포착하는 데 비교적 신뢰할 수 있습니다. 스톱 손실 및 수익을 취하기위한 동적 대역도 합리적입니다. 그러나이 전략에는 여전히 위험이 있습니다. 따라서 운영 전략을 최적화하고 검증하기 위해 다른 도구가 필요합니다. 라이브 거래 중 거래 경험을 기반으로 한 수동 간섭도 필요합니다. 일반적으로 이것은 전형적인 양적 거래 전략입니다.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("TradeOptix 2.0", shorttitle="TradeOptix 2.0", overlay=true)


///////////// RSI
RSIlength = input(6, title='RSI Period Length')
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = ta.rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input.int(200, minval=1, title='Bollinger Period Length')
BBmult = 2  // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = ta.crossover(source, BBlower)
sellEntry = ta.crossunder(source, BBupper)
plot(BBbasis, color=color.new(color.aqua, 0), title='Bollinger Bands SMA Basis Line')
p1 = plot(BBupper, color=color.new(#7787b9, 0), title='Bollinger Bands Upper Line')
p2 = plot(BBlower, color=color.new(#7787b9, 0), title='Bollinger Bands Lower Line')
fill(p1, p2, color = color.rgb(40, 226, 255, 90))





///////////// RSI + Bollinger Bands Strategy
long = ta.crossover(vrsi, RSIoverSold) and ta.crossover(source, BBlower)
close_long = ta.crossunder(vrsi, RSIoverBought) and ta.crossunder(source, BBupper)

if not na(vrsi)

    if long
        strategy.entry('Long', strategy.long, stop=BBlower, alert_message = "Exit")
        alert("Enter Calls")
    else
        strategy.cancel(id='Long')
        alert("Exit Calls")

    if close_long
        strategy.close('Long',alert_message = "Exit")
        alert("Exit Calls")


plotshape(long, title='UpTrend Begins', location=location.belowbar, style=shape.flag, size=size.tiny, color=color.new(color.green, 0))
plotshape(close_long, title='DownTrend Begins', location=location.abovebar, style=shape.flag, size=size.tiny, color=color.new(color.red, 0))



더 많은