이 전략은 주로 거래 신호 판단을 위해 상대 강도 지수 (RSI) 와 볼링거 밴드를 결합하여 사용합니다. 구체적으로, RSI가 과소매 수준 이상과 하부 볼링거 밴드 아래에 넘어가면 길게 가고, RSI가 과소매 수준 아래와 상부 볼링거 밴드 위에 넘어가면 짧게됩니다.
이 전략은 먼저 RSI 지표와 볼링거 밴드를 계산합니다. RSI 지표는 거래 도구의 상대적 강도를 반영합니다. RSI가 과잉 판매 구역 (디폴트 30) 이하일 때, 그것은 도구가 과잉 판매되어 구매해야한다는 것을 의미합니다. 볼링거 밴드는 상위 밴드, 중간 밴드 및 하위 밴드를 포함하며, 이는 가격 변동 범위를 잘 반영합니다. 하위 밴드 근처에서 구매하고 상위 밴드 근처에서 판매하면 비교적 신뢰할 수있는 신호를 제공할 수 있습니다. 이 전략은 거래 신호 판단을 위해 RSI 지표와 볼링거 밴드를 결합합니다. RSI가 과잉 판매 구역에서 위로 올라갈 때 구매 신호를 생성하고 (디폴트 30) 하위 밴드에서 가격이 위로 올라갈 때 판매 신호를 생성합니다. RSI가 과잉 판매 구역에서 아래로 떨어질 때 판매 신호를 생성하고 (디폴트 70 가격) 상위 밴드에서 아래로 떨어집니다.
해결책:
전체 전략은 견고하며, 스톱 로스를 위해 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)