리소스 로딩... 로딩...

볼링거 밴드 + RSI + 멀티 MA 트렌드 전략

저자:차오장, 날짜: 2024-05-27 15:20:40
태그:BBRSIMASMAMACD

img

전반적인 설명

이 전략은 볼링거 밴드, RSI, 여러 이동 평균 및 MACD 지표를 결합하여 완전한 거래 시스템을 구성합니다. 첫째, 그것은 가격 변동성 및 중간 밴드에 대한 가격의 위치를 결정하기 위해 볼링거 밴드를 사용합니다. 동시에, 그것은 RSI 지표를 사용하여 과잉 구매 및 과잉 판매 조건을 평가하고 RSI 오차를 사용하여 잠재적 인 트렌드 반전을 감지합니다. 여러 이동 평균이 트렌드 추적 및 지원 및 저항 수준을 결정하는 데 사용됩니다. 마지막으로 MACD 지표는 트렌드 및 잠재적 인 반전을 판단하는 데 도움이되기도합니다. 이러한 지표를 포괄적으로 고려함으로써 전략은 완전한 입문 및 출구 조건을 수립하여 거래 전략을 만듭니다.

전략 원칙

  1. 20기간의 볼링거 밴드 (Bollinger Band) 를 사용해서 중간에 있는 밴드에 대한 종료 가격의 위치에 기초하여 트렌드를 결정합니다.
  2. 14주기 RSI를 계산하고 30 및 70 레벨의 RSI의 크로스오버를 사용하여 잠재적인 반전을 인식하여 과판 및 과입 조건을 식별합니다.
  3. 34, 89, 144, 233, 377, 610의 기간을 가진 간단한 이동 평균을 계산합니다. 또한 지원 및 저항 수준으로 사용될 수있는 이동 평균의 상승 조정을 통해 트렌드를 확인합니다.
  4. MACD 지표를 12, 26, 9 매개 변수에 기초하여 계산하고, 트렌드 반전을 판단하는 데 도움을 주기 위해 MACD 히스토그램과 0축의 교차를 사용한다.
  5. 입출입 논리를 작성하기 위해 위의 지표를 종합적으로 평가하십시오.
    • 엔트리: 닫기 가격이 중간 볼링거 밴드 이상이고 단기 이동 평균이 장기 이동 평균 이상일 때 긴 포지션을 개척합니다.
    • 출구: 종료 가격이 중간 볼링거 밴드 이하로 떨어지면 포지션의 절반을 닫고, 단기 이동 평균이 장기 이동 평균 이하로 떨어지면 모든 포지션을 닫습니다.

전략적 장점

  1. 볼링거 대역은 가격 변동성을 객관적으로 수치화할 수 있으며, 유행 결정의 기초를 제공합니다.
  2. RSI 지표의 도입은 과잉 구매 및 과잉 판매 상황을 파악하고 잠재적인 트렌드 역전 기회를 포착하는 데 도움이됩니다.
  3. 여러 이동 평균의 조합은 다른 시간 스케일을 통해 트렌드 조건의 더 포괄적인 분석을 가능하게합니다.
  4. MACD 지표는 트렌드 및 역행에 대한 보조 판단으로 작용하여 신호의 신뢰성을 향상시킬 수 있습니다.
  5. 엔트리 앤드 엑시트 로직은 트렌드가 불확실할 때 위험을 통제하기 위해 점차적으로 포지션을 줄이는 포지션 관리의 아이디어를 포함합니다.

전략 위험

  1. 불안정한 시장에서 볼링거 밴드 및 이동 평균 시스템은 빈번하고 모순적인 신호를 생성 할 수 있습니다.
  2. RSI 및 MACD 지표는 강한 트렌드 시장에서 장기간 과소 구매 또는 과소 판매 구역에 머물러 예측 능력을 잃을 수 있습니다.
  3. 매개 변수 선택 (볼린저 밴드 기간, 이동 평균 기간 등) 은 특정 주관성을 가지고 있으며 다른 매개 변수가 다른 결과를 초래할 수 있습니다.
  4. 스톱 로스 메커니즘이 없는 경우 개별 거래의 위험이 커질 수 있습니다.
  5. 이 전략은 블랙 스완과 같은 극단적인 사건에 즉각적으로 대응할 수 없을 수도 있습니다.

