볼린저 밴드 평균 회귀 거래 전략 및 볼륨 필터

BB SMA SD VOL
생성 날짜: 2024-06-21 18:20:13 마지막으로 수정됨: 2024-06-21 18:20:13
복사: 0 클릭수: 896
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드 평균 회귀 거래 전략 및 볼륨 필터

개요

이 전략은 부린带와 평균값 회귀 원리에 기반한 거래 시스템이며, 거래량 필터링 조건을 결합한다. 이 전략은 가격의 부린带 상하철 사이의 변동성을 활용하여 가격이 하하철에 닿을 때 구매하고 상하철에 닿을 때 판매하여 가격 회귀 평균값의 기회를 잡는다. 거래량 필터를 도입함으로써 거래 신호의 신뢰성을 더욱 높여주고, 낮은 유동성 상황에서 잘못된 판단을 피한다.

전략 원칙

  1. 브린 밴드 설정:

    • 20일을 계산주기로 사용함
    • 20일 간소 이동 평균 (SMA)
    • 상하철은 중간철과 더해 2배 표준차
  2. 거래 신호:

    • 구매 신호: 가격 하향에서 브린을 돌파 하향
    • 팔기 신호: 가격 상승으로 브린을 뚫고 궤도에 올랐다
  3. 수송량 필터:

    • 트랜스포메이션 필터링을 설정할 수 있습니다
    • 트레이드 신호를 발동하기 위해서는 거래량이 설정된 임계값 (기본 100,000) 을 초과해야 합니다.
  4. 거래 실행:

    • 구매 신호가 나오면 더 많이 입점하세요
    • 판매 신호가 발생했을 때 더 많은 상자를 제거하고 상자를 공백으로 열고
    • 구매 신호가 표시될 때 공백 상태
    • 거래량 필터링이 활성화되면 거래량이 충족될 때만 거래가 실행됩니다.

전략적 이점

  1. 평균 회귀 원리: 금융 시장 가격 변동의 평균 회귀 특성을 활용하여 수익 가능성을 높인다.

  2. 동적 적응성: 브린 밴드는 시장의 변동성에 따라 자동으로 궤도 위 위 위를 조정하여 전략이 다른 시장 환경에 적응하도록합니다.

  3. 위험 제어: 브린 벨트 오프와 오브 레일의 설정을 통해 거래에 자연스러운 스톱 로즈 포지션을 제공합니다.

  4. 거래량 확인: 거래량 필터를 도입하여 거래 신호의 신뢰도를 높이고, 가짜 침입의 위험을 줄입니다.

  5. 양방향 거래: 전략적으로 상장과 하자를 지원하여 시장의 양방향 기회를 최대한 활용할 수 있다.

  6. 시각화: 브린 밴드 및 거래 신호를 그래프로 그려서 전략의 성능을 직관적으로 이해하고 분석합니다.

전략적 위험

  1. 흔들림 시장 위험: 수평 상동 흔들림 시장에서, 자주 부린 벨트를 상하로 건드리는 것은 연속적인 손실을 초래할 수 있다.

  2. 트렌드 시장 부족: 강한 트렌드 시장에서, 전략은 큰 시장을 놓칠 수 있으며, 빈번한 청산은 수익을 제한한다.

  3. 가짜 돌파 위험: 거래량 필터링에도 불구하고 가짜 돌파로 인한 잘못된 거래가 발생할 수 있습니다.

  4. 변수 감수성: 브린 밴드 주기, 배수 및 거래량 하락값의 설정은 전략 성능에 큰 영향을 미치며, 부적절한 설정은 과도한 거래 또는 놓친 기회를 초래할 수 있다.

  5. 슬라이드 포인트 및 거래 비용: 자주 거래하면 전체 수익에 영향을 미치는 높은 거래 비용이 발생할 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터: 추가적인 트렌드 지표를 도입 (예를 들어, 이동 평균 또는 ADX), 강한 트렌드 시장에서 전략적 행동을 조정한다.

  2. 동적 변수 최적화: 시장의 변동성에 따라 브린 밴드 변수 및 거래량 하락값을 자동으로 조정하여 전략 적응성을 향상시킵니다.

  3. 스톱 로즈 최적화: 추적 스톱 또는 ATR 기반의 동적 스톱 로즈를 도입하여 위험을 더 잘 제어한다.

  4. 신호 확인: 다른 기술 지표 (RSI 또는 MACD와 같은) 와 결합하여 거래 신호를 2차 확인하여 정확도를 높인다.

  5. 포지션 관리: 부분 차단 및 포지션 로직을 구현하고, 자본 관리 및 위험 수익률을 최적화한다.

  6. 시간 필터: 거래 시간 창 제한을 추가하여 큰 변동이나 유동성이 부족한 시간을 피하십시오.

  7. 회수와 최적화: 더 포괄적인 역사 회수를 수행하고, 유전 알고리즘과 같은 방법을 사용하여 파라미터 조합을 최적화한다.

요약하다

브린지대 평균값 회귀 거래 전략과 거래량 필터링은 기술적 분석과 통계학적 원리를 결합한 정량화 거래 시스템이다. 이 전략은 가격의 브린지대 내의 변동적 특성과 거래량을 확인함으로써 시장의 단기 반전 기회를 잡기 위해 고안되었다. 전략은 격변하는 시장에서 잘 수행하지만, 강한 추세와 위험을 관리하는 데 있어 개선할 여지가 있습니다.

전략 소스 코드
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Regression Strategy", overlay=true)

// Bollinger Bands
length = input(20, title="Bollinger Bands Length")
src = input(close, title="Source")
mult = input(2.0, title="Bollinger Bands Multiplier")

basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Plotting Bollinger Bands
plot(basis, title="Basis", color=color.blue)
plot(upper, title="Upper Band", color=color.red)
plot(lower, title="Lower Band", color=color.red)

// Trading logic
longCondition = ta.crossover(src, lower)
shortCondition = ta.crossunder(src, upper)

// Plotting signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Strategy execution
strategy.entry("Long", strategy.long, when=longCondition)
strategy.close("Long", when=shortCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.close("Short", when=longCondition)

// Volume filter (optional)
useVolumeFilter = input(true, title="Use Volume Filter")
volumeThreshold = input(100000, title="Volume Threshold")

volumeCondition = na(volume) ? na : volume > volumeThreshold

if useVolumeFilter
    longCondition := longCondition and volumeCondition
    shortCondition := shortCondition and volumeCondition

// Final execution with volume filter
if useVolumeFilter
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.close("Long", when=shortCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)
    strategy.close("Short", when=longCondition)