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

이동 평균 양적 전략 시스템으로 적응적인 볼링거 브레이크

저자:차오장, 날짜: 2024-11-27 15:55:28
태그:BBMASMA

img

전반적인 설명

이 전략은 볼링거 밴드 브레이크아웃과 이동 평균 트렌드를 결합한 양적 거래 시스템이다. 시스템은 트렌드 확인을 위해 100일 이동 평균을 사용하여 볼링거 밴드와의 가격 관계를 모니터링함으로써 자동으로 시장 기회를 캡처합니다. 자동 리스크 관리를 위해 계정 자금에 기반한 동적 위치 사이징을 구현합니다.

전략 원칙

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

  1. 2개의 표준편차를 가진 변동성 채널로 20주기 볼링거 대역을 사용합니다.
  2. 중장기 트렌드 확인으로 100일 이동 평균을 사용한다.
  3. 가격이 상단 범위를 넘어서 지난 기간 동안 상단 범위를 넘지 않았을 때 긴 신호를 생성합니다.
  4. 가격이 하위 범위를 넘어서 지난 기간 동안 하위 범위를 넘지 않았을 때 짧은 신호를 생성합니다.
  5. 현재 계좌 자금에 기초하여 역동적으로 포지션 크기를 계산합니다.
  6. 적시에 리스크 관리를 위해 반대 신호에 따라 자동으로 포지션을 닫습니다.

전략적 장점

  1. 높은 적응력 - 볼링거 밴드는 시장 변동성에 따라 채널 너비를 자동으로 조정합니다.
  2. 통제된 위험 - 동적 위치 크기가 위험과 계좌 크기가 일치하도록 보장합니다.
  3. 트렌드 확인 - 이동 평균과의 통합은 신호 신뢰성을 향상시킵니다.
  4. 적시에 손실을 중지 - 명확한 출구 조건은 과도한 손실을 방지
  5. 양자 거래 - 자본 효율성 향상을 위한 상승과 하락 동향을 모두 포착합니다
  6. 클린 코드 - 간편한 유지보수 및 최적화를 위한 명확한 전략 논리

전략 위험

  1. 다양한 시장에서 잘못된 파업은 연속 손실로 이어질 수 있습니다.
  2. 고정 볼링거 밴드 매개 변수는 모든 시장 조건에 맞지 않을 수 있습니다.
  3. 트레일링 스톱의 부족은 수익을 효과적으로 차단하지 못할 수 있습니다.
  4. 긴 이동 평균 기간은 신호가 지연될 수 있습니다.
  5. 거래 비용은 고려되지 않습니다. 라이브 성능은 백테스트와 다를 수 있습니다.

최적화 방향

  1. 변동성이 낮은 환경에서 거래 빈도를 줄이기 위해 변동성 필터를 추가합니다.
  2. 시장 변동성에 기반한 동적 스톱 로스 메커니즘을 구현
  3. 적응 기간으로 볼링거 밴드 매개 변수를 최적화합니다.
  4. 볼륨 및 대기 시간 필터를 추가합니다
  5. 신호 확인을 위한 추가 기술 지표
  6. 강화된 위험 통제를 위한 최대 채용 한도를 설정

요약

이 전략은 볼링거 밴드와 이동 평균을 결합하여 완전한 양적 거래 시스템을 구축합니다. 간단한 논리를 유지하면서 신호 생성, 위치 관리 및 리스크 제어 등 핵심 기능을 구현합니다. 최적화 할 수있는 영역이 있지만 전반적인 디자인은 건전하며 실용적인 응용 가치가 있습니다. 특정 시장 특성에 따라 조정을 통해 라이브 구현 전에 매개 변수를 철저히 최적화하고 백테스팅을 통해 검증하는 것이 좋습니다.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BB Breakout with MA 100 Strategy", overlay=true)

// Parameter Bollinger Bands
length = input(20, title="BB Length")
stdDev = input(2.0, title="BB Standard Deviation")

// Hitung Bollinger Bands
basis = ta.sma(close, length)
dev = stdDev * ta.stdev(close, length)
upperBB = basis + dev
lowerBB = basis - dev

// Hitung Moving Average 100
ma100 = ta.sma(close, 100)

// Logika untuk sinyal beli dan jual
longCondition = close > upperBB and close[1] <= upperBB[1]
shortCondition = close < lowerBB and close[1] >= lowerBB[1]

// Menentukan ukuran posisi (jumlah lot)
size = strategy.equity / close // Menentukan ukuran posisi berdasarkan ekuitas saat ini

// Eksekusi order
if (longCondition)
    strategy.entry("Long", strategy.long, qty=size)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=size)

// Menutup posisi ketika kondisi terbalik
if (longCondition and strategy.position_size < 0)
    strategy.close("Short")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long")

// Plotting
plot(upperBB, color=color.red, title="Upper BB")
plot(lowerBB, color=color.green, title="Lower BB")
plot(basis, color=color.blue, title="Basis BB")
plot(ma100, color=color.orange, title="MA 100")

// Menambahkan informasi ke grafik
bgcolor(longCondition ? color.new(color.green, 90) : na, title="Buy Signal Background")
bgcolor(shortCondition ? color.new(color.red, 90) : na, title="Sell Signal Background")


관련

더 많은