볼린저 밴드와 RSI를 기반으로 한 롱 스윙 트레이딩 전략


생성 날짜: 2024-03-11 11:51:22 마지막으로 수정됨: 2024-03-11 11:51:22
복사: 0 클릭수: 698
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드와 RSI를 기반으로 한 롱 스윙 트레이딩 전략

개요

이 전략은 부린 밴드 (Bollinger Band) 와 상대적으로 강한 지수 (RSI) 의 두 가지 기술 지표에 기반하여 상승 추세에서 다중 스윙 거래를합니다. 전략의 논리는 간단하지만 효과적입니다. 가격이 부린 밴드를 넘어 RSI가 35 이하로 떨어지면 상장하고, RSI가 69을 넘으면 평평합니다.

전략 원칙

  1. 계산 RSI: RMA ((Relative Moving Average) 를 사용하여 가격 상승과 하락의 평균을 각각 계산하고, 상승률을 더하여 전체 RSI를 얻습니다. RSI는 한 기간 동안의 가격의 강도를 나타냅니다.

  2. 브린 띠를 계산: SMA (Simple Moving Average) 를 사용하여 가격 평균을 계산하고, 더하기 빼기 표준 차이는 올라와 내려가는 궤도를 얻는다. 브린 띠는 동적으로 가격을 반영할 수 있는 변동 영역이다.

  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. 이동 평균과 같은 다른 기술 지표를 필터링으로 도입하는 것을 고려할 수 있습니다. 예를 들어, MA 다목적 배열에서만 포지션을 열면 신호의 신뢰성을 향상시킬 수 있습니다.

  2. RSI의 위아래 절벽, 브린 띠의 변수 등을 최적화하여 각 품종, 각 주기에서 가장 잘하는 변수 조합을 찾을 수 있습니다.

  3. 역시험을 기반으로 전향 테스트를 수행하고 시뮬레이션 거래를 수행하여 실제 거래 전에 전략의 효과와 안정성을 충분히 검증 할 수 있습니다.

  4. 포지션 관리, 다이내믹 스톱 스톱 손실 등의 방법을 통해 전략 철수를 더욱 제어하고, 위험 조정 후 수익을 향상시킬 수 있다.

  5. 이 전략은 포트폴리오에 포함될 수 있으며, 포트폴리오의 안정성을 높이기 위해 단독으로 사용하는 대신 다른 전략과 함께 보호할 수 있습니다.

요약하다

이 글은 부린띠와 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)