볼린저 밴드와 RSI를 기반으로 한 트렌드 추종 전략


생성 날짜: 2023-12-20 14:32:40 마지막으로 수정됨: 2023-12-20 14:32:40
복사: 0 클릭수: 815
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

볼린저 밴드와 RSI를 기반으로 한 트렌드 추종 전략

개요

이 전략은 부린띠, RSI 지표 및 200주기 이동 평균을 사용하여 트렌드 방향을 식별하고, 트렌드 방향이 적합할 때 부린띠의 상하 궤도 근처에서 반전 거래를 하여 수익을 얻습니다.

전략 원칙

첫째, 200주기 이동 평균을 사용하여 대략적인 트렌드 방향을 판단하고, 가격이 상승할 때 다단계로 정의되고, 가격이 하락할 때 하위 경향으로 정의된다. 둘째, 다단계 트렌드에 있을 때, RSI 지표가 oversold을 표시하고 부린 반이 하락할 때, 구매를 실행한다.

우위 분석

이 전략의 가장 큰 장점은 여러 지표를 통합적으로 사용하여 트렌드 방향과 거래 시간을 판단하는 것입니다. 첫째, 200 일 이동 평균은 큰 트렌드 방향을 효과적으로 판단 할 수 있습니다. 둘째, 브린이 경로를 따라가는 것은 가격이 반전 할 수있는 지역을 보여줄 수 있습니다. 마지막으로, RSI 지표는 가격이 반전 할 수있는 시간을 보여줍니다.

위험 분석

이 전략의 주요 위험은 큰 트렌드 판단 오류와 역전 신호 발송 오류에 있다. 큰 트렌드 판단 오류가 발생하면 지속적인 손실이 발생할 가능성이 높으며, 역전 신호 발송 오류가 발생하면 정지 손실이 유발될 확률이 상대적으로 높다. 또한, 역전 htrading 자체는 높은 위험으로 인해 신중하게 작동해야 한다.

위와 같은 위험을 피하기 위해, 이동 평균 파라미터를 적절히 조정하거나, 다른 지표를 추가하여 확인하여 판단 정확도를 높이는 것이 좋습니다. 또한, 스톱 손실의 폭을 적절히 완화하여 스톱 손실이 너무 쉽게 유발되는 것을 피하는 것이 좋습니다.

최적화 방향

이 전략의 최적화 공간은 넓으며, 다음과 같은 몇 가지 측면에서 시작할 수 있습니다: 첫째, 이동 평균 파라미터를 조정하여 큰 추세를 판단하는 최적화 정확성. 둘째, 브린 밴드 파라미터를 조정하거나 칼만 통로를 추가하여 가격 반전 지역 판단의 효과를 향상시킵니다. 셋째, MACD와 같은 다른 지표를 추가하여 반전 확인을 수행하여 잘못된 신호를 줄입니다. 넷째, 실제 중지 손실이 유발되는 확률을 낮추기 위해 중지 손실 비율 설정을 최적화하십시오.

요약하다

이 전략은 브린 밴드, RSI 지표 및 이동 평균을 통합하여 추세와 거래 시기를 판단하여 좋은 효과를 달성했습니다. 그러나 안정적인 수익성을 높이기 위해 파라미터 설정 및 위험 관리를 추가로 최적화해야 합니다. 전체적으로 이 전략은 명확하고 구현하기 쉽습니다.

전략 소스 코드
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Gab EMA + rsi + bb", overlay=true)
// Custom RSI
RSIlength = input(3, minval=1 , title="lookback length of RSI")
RSIOverBought = input(70, title="RSI OB")
RSIOverSold = input(30, title="RSI OS")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)


//Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close

//EMA
emaLength=input(200)

//Set TP and SL values
sl_short = high + (syminfo.mintick * 5 * 10)
tp_short = low - (syminfo.mintick * 10 * 10)
sl_long = low - (syminfo.mintick * 5 * 10)
tp_long = high + (syminfo.mintick * 10 * 10)


//Strategy Entry and Exit
strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed)
strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0)

strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed)
strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)