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

평균 반전 볼링거 밴드 거래 전략 합리적인 수익 신호

저자:차오장, 날짜: 2025-01-06 15:33:01
태그:BBMASDMRRSIVOL

img

전반적인 설명

이 전략은 볼링거 밴드 (Bollinger Bands) 와 가격 평균 회전 원리에 기반한 양적 거래 시스템이다. 시장의 과잉 구매/ 과잉 판매 조건 이후 가격 회귀를 예상할 때 거래하기 위해 볼링거 밴드 (Bollinger Bands) 브레이크아웃 신호와 결합하여 이동 평균에서 가격 오차를 모니터링합니다. 전략은 가격 오차를 측정하기 위해 비율 임계치를 사용하고 잘못된 신호를 필터하고 거래 정확도를 향상시키기 위해 합리적인 트리거 조건을 설정합니다.

전략 원칙

핵심 논리는 다음과 같은 핵심 요소에 기반합니다.

  1. 20일 이동 평균을 중간 지대로 사용하며, 볼링거 지대를 구성하기 위해 2개의 표준편차를 사용합니다.
  2. 상당한 오차를 확인하기 위해 3.5%의 가격 오차 기준을 도입합니다.
  3. is_outside 변수를 통해 가격 오차 상태를 추적합니다
  4. 보린저 밴드 내에서 가격이 반환되면 거래 신호를 유발합니다.
  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)


관련

더 많은