동적 추세 추적 이중 이동 평균 채널 전략 및 위험 관리 시스템

SMA MAC
생성 날짜: 2025-01-10 16:26:56 마지막으로 수정됨: 2025-01-10 16:26:56
복사: 7 클릭수: 374
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 추세 추적 이중 이동 평균 채널 전략 및 위험 관리 시스템

개요

이 전략은 위험 관리 메커니즘과 결합된 이중 이동 평균 채널을 기반으로 하는 동적 추세 추적 시스템입니다. 이 전략은 두 개의 단순 이동 평균(SMA)을 사용하여 거래 채널을 구성하는데, 상단 레일은 최고 가격으로 계산된 이동 평균을 사용하고, 하단 레일은 최저 가격으로 계산된 이동 평균을 사용합니다. 시스템은 상위 트랙을 돌파하는 5개 연속 K-라인 종가를 진입 신호로 사용하고, 하위 트랙 아래로 떨어지거나 최고점에서 25% 하락하는 5개 연속 K-라인 종가를 종료 신호로 사용하여 동적 추세를 달성합니다. 추적 및 위험 관리.

전략 원칙

전략의 핵심 원칙은 이중 이동 평균 채널을 통해 가격 추세를 파악하고 엄격한 진입 및 종료 메커니즘을 확립하는 것입니다.

  1. 진입 메커니즘: 추세의 연속성과 효과를 보장하기 위해 가격이 5일 연속으로 상위 트랙 위에 유지되어야 합니다.
  2. 출구 메커니즘: 2단계로 구분됨
    • 추세 분기 탈출: 가격이 5일 연속으로 하단 추적선 아래로 떨어지면 추세가 반전될 수 있음을 나타냅니다.
    • 손절매: 가격이 최고점에서 25% 하락하면 손절매가 작동하여 과도한 손실을 방지합니다.
  3. 포지션 관리: 자금의 효과적인 배분을 달성하기 위해 총 계좌 가치의 고정 비율로 포지션을 오픈합니다.

전략적 이점

  1. 추세 추종의 안정성: 5일 연속 브레이크아웃 확인을 요구하여 거짓 브레이크아웃 신호를 걸러냅니다.
  2. 위험 통제의 무결성: 추세 발산과 손절매 메커니즘을 결합하여 이중 보호 구축
  3. 유연하고 조정 가능한 매개변수: 이동 평균 기간 및 손절매 비율은 다양한 시장 특성에 따라 최적화될 수 있습니다.
  4. 명확한 실행 로직: 진입 및 종료 조건을 명확히 하여 주관적 판단으로 인한 간섭을 줄임
  5. 과학적 자금 관리: 고정 로트 대신 계정 비율 포지션을 사용하여 위험을 보다 효과적으로 통제하세요

전략적 위험

  1. 변동성이 큰 시장의 위험: 횡보장이고 변동성이 큰 시장에서는 잘못된 신호가 쉽게 생성되어 잦은 거래로 이어집니다.
  2. 미끄러짐 위험: 빠르게 움직이는 시장에서는 손절매 실행 가격이 예상과 크게 달라질 수 있습니다.
  3. 매개변수 의존성: 최적의 매개변수는 시장 환경에 따라 크게 달라질 수 있습니다.
  4. 추세 지연: 이동 평균을 사용하기 때문에 추세 전환점에 일정한 지연이 있습니다.
  5. 펀드 효율성: 보유 조건이 비교적 엄격하여 일부 수익 기회를 놓칠 수 있습니다.

전략 최적화 방향

  1. 동적 매개변수 최적화: 시장 변동성에 따라 이동 평균 기간을 자동으로 조정하는 적응형 매개변수 시스템 개발
  2. 시장 환경 필터: 변동이 심한 시장에서 거래 빈도를 자동으로 줄이기 위해 추세 강도 지표 추가
  3. 다중 시간대 확인: 신호 신뢰성을 향상시키기 위해 장기 추세 확인 메커니즘 추가
  4. 손절매 최적화: 변동성에 따라 손절매 비율을 자동으로 조정하기 위한 동적 손절매 메커니즘 도입
  5. 포지션 관리 최적화: 변동성 및 손익비율에 따라 오픈비율을 동적으로 조정

요약하다

이 전략은 엄격한 진입 확인 및 이중 종료 메커니즘을 결합한 이중 이동 평균 채널을 통해 완전한 추세 추적 거래 시스템을 구축하여 효과적인 추세 추적과 효과적인 위험 관리를 달성합니다. 이 전략의 장점은 명확한 실행 로직과 완벽한 위험 관리입니다. 하지만 여전히 다양한 시장 환경에 대한 매개변수 최적화가 필요하며 시장 환경 필터링, 다중 기간 확인 등을 추가하면 더욱 개선될 수 있습니다. 전반적으로, 이는 완전한 구조와 엄격한 논리를 갖춘 양적 거래 전략으로, 명확한 추세가 있는 시장 환경에 적용하기에 적합합니다.

전략 소스 코드
/*backtest
start: 2025-01-02 00:00:00
end: 2025-01-09 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("Moving Average Channel (MAC)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Parameters for Moving Averages
upperMALength = input.int(10, title="Upper MA Length")
lowerMALength = input.int(8, title="Lower MA Length")
stopLossPercent = input.float(25.0, title="Stop Loss (%)", minval=0.1) / 100

// Calculate Moving Averages
upperMA = ta.sma(high, upperMALength)
lowerMA = ta.sma(low, lowerMALength)

// Plot Moving Averages
plot(upperMA, color=color.red, title="Upper Moving Average")
plot(lowerMA, color=color.green, title="Lower Moving Average")

// Initialize variables
var int upperCounter = 0
var int lowerCounter = 0
var float entryPrice = na
var float highestPrice = na

// Update counters based on conditions
if (low <= upperMA)
    upperCounter := 0
else
    upperCounter += 1

if (high >= lowerMA)
    lowerCounter := 0
else
    lowerCounter += 1

// Entry condition: 5 consecutive bars above the Upper MA
if (upperCounter == 5 and strategy.position_size == 0)
    strategy.entry("Long", strategy.long)
    highestPrice := high  // Initialize highest price

// Update the highest price after entry
if (strategy.position_size > 0)
    highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)

// Exit condition: 5 consecutive bars below the Lower MA
if (lowerCounter == 5 and strategy.position_size > 0)
    strategy.close("Long", comment="Exit: 5 bars below Lower MA")

// Stop-loss condition: Exit if market closes below 25% of the highest price since entry
stopLossCondition = low < highestPrice * (1 - stopLossPercent)
if (stopLossCondition and strategy.position_size > 0)
    strategy.close("Long", comment="Exit: Stop Loss")