Granville과 MACD 다중 신호 확인을 기반으로 한 추세 추종 거래 전략

EMA MACD GC(Golden Cross) SL(Stop Loss) TP(Take Profit)
생성 날짜: 2025-02-20 11:38:15 마지막으로 수정됨: 2025-02-27 17:46:54
복사: 2 클릭수: 323
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

Granville과 MACD 다중 신호 확인을 기반으로 한 추세 추종 거래 전략 Granville과 MACD 다중 신호 확인을 기반으로 한 추세 추종 거래 전략

개요

이 전략은 그랜빌 트렌드 반전 이론과 MACD 지표의 여러 신호를 결합한 거래 확인 시스템이다. 전략의 핵심 아이디어는 가격과 평균선의 관계를 통해 잠재적인 트렌드 반전을 판단하고 MACD 지표의 여러 신호 검증을 사용하여 거래의 신뢰성을 보장하는 것이다. 이 방법은 트렌드의 시작점을 효과적으로 식별할 수 있을 뿐만 아니라 여러 확인 메커니즘을 통해 가짜 신호의 위험을 줄일 수 있다.

전략 원칙

이 전략의 실행 과정은 4가지 핵심 단계로 구성되어 있습니다.

  1. 그란빌 반전 신호 확인: 가격의 EMA 평균선 아래에서 상향으로 돌파되는지를 모니터링하여, 트렌드 반전이 발생할 수 있음을 나타냅니다.
  2. MACD 첫 번째 금포크 확인: 그란빌 역전 신호가 나타난 후 MACD 지표의 금포크가 나타나기를 기다리는 것은 트렌드 전환의 두 번째 재확인이다.
  3. MACD 브레이크 검증: MACD 라인이 처음으로 금강을 뚫었을 때의 최고점을 확인합니다. 이는 상승 동력이 지속적으로 강화되고 있음을 나타냅니다.
  4. MACD 2차 반전: MACD가 돌파한 후 반전하고 다시 신호선을 통과할 때까지 기다립니다. 이것이 최종 입력 신호입니다.

정지 손실 설정은 역전 K선 진폭에 기반한 동적 조정 방법을 사용하여, 정지 손실을 역전 K선 진폭의 1.618배로 역전 K선 진폭에 설정합니다. 이것은 피보나치 확장 원칙에 부합합니다.

전략적 이점

  1. 다중 확인 메커니즘: 가격 행동, 트렌드 지표 및 동력 지표를 결합하여 거짓 신호의 위험을 크게 줄입니다.
  2. 다이내믹 리스크 관리: 시장의 실제 변동에 기반한 스톱 스톱 손실을 설정하여 리스크 관리를 더 적응적으로 만듭니다.
  3. 트렌드 지속성 검증: MACD의 다중 신호 확인을 통해 지속성 트렌드를 포착하는 정확도가 향상되었다.
  4. 자기 적응력: 전략 매개 변수는 다른 시장 조건과 시간 주기에 따라 최적화 조정할 수 있다.

전략적 위험

  1. 신호 지연성: 복수의 확인 메커니즘은 출입시의 상대적인 지연을 초래할 수 있으며, 잠재적인 수익의 일부에 영향을 미칠 수 있다.
  2. 분기 시장의 성과: 상반기 정리 시장에서, 빈번한 가짜 돌파가 연속적인 정지 손실을 초래할 수 있다.
  3. 기술 지표에 과도한 의존: 시장의 감정이 급격히 변동할 때, 순수 기술 분석은 효과가 없을 수 있습니다.
  4. 매개 변수 민감성: 전략의 유효성을 유지하기 위해 다양한 시장 환경에서 매개 변수를 자주 조정해야 할 수 있습니다.

