모멘텀 파기 MACD 전략은 주로 트렌드 추적 전략에 속하는 MACD 지표와 모멘텀 지표의 조합을 활용하여 거래 신호를 생성합니다. 이 전략은 먼저 빠른 EMA와 느린 EMA를 계산하고 MACD 값을 계산하고 MACD 신호선을 계산합니다. 동시에 가격의 모멘텀 값을 계산합니다. 모멘텀 값이 MACD 차이와 함께 제로 수준을 넘으면 구매 신호를 생성합니다. 모멘텀 값이 MACD 차이와 함께 제로 수준을 넘으면 판매 신호를 생성합니다. 이것은 거래 신호를 생산하는 이중 확인 메커니즘에 속합니다.
이 전략은 주로 MACD와 모멘텀 지표의 조합에 기반합니다.
MACD 지표는 트렌드를 따르는 지표로, 빠른 EMA, 느린 EMA, MACD 히스토그램으로 구성됩니다. 빠른 EMA는 일반적으로 12 일 매개 변수를 가지고 있으며 느린 EMA는 26 일 매개 변수를 가지고 있습니다. 계산 공식은 다음과 같습니다.
패스트 EMA = EMA (폐기 가격, 12)
느린 EMA = EMA (결결 가격, 26)
MACD = 빠른 EMA - 느린 EMA
신호선 = EMA (MACD, 9)
빠른 EMA가 느린 EMA를 넘을 때, 그것은 단기 상승 추세가 장기 트렌드보다 강하다는 것을 의미합니다. 이것은 구매 신호입니다. 빠른 EMA가 느린 EMA를 넘을 때, 그것은 단기 하락 추세가 판매 신호인 단기 트렌드보다 강하다는 것을 의미합니다.
모멘텀 지표는 가격 움직임의 속도를 반영하고 계산 공식은 다음과 같습니다.
모멘텀 = 오늘의 종료 가격 - N 일 전 종료 가격
일반적으로 N는 10로 설정됩니다. 오늘의 종료 가격이 N 일 전보다 높을 때, 동력 값은 긍정적 인 상승 추세를 나타냅니다. 오늘의 종료 가격이 N 일 전보다 낮아지면, 동력 값은 부정적 인 하락 추세를 나타냅니다.
이 전략은 MACD 지표와 모멘텀 지표를 결합한다. 거래 신호를 생성하는 기준은: MACD 차이와 모멘텀 차이 사이의 차이는 0 수준을 넘으면 구매 신호를 생성하여 0 이상의 크로스오버를 형성한다. 차이는 0 수준을 넘으면 판매 신호를 생성하여 0 이하 크로스오버를 형성한다. 이것은 일부 잘못된 신호를 필터링하여 트렌드 다음을 달성할 수있는 거래 신호를 생산하는 이중 확인 메커니즘에 속한다.
이 전략의 장점은 다음과 같습니다.
MACD와 모멘텀 지표의 조합은 트렌드를 따라가며 자산 가격이 명확한 방향 없이 변동할 때 비효율적인 거래를 피합니다.
이중 확인 메커니즘을 기반으로 약간의 소음을 필터링하고 잘못된 신호의 간섭을 피할 수 있습니다.
MACD 매개 변수는 조정 가능하며, 다른 제품과 거래 주기에 최적화 될 수 있으므로 매우 적응력이 있습니다.
두 방향의 트렌드를 파악하기 위해 구매 및 판매 거래 메커니즘을 모두 채택합니다.
이 전략은 이해하기 쉽지만, 초보자도 배울 수 있는
이 전략에는 또한 몇 가지 위험이 있습니다.
MACD와 모멘텀 모두 트렌드 추후 지표에 속한다. 시장이 격렬한 변동을 보거나 명확한 추세가 없는 경우 더 비효율적인 거래를 생성할 수 있다.
이중 지표 조합은 잘못된 신호를 필터링 할 수 있지만 일부 거래 기회를 놓칠 수도 있습니다. 위험 균형을 맞추기 위해 매개 변수를 조정해야합니다.
주요 주기 흐름이 반전되면 MACD 지표가 지연하여 거래 손실로 이어질 수 있습니다.
거래 빈도는 높을 수 있어 자본 관리와 수수료 통제에 주의를 기울여야 합니다.
부적절 한 매개 변수 는 너무 많은 감수성 또는 지연 으로 이어질 수 있습니다. 시장 조건 에 따라 지속적인 테스트 및 최적화 가 필요 합니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
MACD 매개 변수를 최적화하여 다른 거래 제품과 주기에 가장 적합한 매개 변수 조합을 찾습니다.
감수성과 노이즈 필터링을 균형을 맞추기 위해 모멘텀 지표의 기간 매개 변수를 최적화합니다.
거래당 최대 손실을 제어하기 위해 스톱 로스 메커니즘을 추가합니다.
트렌드를 따라 거래 크기를 확장하기 위해 포지션 관리 모듈을 추가합니다.
ATR 지표와 같은 필터를 추가하여 불안한 시장에서 잘못된 거래를 피합니다.
볼링거 밴드나 RSI 같은 다른 지표를 통합하여 다중 확인 거래 신호를 형성합니다.
연속적인 매개 변수 반복 및 최적화를 위한 최적화 루프를 추가합니다.
모멘텀 브레이크다운 MACD 전략은 MACD와 모멘텀 지표의 장점을 사용하여 트렌드 다음 거래를 구현합니다. 이중 확인 메커니즘은 시장 소음을 효과적으로 필터링하고 비효율적인 거래를 피할 수 있습니다. 이 전략은 비교적 간단하고 이해하기 쉽습니다. 특히 초보자에게 적합합니다. 그러나 범위 제한 시장에서 MACD의 후퇴와 비효율적인 거래의 위험은 주목해야합니다. 전략은 매개 변수를 지속적으로 최적화하고 보조 기술 지표를 통합하여 더욱 견고하게 할 수 있습니다.
/*backtest start: 2022-10-13 00:00:00 end: 2023-10-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="MACD MOMENTUM TEST", shorttitle="MACD MOM TEST") // Getting inputs fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) len = input(title="Momentum", type=input.integer, defval=10) src1 = input(title="Source MACD", type=input.source, defval=close) src2 = input(title="Source MOMENTUM", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 14) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false) // Plot colors col_grow_above = #0c8e61 col_grow_below = #ffcdd2 col_fall_above = #b2dfdb col_fall_below = #d42f28 col_macd = #ffffff col_signal = #d42f28 col_mom = #fbc02d // Calculating fast_ma = sma_source ? sma(src1, fast_length) : ema(src1, fast_length) slow_ma = sma_source ? sma(src1, slow_length) : ema(src1, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal mom = src2 - src2[len] ma(s,l) => ema(s,l) sema = ma( src1, fast_length ) lema = ma( src1, slow_length ) i1 = sema + mom + ma( src1 - sema, fast_length ) i2 = lema + mom + ma( src1 - lema, slow_length ) macdl = i1 - i2 macd1 =sema - lema delta = mom - macd1 // Strategy // Backtest FromYear = input(defval = 2001, title = "From Year", minval = 2009) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2009) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // Function exampel start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" if (crossover(delta, 0)) strategy.entry("Buy", true, when=window(), comment="Buy") if (crossunder(delta, 0)) strategy.close_all(when=window()) // Plot //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr) plot(hist, title="Histogram", style=plot.style_histogram, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) plot(mom, color=col_mom, title="Mom")