볼린저 밴드 모멘텀 반전 양적 전략

BB SMA SD
생성 날짜: 2024-09-26 16:21:10 마지막으로 수정됨: 2024-09-26 16:21:10
복사: 9 클릭수: 525
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드 모멘텀 반전 양적 전략

개요

볼링거 밴드 동력 역전량화 전략은 기술 분석에 기반한 거래 시스템으로, 주로 볼링거 밴드 지표를 사용하여 시장의 과매매와 과매매 상태를 식별하여 잠재적인 역전 기회를 포착한다. 이 전략은 가격과 볼링거 밴드 상하의 교차로를 관찰하여 진입 시기를 판단하며, 동적 스톱로스를 사용하여 위험을 통제한다. 이 방법은 추세를 추적하고 역전 거래의 개념을 결합하여 시장의 변동에서 이익을 취하기 위해 고안되었습니다.

전략 원칙

이 전략의 핵심 원칙은 시장의 극단적인 상태를 식별하고 가능한 역전을 예측하기 위해 볼린저 밴드를 사용하는 것입니다. 구체적으로:

  1. 34주기의 간단한 이동 평균 ((SMA) 을 볼린저 밴드의 중간 궤도로 사용한다.
  2. 위아래 궤도는 각각 중간 궤도 더하 2배 표준차로로 설정된다.
  3. 가격이 하위에서 하위 궤도를 통과한 후 다시 하위 궤도 위로 돌아왔을 때, 과매매 반전 신호로 간주하여 다단위 포지션을 개설한다.
  4. 가격이 위쪽에서 상도를 통과한 후 다시 상도 아래로 돌아온다면, 오버 바이 반전 신호로 간주하여 공백 포지션을 열 수 있다.
  5. 다중 헤드 포지션의 경우, 하차선 아래로 중지; 빈 헤드 포지션의 경우, 상차선 위에 중지.

이 디자인은 시장이 극단적으로 움직일 때 거래하는 전략을 허용하면서 동적 스톱로스로 잠재적 인 손실을 제한합니다.

전략적 이점

  1. 객관성이 강하다: 명확한 수학적 모델 ((Bollinger Bands) 을 사용하여 시장 상태를 정의하고, 주관적 판단으로 인한 편차를 줄인다.
  2. 리스크 관리: 동적 손실 메커니즘을 통해 시장의 변동성에 따라 자동으로 리스크 을 조정한다.
  3. 잘 적응: Bollinger Bands는 시장의 변동성에 따라 자동으로 조정 할 수 있으므로 전략은 다양한 시장 환경에서 상대적으로 안정적인 성능을 유지할 수 있습니다.
  4. 반전 포착 능력: 시장의 과매매 후 반전을 포착하는 데 초점을 맞추고 있으며, 불안한 시장에서 좋은 수익을 얻을 수 있습니다.
  5. 간단하고 이해하기 쉽다: 전략 논리는 직관적이고, 이해하기 쉽고, 실행하기 쉬우며, 다양한 경험 수준의 거래자에게 적합하다.

전략적 위험

  1. 가짜 돌파 위험: 가로 변수 시장에서 가격이 실제 반전 없이 자주 볼린저 밴드 경계선을 만질 수 있으며, 이는 자주 거래와 잠재적인 손실을 초래합니다.
  2. 트렌드 시장의 부실성: 강력한 트렌드에서 전략은 조기 청산하거나 역으로 입장을 열 수 있으며, 큰 트렌드에서 오는 수익을 놓칠 수 있습니다.
  3. 변수 감수성: 전략의 성능은 볼린저 밴드의 변수 설정에 크게 의존합니다. 다른 시장에는 다른 최적화 설정이 필요할 수 있습니다.
  4. 슬라이드 포인트 및 거래 비용: 자주 거래하는 것은 전체 수익에 영향을 미치는 높은 거래 비용을 초래할 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터를 도입: 더 긴 기간의 트렌드 지표 (예: LPA) 와 결합하여, 가짜 신호를 줄이기 위해 주요 트렌드 방향으로만 거래하십시오.
  2. 진입 시기를 최적화: 신호 품질을 높이기 위해 가격이 볼린저 밴드 내부의 일정 비율로 돌아간 후에 다시 진입하는 것을 고려하십시오.
  3. 동적 조정 파라미터: 시장의 변동성에 따라 볼린저 밴드의 주기 및 표준 차이의 배수를 자동으로 조정하여 다른 시장 환경에 맞게 조정한다.
  4. 보조 지표를 추가: 다른 기술 지표와 결합하여 (RSI 또는 MACD와 같은) 반전 신호를 확인하고 거래 정확도를 향상시킵니다.
  5. 일부 수익을 달성하기: 이동 중지 설정, 가격이 유리한 방향으로 이동할 때 일부 수익을 잠금하여 가능한 회수에 대응한다.

요약하다

볼링거 밴드 동력 역전화 전략은 기술 분석과 위험 관리를 결합한 거래 시스템이다. 이 전략은 시장의 과매매 상태를 식별하기 위해 볼링거 밴드를 사용함으로써 잠재적인 가격 역전 기회를 잡기 위해 고안되었다. 이 전략은 객관적으로 강하고, 위험 관리가 완벽하고 적응성이 좋지만, 가짜 돌파구 및 트렌드 시장의 부실성 등의 위험에 직면해 있다.

전략 소스 코드
/*backtest
start: 2024-09-18 00:00:00
end: 2024-09-25 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle='MBB_Strategy', title='Bollinger Bands Strategy', overlay=true)

// Inputs
price = input.source(close, title="Source")
period = input.int(34, minval=1, title="Period")  // Renombramos 'length' a 'period'
multiplier = input.float(2.0, minval=0.001, maxval=50, title="Multiplier")  // Renombramos 'mult' a 'multiplier'

// Calculando las bandas de Bollinger
middle_band = ta.sma(price, period)  // Renombramos 'basis' a 'middle_band'
deviation = ta.stdev(price, period)  // Renombramos 'dev' a 'deviation'
deviation2 = multiplier * deviation  // Renombramos 'dev2' a 'deviation2'

upper_band1 = middle_band + deviation  // Renombramos 'upper1' a 'upper_band1'
lower_band1 = middle_band - deviation  // Renombramos 'lower1' a 'lower_band1'
upper_band2 = middle_band + deviation2  // Renombramos 'upper2' a 'upper_band2'
lower_band2 = middle_band - deviation2  // Renombramos 'lower2' a 'lower_band2'

// Plotting Bollinger Bands
plot(middle_band, linewidth=2, color=color.blue, title="Middle Band")
plot(upper_band2, color=color.new(color.blue, 0), title="Upper Band 2")
plot(lower_band2, color=color.new(color.orange, 0), title="Lower Band 2")

// Rellenando áreas entre las bandas
fill(plot(middle_band), plot(upper_band2), color=color.new(color.blue, 80), title="Upper Fill")
fill(plot(middle_band), plot(lower_band2), color=color.new(color.orange, 80), title="Lower Fill")

// Lógica de la estrategia
var bool is_long = false
var bool is_short = false

if (ta.crossover(price, lower_band2))
    strategy.entry("Buy", strategy.long)
    is_long := true
    is_short := false

if (ta.crossunder(price, upper_band2))
    strategy.entry("Sell", strategy.short)
    is_long := false
    is_short := true

// Lógica del stop loss
stop_loss_level_long = lower_band2
stop_loss_level_short = upper_band2

if (is_long)
    strategy.exit("Exit Long", "Buy", stop=stop_loss_level_long)

if (is_short)
    strategy.exit("Exit Short", "Sell", stop=stop_loss_level_short)