MACD 양적 거래 전략

저자:차오장, 날짜: 2023-12-19 15:11:57
태그:

img

전반적인 설명

이 전략은 MACD 지표를 사용하여 MACD가 특정 수준 이하로 떨어지면 평균 회귀 기회를 활용하기 위해 긴 포지션 거래 신호를 만듭니다.

전략 논리

긴 신호는 MACD 라인이 SIGNAL 라인의 아래에 있고 MACD의 절대 값이 -0.00025 이하일 때 생성됩니다. 긴 포지션을 취한 후 MACD 라인이 다시 SIGNAL 라인의 위를 넘으면 포지션은 닫힐 것입니다.

이 전략은 매크드 지표를 사용하여 과판된 부위를 탐지합니다. 이동 평균 이론에 따르면 단기간에 평균 반전의 확률이 있으며, 이 확률에 따라 긴 신호가 설정됩니다.

장점

  1. MACD 지표를 이용해서 과잉 판매 수준을 판단하는데, 어느 정도 신뢰성이 있습니다.
  2. 간단한 거래 신호와 적용하기 쉬운 규칙.
  3. 긴 보유 기간은 거래의 빈도가 낮아지고 거래 비용과 미끄러짐이 감소한다는 것을 의미합니다.

위험성

  1. 실패한 반귀의 위험은 반귀가 일어나지 않으면 손실을 초래할 것입니다.
  2. 잘못된 MACD 매개 변수 선택으로 인한 무효 신호입니다.

이 위험은 매개 변수 최적화를 통해 줄일 수 있습니다.

개선

  1. 최고의 조합을 찾기 위해 MACD 매개 변수를 최적화합니다.
  2. 최적의 기간을 찾기 위해 다른 유지 기간을 테스트합니다.
  3. 스톱 손실 메커니즘을 추가합니다.

요약

이 전략은 MACD 지표에 의해 식별된 과판 수준에서 평균 회귀의 확률을 활용하여 긴 신호를 생성하고 긴 보유 기간 동안 수익을 창출합니다. MACD 매개 변수를 최적화하고 스톱 손실을 추가하면 신뢰성이 향상됩니다. 요약하면 비교적 간단한 지표와 규칙을 사용하여 이해하기 쉽고 양적 전략을 구축하고 구현합니다.


//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=columns, 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)

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)

더 많은