이 전략은 MACD 트렌드 다음 전략 (MACD Trend Following Strategy) 이라고 불린다. 이 전략은 가격 추세를 결정하고 거래 추세를 추적하기 위해 MACD 지표를 활용하는 양적 전략이다. 이 전략은 중장기 트렌드를 파악하고 트렌드 반전이 발생할 때 적시에 포지션을 조정하는 것을 목표로 한다.
이 전략은 가격 트렌드를 결정하기 위해 MACD 지표를 사용합니다. MACD는 빠른 EMA 라인 (12 일) 과 느린 EMA 라인 (26 일) 으로 구성된 브레이크아웃 지표입니다. 이 두 라인 사이의 차이는 MACD 히스토그램을 형성하며, 히스토그램의 9 일 EMA는 MACD 신호 라인입니다. MACD 라인이 신호 라인 위에 넘어가면 상승 추세를 나타내는 황금 십자가입니다. MACD 라인이 라인 아래에 넘어가면 하향 추세를 나타내는 죽은 십자가 신호입니다.
이 전략은 먼저 MACD 라인과 신호 라인을 계산하고 두 라인 사이의 차이 델타를 계산합니다. 델타가 0을 넘으면 구매 신호가 생성됩니다. 델타가 0을 넘으면 판매 신호가 생성됩니다. 이 두 신호를 기반으로 전략은 그에 따라 포지션을 조정합니다. 잡음을 필터링하기 위해 전략은 EMA 라인을 도입합니다. 유효한 거래 신호는 가격이 이 EMA 라인을 넘을 때만 생성됩니다.
구체적으로, 전략 논리는 다음과 같습니다.
이 설계로 전략은 중장기 트렌드를 따라가며 트렌드가 역전될 때 빠르게 포지션을 조정할 수 있습니다. 단기 시장 소음으로 오해되는 것을 피합니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
주의해야 할 몇 가지 위험 요소가 있습니다.
해결책:
이 전략은 다음과 같은 방법으로 더 이상 최적화 될 수 있습니다.
지표 조합, 적응 매개 변수, 스톱 로스/이익 취득 등과 같은 방법을 통해 상당한 개선이 가능합니다.
요약하자면, MACD 트렌드 다음 전략은 중장기 트렌드를 식별하기 위해 간단하고 효과적인 MACD 지표를 활용하고 논리를 따라 명확한 트렌드를 구현합니다. 트렌드와 합리적인 리스크 제어 조치를 포착 할 수있는 능력이 있습니다. 추가 최적화로 전략은 매우 실용적인 양 거래 시스템으로 변할 수 있습니다. 단기 이익보다 안정적인 장기 수익을 추구하는 투자자에게 적합합니다.
/*backtest start: 2022-11-14 00:00:00 end: 2023-10-27 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MACD Strategy v1.0", shorttitle = "MACD str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") usefil = input(false, defval = false, title = "Use EMA filter") lenfil = input(5, defval = 5, minval = 1, maxval = 50, title = "EMA filter period") fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD //Signals ema = ema(close, lenfil) trend = crossover(delta, 0) == true ? 1 : crossunder(delta, 0) == true ? -1 : trend[1] up = trend == 1 and (low < ema or usefil == false) ? 1 : 0 dn = trend == -1 and (high > ema or usefil == false) ? 1 : 0 plot(ema, color = black, transp = 0) if (up == 1) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) if (dn == 1) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)