MACD와 Supertrend를 기반으로 한 이중 검증 추세 추종 거래 전략

MACD ATR SMA
생성 날짜: 2024-12-11 17:16:05 마지막으로 수정됨: 2024-12-11 17:16:05
복사: 0 클릭수: 369
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

MACD와 Supertrend를 기반으로 한 이중 검증 추세 추종 거래 전략

개요

이 전략은 MACD 지표와 Supertrend 지표가 결합된 이중 검증 트렌드 추적 거래 시스템이다. 이 전략은 MACD 선과 신호 선의 교차 상황을 비교하면서 Supertrend 지표의 트렌드 방향과 결합하여 진입 시기를 결정하고, 고정된 비율의 스톱 및 스톱 레벨을 설정하여 위험을 제어한다. 이 이중 검증 메커니즘은 거래 신호의 신뢰성을 높이고, 가짜 신호의 간섭을 효과적으로 감소시킨다.

전략 원칙

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

  1. 슈퍼트렌드 지표: 20주기의 ATR과 2배의 인자를 사용하여 트렌드 라인을 계산하여 현재 시장의 트렌드 방향을 판단한다.
  2. MACD 지표: 고전적인 12/26/9 변수 설정을 사용하여 빠른 선과 느린 선의 교차로 거래 신호를 생성한다.
  3. 진입 조건: MACD 단선이 느린 선을 상향으로 가로질러 ([[소매 신호]]) 슈퍼트렌드 방향이 상승 경향 ([[direction==1)) 이 되면만 매입을 촉발한다.
  4. 리스크 관리: 거래 당 0.5%의 스톱로스 및 99.99%의 스톱 스톱 레벨을 설정하여 자금을 보호하고 수익을 잠금합니다.

전략적 이점

  1. 이중 검증 메커니즘: 트렌드 추적 지표 (Supertrend) 와 동력 지표 (MACD) 의 장점을 결합하여 거래 신호의 정확도를 크게 향상시킵니다.
  2. 자기 적응력: 슈퍼 트렌드 지표는 ATR 계산을 기반으로 시장의 변동성에 따라 변수를 자동으로 조정하여 다른 시장 환경에 적응 할 수 있습니다.
  3. 리스크 관리가 완벽합니다. 단 하나 거래의 위험을 통제할 수 있도록 백분율 중지 전략이 적용됩니다.
  4. 실행 논리 명확성: 출전 조건이 명확하고, 주관적 판단으로 인한 방해가 없도록 한다.
  5. 작동이 간단합니다: 전략 논리는 직관적이며, 실제 조작과 모니터링이 용이합니다.

전략적 위험

  1. 트렌드 의존성: 불안정한 시장에서 거래 비용을 증가시키는 빈번한 잘못된 신호가 발생할 수 있습니다.
  2. 뒤처진 위험: MACD와 Supertrend은 모두 뒤처진 지표이며, 시장이 급격히 변할 때 충분히 반응하지 않을 수 있다.
  3. 고정된 손실 위험: 고정된 퍼센트 손실을 사용하는 것은 다양한 시장 환경의 변동적 특성에 잘 적응하지 못할 수 있습니다.
  4. 변수 민감성: 전략 효과는 여러 변수의 설정에 의해 제한되며, 시장 변화에 적응하기 위해 지속적으로 최적화해야 한다.

전략 최적화 방향

  1. 역동적 스톱 최적화: 고정 스톱을 ATR 기반의 역동적 스톱으로 변경하여 시장의 변동에 더 잘 적응하도록 권장합니다.
  2. 시장 환경 필터를 추가합니다. 시장 환경 필터로 변동률 지표 (VIX와 같은) 를 추가하여 전략 파라미터를 조정하거나 높은 변동성 동안 거래를 중지 할 수 있습니다.
  3. 양 가격 관계 도입: 거래량 지표를 신호 확인 시스템에 포함시켜 신호 신뢰성을 높이는 것을 고려한다.
  4. 최적화 매개 변수 적응: 시장 상태에 기반한 매개 변수 적응 메커니즘을 개발하여 전략의 적응성을 향상시킨다.
  5. 포지션 관리를 개선: 동적 포지션 관리 메커니즘을 도입하여 시장의 변동성과 계좌 순가치의 동적으로 거래 규모를 조정합니다.

요약하다

이 전략은 MACD 및 Supertrend 지표의 장점을 결합하여 비교적 신뢰할 수있는 트렌드 추적 거래 시스템을 구축합니다. 46%의 정확도와 46%의 수익률은 전략이 수익성이 있음을 나타냅니다. 제안된 최적화 방향, 특히 동적 중지 및 시장 환경 필터의 도입을 통해 전략의 안정성과 적응력이 더욱 향상될 것으로 예상됩니다. 전략은 당일 및 선물 거래에 적합하지만 사용자는 시장 환경의 적합성에 주의를 기울이고 실제 상황에 따라 매개 변수 설정을 조정해야합니다.

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

//@version=5
strategy('MANTHAN BHRAMASTRA', overlay=true)

// Supertrend function
f_supertrend(_period, _multiplier) =>
    atr = ta.sma(ta.tr, _period)
    upTrend = hl2 - _multiplier * atr
    downTrend = hl2 + _multiplier * atr
    var float _supertrend = na
    var int _trendDirection = na
    _supertrend := na(_supertrend[1]) ? hl2 : close[1] > _supertrend[1] ? math.max(upTrend, _supertrend[1]) : math.min(downTrend, _supertrend[1])
    _trendDirection := close > _supertrend ? 1 : -1
    [_supertrend, _trendDirection]

// Supertrend Settings
factor = input(2, title='Supertrend Factor')
atrLength = input(20, title='Supertrend ATR Length')

// Calculate Supertrend
[supertrendValue, direction] = f_supertrend(atrLength, factor)


// MACD Settings
fastLength = input(12, title='MACD Fast Length')
slowLength = input(26, title='MACD Slow Length')
signalSmoothing = input(9, title='MACD Signal Smoothing')

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)

// Generate Buy signals
buySignal = ta.crossover(macdLine, signalLine) and direction == 1

// Plot Buy signals

// Calculate stop loss and take profit levels (0.25% of the current price)
longStopLoss = close * 0.9950
longTakeProfit = close * 1.9999

// Execute Buy orders with Target and Stop Loss
if buySignal
    strategy.entry('Buy', strategy.long)
    strategy.exit('Sell', 'Buy', stop=longStopLoss, limit=longTakeProfit)