전략 최적화 방향

  1. 각 지표에 대한 매개 변수, 예를 들어 볼린거 밴드의 기간과 폭, RSI의 기간 및 임계 등에 대한 보다 체계적인 최적화를 수행합니다.
  2. 신호의 신뢰성을 높이기 위해 거래량 변화와 같은 더 많은 확인 신호를 도입합니다.
  3. 개인 거래의 위험을 더 잘 제어하기 위해 입출장 조건에 스톱 로스 및 영업 취득 메커니즘을 포함합니다.
  4. 다른 시장 조건에서 포지션을 유연하게 조정하고 위험/이익 비율을 향상시키기 위해 포지션 조정 메커니즘을 도입하는 것을 고려하십시오.
  5. VIX 인덱스를 기반으로 하는 헤지 또는 알파 요인을 동적으로 가중하는 것과 같은 극단적인 사건에 대한 비상 계획을 설계하십시오.

요약

이 전략은 트렌드 식별, 과잉 구매 및 과잉 판매 판단, 다중 시간 규모 분석 및 위치 제어 등 여러 차원에서 비교적 포괄적인 거래 시스템을 구축합니다. 그러나 전략은 불안정한 시장과 극단적인 이벤트에 대처하는 데 더 많은 최적화가 필요하며 더 체계적인 매개 변수 최적화 및 위험 통제가 부족합니다. 미래에 전략은 더 정교한 신호 필터링, 동적 무게 조정 및 극단적인 이벤트에 대한 대응 측면에서 계속 개선 될 수 있습니다. 지속적인 백테스팅 최적화 및 라이브 거래 검증을 통해이 전략은 견고하고 지속 가능한 양적 거래 전략으로 성장할 잠재력을 가지고 있습니다.


/*backtest
start: 2023-05-21 00:00:00
end: 2024-05-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands + RSI Strategy with MA", overlay=true)

// Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Mult")
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper_band = basis + dev
lower_band = basis - dev

// RSI
rsi_length = input.int(14, title="RSI Length")
rsi_oversold = input.int(30, title="RSI Oversold", minval=0, maxval=100)
rsi_overbought = input.int(70, title="RSI Overbought", minval=0, maxval=100)
rsi = ta.rsi(close, rsi_length)

// RSI Divergence
rsi_divergence_bottom = ta.crossunder(rsi, rsi_oversold)
rsi_divergence_peak = ta.crossunder(rsi_overbought, rsi)

// Moving Averages
ma34 = ta.sma(close, 34)
ma89 = ta.sma(close, 89)
ma144 = ta.sma(close, 144)
ma233 = ta.sma(close, 233)
ma377 = ta.sma(close, 377)
ma610 = ta.sma(close, 610)

// MACD Calculation
[macd_line, signal_line, _] = ta.macd(close, 12, 26, 9)
macd_histogram = macd_line - signal_line

// MACD Divergence
macd_divergence_bottom = ta.crossunder(macd_histogram, 0)
macd_divergence_peak = ta.crossover(macd_histogram, 0)

// Conditions for Buy and Sell
basis_gt_ma34 = basis > ma34
ma34_gt_ma89 = ma34 > ma89

// Entry condition
buy_condition = basis_gt_ma34 and ma34_gt_ma89 
sell_condition =  basis <ma34

// Calculate position size
position_size = 1.0  // 100% capital initially

// Update position size based on conditions
if (sell_condition)
    position_size := 0.5  // Sell half of the position
if (not basis_gt_ma34)
    position_size := 0.0  // Sell all if basis < ma34

// Entry and exit strategy
if (buy_condition)
    strategy.entry("Buy", strategy.long, qty=position_size)
if (sell_condition)
    strategy.close("Buy")

// Plot Bollinger Bands and Moving Averages
bb_fill_color = basis > basis[1] ? color.new(color.blue, 90) : color.new(color.blue, 10)
plot(basis, color=color.blue, title="Basis")
plot(upper_band, color=color.red, title="Upper Band")
plot(lower_band, color=color.green, title="Lower Band")
fill(plot1=plot(upper_band), plot2=plot(lower_band), color=bb_fill_color, title="BB Fill")
plot(ma34, color=color.orange, title="MA34")
plot(ma89, color=color.purple, title="MA89")
plot(ma144, color=color.gray, title="MA144")
plot(ma233, color=color.blue, title="MA233")
plot(ma377, color=color.red, title="MA377")
plot(ma610, color=color.green, title="MA610")

// Plot RSI Divergence
plotshape(series=rsi_divergence_bottom, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small)
plotshape(series=rsi_divergence_peak, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small)

// Plot MACD Histogram Divergence
plotshape(series=macd_divergence_bottom, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(series=macd_divergence_peak, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)


관련

더 많은