EMA 트렌드 필터와 결합된 다중 시간대 MACD 크로스오버 지속성 전략

MACD EMA
생성 날짜: 2025-02-21 10:11:34 마지막으로 수정됨: 2025-02-27 17:17:57
복사: 1 클릭수: 366
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

EMA 트렌드 필터와 결합된 다중 시간대 MACD 크로스오버 지속성 전략 EMA 트렌드 필터와 결합된 다중 시간대 MACD 크로스오버 지속성 전략

개요

이 전략은 MACD 지표와 이동 평균을 기반으로 한 다시간대 거래 시스템이다. 1분과 3분 두 개의 시간 주기 MACD 지표를 결합하고, 200주기 EMA를 트렌드 필터로 사용하여 시장 추세의 지속성을 포착하여 거래한다. 이 전략에는 손해 중지 설정 및 기본 지점으로 이동하는 동적 조정 기능 등 위험 관리 장치가 포함되어 있다.

전략 원칙

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

  1. 1분과 3분 두 개의 시간 주기 MACD 지표를 사용하여 트렌드의 지속성을 확인합니다.
  2. 200주기 EMA를 주요 추세 기준으로
  3. 가격과 평균 위치 관계를 결합하여 거래 신호를 필터링합니다.
  4. 거래 시점 필터에 기반한 거래

구체적인 거래 신호 생성 규칙은 다음과 같습니다:

  • 멀티 헤드 신호: MACD 라인은 0 라인 위에 있고 신호 라인을 상향으로 가로질러 3 분 MACD 확인 트렌드, 가격은 EMA 200 이상
  • 허공 신호: MACD 라인은 0 라인 이하이며 신호 라인을 아래로 통과하며 3 분 MACD 확인 트렌드, 가격은 EMA 200 이하

전략적 이점

  1. 다중 시간 주기 확인은 거래의 정확성을 향상시킵니다.
  2. 트렌드 필터와 결합하여 가짜 신호를 줄입니다.
  3. 위험 관리 장치가 포함됩니다.
  4. 시간 필터를 사용하여 비활성 시간 동안 거래를 피합니다.
  5. 동적 지점 조정이 이미 얻은 이윤을 보호합니다.
  6. 명확한 전략 논리, 조정 및 최적화

전략적 위험

  1. 높은 변동성 시장에서 미끄러지는 위험이 발생할 수 있습니다.
  2. 다중 인증 메커니즘으로 인해 일부 거래 기회를 놓칠 수 있습니다.
  3. 고정된 스톱포트는 특정 시장 환경에서 충분히 유연하지 않을 수 있습니다.
  4. 거래 비용이 전략 수익에 미치는 영향을 고려해야 합니다.
  5. 시장의 격렬한 변동 속에서 더 큰 회수일 수도 있다.

위험 관리 제안:

  • 시장의 변동에 따라 조정된 중지 거리
  • 수익성 확보를 위해 수익 목표를 높이는 것을 고려하십시오.
  • 중요한 경제 자료가 발표되는 동안 거래 중단
  • 규칙적으로 평가하고 정책 변수를 조정합니다.

전략 최적화 방향

  1. 동적으로 조정 MACD 변수:
  • 시장의 변동에 따라 적응
  • 적응형 이동 평균을 고려하십시오.
  1. 시간 필터 개선:
  • 정교한 거래 시간 분할
  • 거래시간을 최적화하기 위한 거래량 분석과 결합
  1. 최적화된 손절매 메커니즘:
  • 동적 상쇄를 도입
  • ATR 설정에 기반한 정지 거리
  1. 트렌드 필터를 강화합니다:
  • 더 많은 기술 지표 확인이 추가됩니다.
  • 가격 행동 분석을 도입하는 것을 고려하십시오.

요약하다

이 전략은 다중 시간 주기의 MACD 지표와 EMA 트렌드 필터를 결합하여 비교적 완벽한 거래 시스템을 구축한다. 그것의 장점은 다중 확인 메커니즘과 위험 관리의 무결성이지만, 동시에 다양한 시장 환경에서 적응성에 대한 문제를 주의해야 한다. 제안된 최적화 방향을 통해, 전략은 안정성을 유지하면서 수익 능력을 더욱 향상시킬 것으로 보인다.

전략 소스 코드
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-15 02:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("NQ MACD Continuation Backtest", overlay=true)

// MACD Settings
fastLength = 12
slowLength = 26
signalLength = 9

// 1-minute MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// 3-minute MACD for trend filter
[htfMacd, htfSignal, _] = request.security(syminfo.tickerid, "3", ta.macd(close, fastLength, slowLength, signalLength), lookahead=barmerge.lookahead_on)

// 200 EMA
ema200 = ta.ema(close, 200)

// Time Filters
inSession = (hour(time, "America/New_York") >= 9 and (hour(time, "America/New_York") > 9 or minute(time, "America/New_York") >= 45)) and (hour(time, "America/New_York") < 22 or (hour(time, "America/New_York") == 22 and minute(time, "America/New_York") == 30))
notRestricted = (hour(time, "America/New_York") >= 6 and hour(time, "America/New_York") < 22)

// Track Previous MACD Crosses
var bool bullishCrossed = false
var bool bearishCrossed = false
if (ta.crossover(macdLine, signalLine) and macdLine > 0)
    bullishCrossed := true
if (ta.crossunder(macdLine, signalLine) and macdLine < 0)
    bearishCrossed := true

// Define Continuation Signals with EMA and 3-Min MACD Filter
bullishContinuation = (ta.crossover(macdLine, signalLine) and macdLine > 0 and signalLine > 0 and htfMacd > htfSignal and bullishCrossed and close > ema200)
bearishContinuation = (ta.crossunder(macdLine, signalLine) and macdLine < 0 and signalLine < 0 and htfMacd < htfSignal and bearishCrossed and close < ema200)

// Entry Conditions with SL and 10 Contracts
if (bullishContinuation and inSession and notRestricted)
    strategy.entry("Long", strategy.long, qty=10, stop=close - 7 * syminfo.mintick)
if (bearishContinuation and inSession and notRestricted)
    strategy.entry("Short", strategy.short, qty=10, stop=close + 7 * syminfo.mintick)

// Break-Even Adjustment
if (strategy.position_size > 0 and close >= strategy.position_avg_price + 5 * syminfo.mintick)
    strategy.exit("BreakEvenLong", from_entry="Long", stop=strategy.position_avg_price)
if (strategy.position_size < 0 and close <= strategy.position_avg_price - 5 * syminfo.mintick)
    strategy.exit("BreakEvenShort", from_entry="Short", stop=strategy.position_avg_price)

// Display Indicators on Chart
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
plot(ema200, color=color.red, title="200 EMA")