RSI-BB 모멘텀 브레이크아웃 전략은 브레이크아웃 거래를 위해 상대 강도 지수 (RSI) 와 볼링거 밴드 (BB) 지표를 결합합니다. RSI를 사용하여 시장 추세와 과잉 구매/ 과잉 판매 수준을 결정하고 BB를 사용하여 브레이크아웃 지점을 식별합니다. RSI와 BB 신호가 모두 일치하면 전략은 그에 따라 긴 또는 짧은 거래를 수행합니다.
코드는 먼저 RSI와 BB 지표를 계산합니다.
RSI는 다음과 같이 계산됩니다.
up = rma(max(change(close), 0), 30)
down = rma(-min(change(close), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
상향은 30개 기간 동안 상승세를 측정하고, 하향은 하락세를 측정하며, rsi는 상하율의 비율을 기준으로 계산됩니다.
BB는 다음과 같이 계산됩니다.
basis = sma(close, 50)
dev = 0.2 * stdev(close, 50)
upper = basis + dev
lower = basis - dev
기본은 50기 이동평균이고, dev는 표준편차의 0.2배이고, 상단과 하단은 밴드입니다.
bbi는 다음과 같이 계산된 볼링거 대역폭 지수입니다.
bbr = close>upper? 1 : close<lower? -1 : 0
bbi = bbr - bbr[1]
bbr는 상단 또는 하단 밴드를 닫는 것을 검사합니다. 브레이크아웃은 1, 파업은 -1, 그렇지 않으면 0. bbi는 현재와 이전 bbr 사이의 차이입니다. 양성 bbi는 상향 브레이크아웃을 나타냅니다. 음성은 하향을 나타냅니다.
전략 신호는 다음과 같이 결정됩니다.
long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7
short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7
RSI가 52-65, BBI가 0.11에서 0.7 사이일 때 장거리, RSI가 35-48, BBI가 -0.11에서 -0.7 사이일 때 단거리.
RSI와 BB를 결합하면 더 신뢰할 수 있는 신호를 제공합니다. RSI는 트렌드와 과잉 구매/ 과잉 판매 수준을 측정하고 BB는 브레이크오웃을 식별합니다.
30주기 RSI는 시장 소음을 필터링하고 주요 트렌드에 초점을 맞추고 있습니다.
0.2 표준편차로 50주기 BB는 윙사우를 필터링하는 데 도움이 됩니다.
BBI 문턱은 가짜 탈출을 필터합니다.
52-65 및 35-48의 RSI 긴/단지 구역은 놓친 거래를 피하기 위해 약간의 버퍼를 제공합니다.
브레이크오웃 전략은 휘파람에 걸리기 쉽기 때문에 스톱 로스로 위험을 관리해야 합니다.
백테스트 결과는 과장될 수 있고 실전 성능은 달라질 수 있습니다.
극단적인 시장 움직임은 큰 손실로 이어지는 스톱 로드를 발생시킬 수 있습니다.
기간과 임계 기준을 포함한 RSI와 BB 매개 변수를 최적화해야 합니다.
주문 가격은 라이브 성능에 상당한 영향을 줄 수 있습니다.
최적의 설정을 찾기 위해 RSI와 BB 매개 변수의 다른 조합을 테스트합니다.
신호 필터링을 위해 MACD, KD와 같은 다른 지표를 추가합니다.
더 많은 잡음을 필터링하기 위해 RSI 긴/단한 영역을 최적화합니다.
역동적인 BBI 문턱을 최적화하여 가짜를 더 잘 필터합니다.
트렌드 필터를 추가하여 주요 트렌드에 반하는 거래를 피합니다.
최적의 리스크 통제를 찾기 위해 다른 스톱 로스 기술을 테스트합니다.
다른 주문 유형을 테스트하여 미끄러진 영향을 최소화합니다.
RSI-BB 전략은 트렌드 및 모멘텀 지표를 사용하는 장점을 결합합니다. 백테스트 결과는 유망하지만 실전 성능은 미끄러짐 및 스톱 손실과 같은 실제 세계 요인에 따라 다를 수 있습니다. 패러미터 및 필터는 백테스트 결과에 따라 최적화되어야합니다. 스톱 손실 및 주문 배치 또한 실제 세계 효과에 대해 평가해야합니다. 전략은 가치가 있지만 일관성있는 결과를 창출하기 위해 지속적인 개선과 견고성 테스트가 필요합니다.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Based on Larry Connors RSI-2 Strategy - Lower RSI strategy(title="Spyfrat Strat", shorttitle="SpyfratStrat", overlay=true) src = close, // BB Init source = close length = input(50, minval=1) mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50) alertLevel=input(0.1) impulseLevel=input(0.75) showRange = input(false, type=bool) //RSI CODE up = rma(max(change(src), 0), 30) down = rma(-min(change(src), 0), 30) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //BB CODE basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.1 bbi = bbr - nz(bbr[1]) //Rule long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7 short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7 //Trade Entry strategy.entry("long", strategy.long, when=long) strategy.entry("short", strategy.short, when=short) //Trade Exit TP = input(250) * 10 SL = input(20) * 10 TS = input(0) * 10 CQ = 100 TPP = (TP > 0) ? TP : na SLP = (SL > 0) ? SL : na TSP = (TS > 0) ? TS : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)