볼링거 밴드 및 RSI를 기반으로 한 상승 스윙 거래 전략

저자:차오장, 날짜: 2024-03-11 11:51:22
태그:

img

전반적인 설명

이 전략은 상승 추세에서 올림 스윙 거래를 위해 볼링거 밴드 및 상대적 강도 지수 (RSI) 라는 두 가지 기술 지표를 사용합니다. 전략 논리는 간단하지만 효과적입니다. 가격이 낮은 볼링거 밴드 아래로 넘어 RSI가 35 아래로 떨어지면 긴 포지션을 열고 RSI가 69를 넘으면 포지션을 닫습니다. 수익을 취하고 손실을 멈추는 수준도 설정됩니다.

전략 원칙

  1. RSI를 계산하십시오: 상대 이동 평균 (RMA) 을 사용하여 가격 상승과 감소의 평균 크기를 개별적으로 계산하고, 상승의 크기를 총 크기로 나누어 RSI를 얻습니다. RSI는 일정 기간 동안 가격 움직임의 힘을 반영합니다.

  2. 볼링거 밴드 계산: 가격 중선을 계산하기 위해 간단한 이동 평균 (SMA) 을 사용하여 상위 및 하위 밴드를 얻기 위해 표준 편차를 더하고 빼십시오. 볼링거 밴드는 가격 변동 범위를 동적으로 반영 할 수 있습니다.

  3. 오픈 롱: 가격이 낮은 볼링거 밴드 아래로 돌파되고 RSI가 35 미만일 때, 과판된 것으로 간주되며, 긴 포지션이 개척됩니다. 이 두 조건은 상향 반전의 시기를 포착 할 수 있습니다.

  4. 긴 포지션 폐쇄: RSI가 69을 넘으면 과잉 매수된 것으로 간주되며 긴 포지션은 수익을 확보하기 위해 폐쇄됩니다.

  5. 이윤을 취하고 손실을 중지하십시오: 포지션을 열었을 때, 이윤을 취하고 손실을 중지하는 가격은 사용자가 정의한 비율에 따라 계산됩니다. 이윤을 취하거나 손실을 멈추는 가격에 도달하면 포지션은 종료됩니다. 이것은 각 거래의 위험과 수익을 제어하는 데 도움이됩니다.

이점 분석

  1. 볼링거 밴드는 가격 변화의 범위를 객관적으로 반영하고 고정된 임계로 제한되지 않고 가격 흐름에 맞춰 조정할 수 있습니다.

  2. RSI는 상승세와 하락세 사이의 균형을 직관적으로 반영할 수 있으며 상대적으로 객관적입니다. 과잉 구매 및 과잉 판매 조건을 결정하는 데 자주 사용됩니다.

  3. 상승 추세에 사용되면 스윙 거래에 더 적합합니다. 낮은 볼링거 밴드 및 낮은 RSI와 가격 리바운드를 캡처하고 높은 RSI로 포지션을 적시에 닫음으로써 단기 시장 움직임을 효과적으로 캡처 할 수 있습니다.

  4. 수익을 취하고 손실을 중지하는 설정은 전략의 위험을 제어 할 수 있습니다. 투자자는 자신의 위험 선호도에 따라 변수를 유연하게 설정할 수 있습니다.

  5. 전략 논리와 코드는 비교적 간단하고 이해하기 쉽고 구현하기 쉽고 백테스트 결과는 비교적 안정적입니다.

위험 분석

  1. 불안정한 시장에서 볼링거 밴드와 RSI는 너무 많은 거래 신호를 생성하여 높은 거래 빈도와 거래 비용을 증가시킬 수 있습니다.

  2. RSI와 같은 단일 지표는 단기 가격 변동에 의해 쉽게 영향을 받으며 잘못된 신호를 생성 할 수 있습니다. 따라서 RSI 신호는 가격 추세와 함께 분석하는 것이 좋습니다.

  3. 볼링거 밴드 및 RSI 매개 변수 선택은 전략 성과에 상당한 영향을 미치며, 다른 시장과 도구는 다른 매개 변수를 요구할 수 있습니다. 사용자는 특정 상황에 따라 적절한 조정을 수행해야합니다.

  4. 예기치 않은 사건 또는 비정상적인 시장 조건의 경우 볼링거 밴드 및 RSI는 비효율적일 수 있습니다. 다른 위험 관리 조치가 없다면 전략에 상당한 마감을 가져올 수 있습니다.

최적화 방향

  1. 필터링을 위해 이동 평균과 같은 다른 기술 지표를 도입하는 것을 고려하십시오. 예를 들어, 이동 평균이 상승률에 맞춰있을 때만 포지션을 열어서 신호의 신뢰성을 향상시킵니다.

  2. RSI의 상단 및 하단 임계, 볼린거 밴드 매개 변수 등을 최적화하여 각 기기 및 시간 프레임에 대해 가장 좋은 성능 매개 변수 조합을 찾습니다.

  3. 백테스팅을 기반으로, 실시간 거래 전에 전략의 효과와 안정성을 완전히 검증하기 위해 전향 테스트와 적절한 시뮬레이션 거래를 수행합니다.

  4. 더 많은 통제 전략 마감 및 다른 방법의 위치 사이즈, 동적 취득 및 스톱 손실 등을 통해 위험 조정 수익을 개선합니다.

  5. 투자 포트폴리오에 전략을 포함하고 포트폴리오 안정성을 향상시키기 위해 단독으로 사용하지 않고 다른 헤지 전략과 함께 사용해야 합니다.

요약

이 문서에서는 두 가지 기술 지표인 볼링거 밴드 (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)


더 많은