볼린저 평균 회귀 정량 전략 강화

BB EMA ATR SMA stdev
생성 날짜: 2024-11-18 16:07:05 마지막으로 수정됨: 2024-11-18 16:07:05
복사: 7 클릭수: 549
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 평균 회귀 정량 전략 강화

개요

이 전략은 볼링거 밴드 기반의 평균값 회귀 거래 시스템으로, 트렌드 필터와 동적 스톱로드를 결합하여 거래 효과를 최적화한다. 이 전략은 통계학 원리를 적용하여, 가격이 평균값에서 이탈할 때 거래하고, 동시에 기술 지표를 통해 승률을 높이고 위험을 관리한다.

전략 원칙

이 전략의 핵심은 다음과 같은 핵심 요소들에 기반합니다.

  1. 20주기 볼링거 대역을 주요 신호 소스로 사용하며, 대역폭은 표준 차이의 2배이다.
  2. 50주기 EMA를 트렌드 필터로 도입하여 거래 방향이 중장기 트렌드와 일치하도록 합니다.
  3. 14주기 ATR의 동적 설정으로 스톱로스 및 수익 목표를 설정하여 리스크/수익률을 높여줍니다.
  4. 가격이 하향 경로를 접촉하고 EMA 위에있을 때 더 많이 열리고, 상향 경로를 접촉하고 EMA 아래에있을 때 더 많이 열립니다.
  5. 2배의 ATR을 수익 목표로, 1배의 ATR을 중지 지점으로 사용함

전략적 이점

  1. 평균 회귀와 트렌드 따위의 장점을 결합하여 거래의 신뢰성을 향상시킵니다.
  2. 동적 스톱 및 수익 설정, 시장의 변동성에 적응
  3. 명확한 출전규칙, 주관적인 판단을 줄여주기
  4. 고정 2: 1 리스크 수익률은 장기적으로 안정적인 수익을 창출합니다.
  5. 기술 지표 포트폴리오는 가짜 신호의 영향을 줄였습니다.

전략적 위험

  1. 강세를 보이는 시장에서 큰 상황을 놓칠 수 있습니다.
  2. 수평 정리 영역이 너무 좁으면 거래가 빈번할 수 있습니다.
  3. 시장의 변동에 따라 스톱로스가 미끄러질 수 있습니다.
  4. 시장 변화에 적응하기 위해 매개변수를 지속적으로 모니터링하고 조정해야 합니다.
  5. 거래 비용은 전략 수익에 영향을 미칠 수 있습니다.

전략 최적화 방향

  1. 보조 확인으로 볼륨 표시기 추가
  2. 시장 변동율 필터를 도입하여 높은 변동기를 피하십시오.
  3. 최적화 매개 변수 적응 메커니즘
  4. 더 많은 기술 지표와 상호 검증
  5. 자금 관리 시스템 개선

요약하다

이것은 고전적인 기술 분석과 현대적인 양적 방법을 결합하는 전략이다. 다중 지표 확인과 엄격한 위험 통제를 통해 전략은 더 나은 실용성을 가지고 있다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Optimized Bollinger Mean Reversion", overlay=true)

// Bollinger Band Settings
length = input.int(20, title="BB Length")
src = input(close, title="Source")
mult = input.float(2.0, title="BB Multiplier")

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

// Plot the Bollinger Bands
plot(basis, color=color.blue)
p1 = plot(upper, color=color.red)
p2 = plot(lower, color=color.red)
fill(p1, p2, color=color.rgb(41, 98, 255, 90))

// Trend Filter - 50 EMA
ema_filter = ta.ema(close, 50)

// ATR for Dynamic Stop Loss/Take Profit
atr_value = ta.atr(14)

// Buy condition - price touches lower band and above 50 EMA
buy_condition = ta.crossover(close, lower) and close > ema_filter

// Sell condition - price touches upper band and below 50 EMA
sell_condition = ta.crossunder(close, upper) and close < ema_filter

// Strategy Execution
if (buy_condition)
    strategy.entry("Buy", strategy.long)

if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exit with dynamic ATR-based stop loss and take profit
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=2*atr_value, stop=1*atr_value)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", limit=2*atr_value, stop=1*atr_value)