볼링거 밴드 및 RSI 트렌드 다음 전략

저자:차오장, 날짜: 2023-12-20 14:32:40
태그:

img

전반적인 설명

이 전략은 볼링거 밴드, RSI 지표 및 200주기 이동 평균을 사용하여 트렌드 방향을 파악하고 트렌드 방향이 적절할 때 볼링거 밴드 근처에서 트렌드 반대 거래를 수행하여 수익을 창출합니다.

전략 논리

우선, 200주기 이동 평균은 전체 트렌드 방향을 결정하는 데 사용됩니다. 가격이 이동 평균보다 높을 때 상승 추세가 정의되며 가격이 아래로 떨어질 때 하락 추세가 정의됩니다. 둘째, 상승 추세에 있을 때, RSI 지표가 과소매를 표시하고 볼링거 하부 밴드에 가까워지면 긴 엔트리가 실행됩니다. 하락 추세에있을 때, RSI가 과소매를 표시하고 볼링거 상부 밴드에 가까워지면 짧은 엔트리가 실행됩니다. 마지막으로, ATR 지표는 스톱 손실 수준을 설정하는 데 사용됩니다. 수익을 취하는 것은 스톱 손실의 2 배로 설정됩니다.

이점 분석

이 전략의 가장 큰 장점은 트렌드 방향과 엔트리의 시기를 결정하기 위해 여러 지표를 결합한다는 것입니다. 첫째, 200 일 이동 평균은 주요 트렌드를 효과적으로 식별 할 수 있습니다. 둘째, 볼링거 밴드의 상부 / 하부 밴드는 가격이 역전 될 수있는 지역을 나타냅니다. 마지막으로, RSI는 가능한 역전 시기를 제안합니다. 여러 지표의 사용은 단일 지표에서 잘못된 판단의 위험을 피합니다.

위험 분석

이 전략의 주요 위험은 주요 트렌드와 역전 신호의 부정확한 식별에서 비롯됩니다. 트렌드가 잘못 판단되면 연속 손실로 이어질 수 있습니다. 역전 신호가 잘못되면 스톱 로스가 유발되는 확률이 높습니다. 또한 역전 트렌드 거래 자체는 신중한 운영을 필요로하는 더 높은 위험을 가지고 있습니다.

위의 위험을 완화하기 위해 이동 평균의 매개 변수를 조정하거나 정확성을 향상시키기 위해 다른 지표를 추가하는 것이 좋습니다. 또한 스톱 로스 레벨은 너무 쉽게 작동되는 것을 방지하기 위해 느려질 수 있습니다.

최적화 방향

이 전략을 최적화 할 수있는 많은 공간이 있습니다: 첫째, 트렌드 식별의 정확성을 향상시키기 위해 이동 평균의 매개 변수를 조정하십시오. 둘째, 볼링거 밴드의 매개 변수를 조정하거나 역전 구역을 더 잘 찾기 위해 칼만 채널을 추가하십시오. 셋째, 잘못된 신호를 피하기 위해 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)



  

더 많은