
이 전략은 부린 밴드 (Bollinger Band) 와 상대적으로 강한 지수 (RSI) 의 두 가지 기술 지표에 기반하여 상승 추세에서 다중 스윙 거래를합니다. 전략의 논리는 간단하지만 효과적입니다. 가격이 부린 밴드를 넘어 RSI가 35 이하로 떨어지면 상장하고, RSI가 69을 넘으면 평평합니다.
계산 RSI: RMA ((Relative Moving Average) 를 사용하여 가격 상승과 하락의 평균을 각각 계산하고, 상승률을 더하여 전체 RSI를 얻습니다. RSI는 한 기간 동안의 가격의 강도를 나타냅니다.
브린 띠를 계산: SMA (Simple Moving Average) 를 사용하여 가격 평균을 계산하고, 더하기 빼기 표준 차이는 올라와 내려가는 궤도를 얻는다. 브린 띠는 동적으로 가격을 반영할 수 있는 변동 영역이다.
상장: 가격이 부린 반도 아래로 떨어지고 RSI가 35보다 작으면 과매매로 판단하여 상장한다. 이 두 가지 조건은 상향 반전의 시간을 잡을 수 있다.
핑도: RSI가 69을 넘으면 과매매로 판단하고, 이 때 상위 포지션을 매각하여 수익을 고정한다.
정지 손실: 입장을 열고 나서, 사용자가 설정한 비율에 따라 정지 가격과 정지 가격을 계산한다. 정지 가격이나 정지 가격에 닿을 때 평지 상태이다. 이것은 각 거래의 위험과 수익을 제어할 수 있다.
브린띠는 물가운동의 범위를 객관적으로 반영하고, 물가운동과 동시적으로 조정할 수 있으며, 고정 하락의 제한을 받지 않는다.
RSI는 직관적으로 상공의 힘의 대립을 반영할 수 있고, 상대적으로 객관적이기도 하며, 종종 과매매를 판단하는 데 사용된다.
상승 추세에서 사용하는 것은, 스윙 거래에 더 적합하다. 부린이 하향 궤도와 낮은 RSI를 통해 가격 반동을 잡고, 높은 RSI를 통해 적시에 평점, 파동대 상황을 효과적으로 파악할 수 있다.
스톱톱로스 설정은 전략적 위험을 제어할 수 있게 하고, 투자자는 자신의 위험 선호에 따라 유연하게 매개 변수를 설정할 수 있다.
전략 논리 및 코드는 비교적 간단하고 이해하기 쉽고 실행이 가능하며, 재검토 효과도 비교적 안정적이다.
위기상황의 경우, 브린띠와 RSI가 거래 신호를 더 많이 발산할 수 있으며, 이는 거래 빈도가 높고 수수료 비용이 증가하는 데 영향을 미칩니다.
RSI와 같은 단일 지표는 단기 가격 변동에 영향을 받기 쉽고, 잘못된 신호를 생성합니다. 따라서 RSI 신호는 가격 움직임과 함께 분석하는 것이 좋습니다.
브린 띠와 RSI의 선택은 전략의 성과에 큰 영향을 미치며, 다른 시장과 품종에는 다른 파라미터가 필요할 수 있습니다. 사용자는 상황에 따라 적절한 조정을해야합니다.
갑작스러운 사건과 같은 비정상적인 상황에서, 부린 띠와 RSI는 무효가 될 수 있다. 이 때 다른 풍력 제어 수단이 없다면, 전략에 더 큰 회전을 가져올 수 있다.
이동 평균과 같은 다른 기술 지표를 필터링으로 도입하는 것을 고려할 수 있습니다. 예를 들어, MA 다목적 배열에서만 포지션을 열면 신호의 신뢰성을 향상시킬 수 있습니다.
RSI의 위아래 절벽, 브린 띠의 변수 등을 최적화하여 각 품종, 각 주기에서 가장 잘하는 변수 조합을 찾을 수 있습니다.
역시험을 기반으로 전향 테스트를 수행하고 시뮬레이션 거래를 수행하여 실제 거래 전에 전략의 효과와 안정성을 충분히 검증 할 수 있습니다.
포지션 관리, 다이내믹 스톱 스톱 손실 등의 방법을 통해 전략 철수를 더욱 제어하고, 위험 조정 후 수익을 향상시킬 수 있다.
이 전략은 포트폴리오에 포함될 수 있으며, 포트폴리오의 안정성을 높이기 위해 단독으로 사용하는 대신 다른 전략과 함께 보호할 수 있습니다.
이 글은 부린띠와 RSI 두 가지 기술 지표에 기반한 다중 스윙 거래 전략을 소개한다. 이 전략은 상승 추세에서 파동의 흐름을 포착하는 데 적합하며, 논리 및 구현은 비교적 간단하다. 부린띠를 통해 하차와 낮은 RSI를 열고, 높은 RSI를 평형화하고, 또한 스톱 스로프를 설정한다. 전략의 장점은 가격의 변동 간격과 다중 힘 대립을 객관적으로 반영할 수 있다는 점이며, 위험도 비교적 통제 가능하다. 그러나 특정 사용에서는 거래 주파수를 제어하는 데 주의를 기울여야 하며, 더 많은 지표 스톱 신호, 좋은 변수 최적화 및 포지션 관리 등을 결합한다.
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(69, "Upper Band", color=#C0C0C0)
band0 = hline(31, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")
length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)
Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)
long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
entry_long = rsi < 35.58 and src < lower
exit_long = rsi > 69
plotshape(entry_long, style=shape.labelup, color=color.green, location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red, location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")
strategy.entry("Long",true,when=entry_long)
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)