
이 전략은 MACD 트렌드 추적 전략이라고 불리며, MACD 지표를 사용하여 가격 트렌드를 판단하고 트렌드를 따라 거래하는 양적 전략이다. 이 전략은 중·장기 트렌드를 포착하고, 트렌드가 변할 때 적시에 포지션을 조정하는 것을 목표로 한다.
이 전략은 MACD 지표를 사용하여 가격 추세를 판단한다. MACD 지표는 단선 EMA ((12일) 와 느린 선 EMA ((26일) 로 구성된 돌파 지표이며, 이들의 이차 값은 MACD 기둥 모양의 선을 구성하며, 기둥 모양의 선의 9일 EMA는 MACD의 신호 라인을 구성한다. MACD 라인에 신호 라인을 통과하면 금 포크가 상승 추세에 있음을 나타냅니다. MACD 라인에 신호 라인을 통과하면 사다리 포크가 다운 추세에 있음을 나타냅니다.
이 전략은 먼저 MACD 라인과 신호 라인을 계산한 다음 MACD 라인과 신호 라인의 차등값 델타를 계산한다. 델타가 0을 통과할 때 구매 신호가 발생하고, 델타가 0을 통과할 때 판매 신호가 발생하며, 이 두 신호에 따라 포지션을 조정한다. 노이즈를 필터링하기 위해, 전략은 또한 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)