이동 평균 교차 정량 전략 시스템과 결합된 적응형 밴드 돌파

BB MA SMA
생성 날짜: 2024-11-27 15:55:28 마지막으로 수정됨: 2024-11-27 15:55:28
복사: 3 클릭수: 350
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 교차 정량 전략 시스템과 결합된 적응형 밴드 돌파

개요

이 전략은 부린띠의 돌파와 평행선 추세를 결합한 정량 거래 시스템이다. 전략은 가격과 부린띠의 상하의 관계를 모니터링하여 100일 평균선을 트렌드 확인으로 결합하여 시장 기회의 자동 포착을 실현한다. 시스템은 다이내믹 포지션 규모 관리를 채택하고, 계정 권익에 따라 거래 수를 자동으로 조정하여 위험을 동적으로 제어한다.

전략 원칙

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

  1. 20주기의 브린 대역을 오동률 통로로 사용하여 표준 차이의 배수 2
  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")