볼린저 밴드 + RSI + 다중 이동 평균 추세 전략

BB RSI MA SMA MACD
생성 날짜: 2024-05-27 15:20:40 마지막으로 수정됨: 2024-05-27 15:20:40
복사: 2 클릭수: 1189
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드 + RSI + 다중 이동 평균 추세 전략

개요

이 전략은 브린 밴드, RSI, 여러 이동 평균 및 MACD 지표를 결합하여 완전한 거래 시스템을 구축합니다. 우선 브린을 통해 가격의 변동 상황을 판단하고, 가격에 대한 브린 밴드 중간 궤도에 대한 위치를 사용하여 추세를 결정합니다. 동시에 RSI 지표를 사용하여 과매를 판단하고, RSI 회전을 사용하여 잠재적인 추세 반전을 식별합니다. 여러 이동 평균은 추세를 추적하고 저항 지점을 판단하는 데 사용됩니다. 마지막으로 MACD 지표는 추세와 잠재적인 반전을 판단하는 데 도움이됩니다.

전략 원칙

  1. 20주기, 2배 표준이 나쁜 브린띠를 사용하여, 종전 가격의 브린띠 중간 궤도에 대한 위치로 트렌드를 판단한다.
  2. 14주기 RSI를 계산하고 RSI가 30과 70의 레벨과 교차하여 과매매와 과매매를 판단하여 잠재적인 반전을 식별합니다.
  3. 34, 89, 144, 233, 377 및 610 주기의 간단한 이동 평균을 계산하고, 평균선의 다중 머리 배열을 통해 트렌드를 확인합니다. 평균선은 또한 지지 저항 지점으로 사용할 수 있습니다.
  4. 12,26,9 변수를 기반으로 MACD 지표를 계산하고 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)