이 전략은 상승 추세에서 올림 스윙 거래를 위해 볼링거 밴드 및 상대적 강도 지수 (RSI) 라는 두 가지 기술 지표를 사용합니다. 전략 논리는 간단하지만 효과적입니다. 가격이 낮은 볼링거 밴드 아래로 넘어 RSI가 35 아래로 떨어지면 긴 포지션을 열고 RSI가 69를 넘으면 포지션을 닫습니다. 수익을 취하고 손실을 멈추는 수준도 설정됩니다.
RSI를 계산하십시오: 상대 이동 평균 (RMA) 을 사용하여 가격 상승과 감소의 평균 크기를 개별적으로 계산하고, 상승의 크기를 총 크기로 나누어 RSI를 얻습니다. RSI는 일정 기간 동안 가격 움직임의 힘을 반영합니다.
볼링거 밴드 계산: 가격 중선을 계산하기 위해 간단한 이동 평균 (SMA) 을 사용하여 상위 및 하위 밴드를 얻기 위해 표준 편차를 더하고 빼십시오. 볼링거 밴드는 가격 변동 범위를 동적으로 반영 할 수 있습니다.
오픈 롱: 가격이 낮은 볼링거 밴드 아래로 돌파되고 RSI가 35 미만일 때, 과판된 것으로 간주되며, 긴 포지션이 개척됩니다. 이 두 조건은 상향 반전의 시기를 포착 할 수 있습니다.
긴 포지션 폐쇄: RSI가 69을 넘으면 과잉 매수된 것으로 간주되며 긴 포지션은 수익을 확보하기 위해 폐쇄됩니다.
이윤을 취하고 손실을 중지하십시오: 포지션을 열었을 때, 이윤을 취하고 손실을 중지하는 가격은 사용자가 정의한 비율에 따라 계산됩니다. 이윤을 취하거나 손실을 멈추는 가격에 도달하면 포지션은 종료됩니다. 이것은 각 거래의 위험과 수익을 제어하는 데 도움이됩니다.
볼링거 밴드는 가격 변화의 범위를 객관적으로 반영하고 고정된 임계로 제한되지 않고 가격 흐름에 맞춰 조정할 수 있습니다.
RSI는 상승세와 하락세 사이의 균형을 직관적으로 반영할 수 있으며 상대적으로 객관적입니다. 과잉 구매 및 과잉 판매 조건을 결정하는 데 자주 사용됩니다.
상승 추세에 사용되면 스윙 거래에 더 적합합니다. 낮은 볼링거 밴드 및 낮은 RSI와 가격 리바운드를 캡처하고 높은 RSI로 포지션을 적시에 닫음으로써 단기 시장 움직임을 효과적으로 캡처 할 수 있습니다.
수익을 취하고 손실을 중지하는 설정은 전략의 위험을 제어 할 수 있습니다. 투자자는 자신의 위험 선호도에 따라 변수를 유연하게 설정할 수 있습니다.
전략 논리와 코드는 비교적 간단하고 이해하기 쉽고 구현하기 쉽고 백테스트 결과는 비교적 안정적입니다.
불안정한 시장에서 볼링거 밴드와 RSI는 너무 많은 거래 신호를 생성하여 높은 거래 빈도와 거래 비용을 증가시킬 수 있습니다.
RSI와 같은 단일 지표는 단기 가격 변동에 의해 쉽게 영향을 받으며 잘못된 신호를 생성 할 수 있습니다. 따라서 RSI 신호는 가격 추세와 함께 분석하는 것이 좋습니다.
볼링거 밴드 및 RSI 매개 변수 선택은 전략 성과에 상당한 영향을 미치며, 다른 시장과 도구는 다른 매개 변수를 요구할 수 있습니다. 사용자는 특정 상황에 따라 적절한 조정을 수행해야합니다.
예기치 않은 사건 또는 비정상적인 시장 조건의 경우 볼링거 밴드 및 RSI는 비효율적일 수 있습니다. 다른 위험 관리 조치가 없다면 전략에 상당한 마감을 가져올 수 있습니다.
필터링을 위해 이동 평균과 같은 다른 기술 지표를 도입하는 것을 고려하십시오. 예를 들어, 이동 평균이 상승률에 맞춰있을 때만 포지션을 열어서 신호의 신뢰성을 향상시킵니다.
RSI의 상단 및 하단 임계, 볼린거 밴드 매개 변수 등을 최적화하여 각 기기 및 시간 프레임에 대해 가장 좋은 성능 매개 변수 조합을 찾습니다.
백테스팅을 기반으로, 실시간 거래 전에 전략의 효과와 안정성을 완전히 검증하기 위해 전향 테스트와 적절한 시뮬레이션 거래를 수행합니다.
더 많은 통제 전략 마감 및 다른 방법의 위치 사이즈, 동적 취득 및 스톱 손실 등을 통해 위험 조정 수익을 개선합니다.
투자 포트폴리오에 전략을 포함하고 포트폴리오 안정성을 향상시키기 위해 단독으로 사용하지 않고 다른 헤지 전략과 함께 사용해야 합니다.
이 문서에서는 두 가지 기술 지표인 볼링거 밴드 (Bollinger Bands) 와 RSI를 기반으로 한 올림 스윙 트레이딩 전략을 소개한다. 이 전략은 상승 추세에서 단기 시장 움직임을 포착하는 데 적합하며, 그 논리와 구현은 비교적 간단하다. 가격이 하위 볼링거 밴드 (Bollinger Band) 와 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)