합리적 회귀 신호와 결합된 평균 회귀 Bollinger Bands 거래 전략

BB MA SD MR RSI VOL
생성 날짜: 2025-01-06 15:33:01 마지막으로 수정됨: 2025-01-06 15:33:01
복사: 2 클릭수: 464
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

합리적 회귀 신호와 결합된 평균 회귀 Bollinger Bands 거래 전략

개요

이 전략은 볼린저 밴드와 가격 평균 회귀의 원칙을 기반으로 한 양적 거래 시스템입니다. 볼린저 밴드의 상단 및 하단 트랙의 돌파 신호와 함께 가격과 이동 평균의 편차를 모니터링하여, 시장이 매수 과다 또는 매도 과다 상태일 때 가격이 평균으로 회귀할 것으로 예상될 때 거래를 수행합니다. 이 전략은 가격 편차의 정도를 측정하기 위해 백분율 임계값을 사용하고, 합리적인 트리거 조건을 설정하여 잘못된 신호를 걸러내어 거래 정확도를 높입니다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.

  1. 20일 이동평균을 중간 트랙으로 사용하고 표준편차의 2배로 볼린저 밴드 채널을 구축합니다.
  2. 중대한 편차를 식별하기 위해 3.5% 가격 편차 임계값 도입
  3. is_outside 변수를 통해 가격이 상태 밖에 있는지 추적합니다.
  4. 가격이 Bollinger Band 범위로 돌아오면 거래 신호가 트리거됩니다.
  5. 구체적인 거래 규칙은 다음과 같습니다.
    • 가격이 편차에서 회복되어 상단 밴드를 돌파하면 롱 포지션을 취하십시오.
    • 가격이 편차에서 회복되어 하단 밴드를 돌파하면 단기 매도 포지션을 취하십시오.

전략적 이점

  1. 평균 회귀 논리는 견고합니다
    • 가격은 결국 평균으로 회귀한다는 통계법칙에 근거
    • 편차 임계값을 통해 거래 기회의 중요성을 보장합니다.
  2. 완벽한 위험 관리
    • 볼린저 밴드는 변동성 범위에 대한 명확한 기준을 제공합니다.
    • 변동성 있는 상황에서 거래를 피하기 위한 편차 추적
  3. 강력한 매개변수 조정성
    • 볼린저 밴드의 매개변수는 상품의 특성에 따라 조절 가능합니다.
    • 편차 임계값은 위험 선호도에 따라 설정될 수 있습니다.

전략적 위험

  1. 트렌드 마켓 실패의 위험
    • 강한 추세를 보이는 시장에서는 자주 거짓 신호가 발생할 수 있습니다.
    • 시장 상황을 파악하기 위해 추세 필터를 추가하는 것이 좋습니다.
  2. 매개변수 민감도 위험
    • 잘못된 매개변수 설정은 전략 성능에 영향을 미칠 수 있습니다.
    • 과거 데이터 백테스팅을 통해 매개변수 최적화 필요
  3. 미끄러짐 비용 위험
    • 잦은 거래로 인해 거래 비용이 높아질 수 있습니다.
    • 보유기간 제한 및 비용관리 강화가 권고된다

전략 최적화 방향

  1. 시장 환경 인지도 향상
    • ADX와 같은 추세 강도 지표 소개
    • 시장 상황에 따라 동적으로 매개변수를 조정합니다.
  2. 손절매 및 손절매 메커니즘 개선
    • ATR을 기반으로 동적 손절매 설정
    • 수익 보호를 위한 모바일 스톱프로핏 도입
  3. 거래 빈도 최적화
    • 최소 보유 시간 제한을 늘리세요
    • 비용을 제어하기 위해 거래 간격을 설정하세요

요약하다

이 전략은 볼린저 밴드와 평균 회귀 원칙을 통해 시장의 매수 과다 및 매도 과다 기회를 포착하고, 합리적인 편차 임계값과 상태 추적 메커니즘을 결합하여 거래 위험을 효과적으로 제어합니다. 전략 프레임워크는 확장성이 뛰어나며 매개변수 최적화와 기능 개선을 통해 다양한 시장 환경에 적응할 수 있습니다. 실시간 애플리케이션에서는 위험 제어에 주의를 기울이고 특정 제품의 특성에 맞게 매개 변수를 조정하는 것이 좋습니다.

전략 소스 코드
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estratégia com Bandas de Bollinger e Sinal de Retorno", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Configurações das Bandas de Bollinger
length = input.int(20, title="Período da média")
mult = input.float(2.0, title="Desvio padrão")
bbBasis = ta.sma(close, length)
bbUpper = bbBasis + mult * ta.stdev(close, length)
bbLower = bbBasis - mult * ta.stdev(close, length)

// Configuração para a distância da média
percent_threshold = input.float(3.5, title="Distância da média (%)") / 100

dist_from_mean = 0.0
trigger_condition = false
if not na(bbBasis)
    dist_from_mean := math.abs(close - bbBasis) / bbBasis
    trigger_condition := dist_from_mean >= percent_threshold

// Variáveis para identificar o estado do afastamento
var bool is_outside = false
var color candle_color = color.new(color.white, 0)

if trigger_condition
    is_outside := true

if is_outside and close <= bbUpper and close >= bbLower
    is_outside := false
    candle_color := color.new(color.blue, 0) // Atribui uma cor válida
else
    candle_color := color.new(color.white, 0)

// Aplicar cor às velas
barcolor(candle_color)

// Plotar Bandas de Bollinger
plot(bbBasis, color=color.yellow, title="Média")
plot(bbUpper, color=color.red, title="Banda Superior")
plot(bbLower, color=color.green, title="Banda Inferior")

// Lógica de entrada e saída
longCondition = not is_outside and close > bbUpper
if (longCondition)
    strategy.entry("Buy", strategy.long)

shortCondition = not is_outside and close < bbLower
if (shortCondition)
    strategy.entry("Sell", strategy.short)