전략 최적화 방향

  1. 시장 환경 분류: 변동률 지표를 도입하고, 다른 시장 환경에서 다른 파라미터 구성을 사용한다.
  2. 입구 타이밍 최적화: MACD 두 번째 회전 시 거래량 확인을 증가시키고 신호 신뢰성을 향상시킬 수 있다.
  3. 스톱 스톱 손실 동적 조정: 시장의 변동에 따라 스톱 스톱 손실 배수를 조정할 수 있다.
  4. 시장 감정 요소를 증가 시키기: 시장 감정 지표와 결합하여 극단적 인 감정 기간에 전략을 급격히 조정하십시오.

요약하다

이 전략은 고전적인 기술 분석 이론과 현대적인 양적 거래 방법을 결합하여 비교적 완전한 거래 시스템을 구축한다. 다중 신호 확인 메커니즘은 거래 신뢰성을 제공하며, 동적 위험 관리 방법은 전략에 대한 좋은 적응력을 제공합니다. 약간의 뒤떨어진 문제가 있지만, 지속적인 최적화 및 매개 변수 조정으로 전략은 여전히 좋은 실용적 가치와 발전 잠재력을 가지고 있다.

전략 소스 코드
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Granville + MACD Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ■ Parameter Settings
emaPeriod = input.int(20, "EMA Period for Granville", minval=1)
fastLen   = input.int(12, "MACD Fast Period", minval=1)
slowLen   = input.int(26, "MACD Slow Period", minval=1)
signalLen = input.int(9,  "MACD Signal Period", minval=1)

// ■ Calculate EMA (for Granville reversal detection)
ema_val = ta.ema(close, emaPeriod)

// ■ Granville Reversal Detection (e.g., price crosses above EMA from below)
granvilleReversal = ta.crossover(close, ema_val)

// ■ Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLen, slowLen, signalLen)

// ■ State management variables (to manage state transitions)
var bool   granvilleDone   = false    // Reversal bar confirmed flag
var float  granvilleLow    = na       // Low of the reversal bar (used for SL)
var float  granvilleRange  = na       // Range of the reversal bar (used for TP calculation)
var bool   macdGC_done     = false    // First MACD Golden Cross confirmed
var int    goldenCrossBar  = na       // Bar index of the first MACD Golden Cross
var float  initialMacdHigh = na       // MACD value at the Golden Cross (used for break detection)
var bool   breakoutDone    = false    // MACD line breaks the initial Golden Cross MACD value

// ■ (1) Granville Reversal Detection
if granvilleReversal
    granvilleDone  := true
    granvilleLow   := low             // Low of the reversal bar (SL)
    granvilleRange := high - low      // Range of the reversal bar (used for TP calculation)
    // Reset MACD-related states
    macdGC_done     := false
    breakoutDone    := false
    initialMacdHigh := na
    goldenCrossBar  := na

// ■ (2) MACD Golden Cross (first signal) detection
if granvilleDone and (not macdGC_done) and ta.crossover(macdLine, signalLine)
    macdGC_done    := true
    goldenCrossBar := bar_index
    initialMacdHigh:= macdLine

// ■ (3) Check if MACD line breaks the initial MACD value at the Golden Cross
if macdGC_done and (not breakoutDone) and (macdLine > initialMacdHigh)
    breakoutDone := true

// ■ (4) When MACD retests and crosses above the signal line again, it's the entry timing
// ※ Check for a crossover after the first Golden Cross bar
entryCondition = granvilleDone and macdGC_done and breakoutDone and (bar_index > goldenCrossBar) and ta.crossover(macdLine, signalLine)

// ■ TP and SL settings at entry
if entryCondition
    entryPrice = close
    tpPrice = entryPrice + granvilleRange * 1.618
    slPrice = granvilleLow
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=slPrice, limit=tpPrice)
    // Reset states after entry (for the next entry)
    granvilleDone   := false
    macdGC_done     := false
    breakoutDone    := false
    initialMacdHigh := na
    goldenCrossBar  := na

// ■ Plotting (for reference)
// Display the EMA on the price chart (with fixed title)
plot(ema_val, color=color.orange, title="EMA (20)")

// Plot MACD and Signal in a separate window (with fixed titles)
plot(macdLine, color=color.blue, title="MACD")
plot(signalLine, color=color.red, title="Signal")