이 전략은 브린거 밴드 (Bollinger Band) 와 상대 강도 약도 (RSI) 를 기반으로 한 두 가지 기술 지표로, 상승 추세에서 멀티 헤드 스윙 거래를 수행합니다. 전략 논리는 간단하지만 효과적입니다: 가격이 브린거 밴드 (Bollinger Band) 를 넘어 RSI가 35 이하로 떨어지면 더 많이 열고 RSI가 69을 통과하면 평평합니다.
RSI를 계산한다: RMA (Relative Moving Average) 를 사용하여 가격 상승과 하락의 평균 크기를 계산하고, 상승 크기를 전체 크기로 나누면 RSI를 얻는다.
브린밴드를 계산한다. 단순한 이동 평균 (SMA) 을 사용하여 가격 평균을 계산하고 표준차점을 빼내며 상승과 하락을 계산한다. 브린밴드는 가격의 변동 범위를 동적으로 반영할 수 있다.
케이도: 가격이 브린 벨트 궤도를 넘어서고 RSI가 35보다 낮을 때, 오버셀로 판단하고, 이 때 오버셀로 판단한다. 이 두 조건은 상승 역전 시기를 포착한다.
핑도: RSI가 69을 타면, 과잉 구매로 판단하고, 이 때 다중 포지션을 평정하고, 수익을 잠금합니다.
스톱?? 스톱 손실: 거래 개시 후 사용자가 설정한 비율에 따라 스톱?? 가격과 스톱 손실 가격을 계산합니다. 스톱?? 가격이나 스톱?? 가격에 닿을 때 평형입니다. 이것은 각 거래의 위험과 수익을 제어 할 수 있습니다.
브린밴드는 가격운동 범위를 객관적으로 반영하고 가격운동과 동시 조정할 수 있으며 고정된 문턱에 제한되지 않습니다.
RSI는 보다 직관적으로 더 많은 빈 힘의 대조를 나타낼 수 있고, 상대적으로 객관적이며, 종종 과잉 구매와 과잉 판매를 판단하는 데 사용됩니다.
상승 추세에서 사용되므로, 휘날리는 거래에 더 적합하다. 브린 베인 다운트레인 및 낮은 RSI로 가격 리볼을 포착하고, 높은 RSI로 적시 평형을 통해 파장 시장을 효과적으로 파악할 수 있다.
항손실 설정은 전략적 위험을 통제할 수 있도록 하고 투자자는 자신의 위험 선호도에 따라 변수를 유연하게 설정할 수 있다.
전략 논리와 코드는 비교적 간단하고 이해하기 쉽고 구현하기 쉽고, 재검토 효과도 비교적 안정적입니다.
불안정한 시장의 경우, 브린밴드 및 RSI는 거래 빈도가 너무 높고 처리 비용이 증가하는 것으로 인해 더 많은 거래 신호를 발산 할 수 있습니다.
RSI와 같은 단일 지표는 단기 가격 변동에 쉽게 영향을 받으며 잘못된 신호를 생성합니다. 따라서 RSI 신호는 가격 움직임과 같이 분석하는 것이 좋습니다.
브린밴드와 RSI 파라미터의 선택은 전략 성능에 큰 영향을 미치며, 다른 시장과 품종에 따라 다른 파라미터가 요구될 수 있다. 사용자들은 특정 상황에 따라 적절한 조정을 해야 한다.
비상사태와 같은 특이한 상황에서는 브린 벨트와 RSI가 실패할 수 있다. 이 때 다른 바람 통제 수단이 없다면 전략에 큰 반기를 가져올 수 있다.
이동평균과 같은 다른 기술 지표를 도입하는 것이 필터링으로 고려될 수 있다. 예를 들어, M.A.가 다중으로 배치될 때만 거래를 개시하여 신호의 신뢰성을 높일 수 있다.
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)