
이 전략은 MACD () 이동 평균 분산) 지표의 0 지연 버전을 기반으로 가격 변화에 빠르게 반응하여 단기 경향을 포착하여 고주파 트레이딩을 구현한다. 전략은 두 개의 다른 기간의 이동 평균 () 을 사용하여 MACD 지표를 구성하고, 지표와 가격의 지연을 제거하여 신호의 시기적절성을 향상시키는 0 지연 알고리즘을 도입한다. 동시에, 신호 선과 MACD 선의 교차를 구매 신호로 사용하고, 경보를 설정하여 거래자가 거래 기회를 신속하게 잡을 수 있도록 한다.
MACD 이중 전환 제로 지연 거래 전략은 가격 변화에 빠르게 반응하여 단기 트렌드를 포착하여 고 주파수 거래를 구현한다. 제로 지연 알고리즘과 이중 이동 평균의 설계는 신호의 시기적절성과 정확성을 향상시킨다. 전략은 신호 직관성, 조작 편의성 등과 같은 장점이 있지만, 과다 거래, 파라미터 민감성 등과 같은 위험도 존재한다. 추세 확인, 지표 파라미터 최적화, 다인자 모델 등의 방법을 도입하여 전략에 최적화를 할 수 있으며, 전략의 안정성과 수익 수준을 향상시킬 수 있다.
/*backtest
start: 2024-04-23 00:00:00
end: 2024-05-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("BNM INTRADAY SETUP MACD 3M - Version 1.2", shorttitle="Zero Lag MACD Enhanced 1.2")
source = close
fastLength = input(12, title="Fast MM period", minval=1)
slowLength = input(26,title="Slow MM period", minval=1)
signalLength =input(9,title="Signal MM period", minval=1)
useEma = input(true, title="Use EMA (otherwise SMA)")
useOldAlgo = input(false, title="Use Glaz algo (otherwise 'real' original zero lag)")
showDots = input(true, title="Show symbols to indicate crossing")
dotsDistance = input(1.5, title="Symbols distance factor", minval=0.1)
// Fast line
ma1 = useEma ? ema(source, fastLength) : sma(source, fastLength)
ma2 = useEma ? ema(ma1, fastLength) : sma(ma1, fastLength)
zerolagEMA = ((2 * ma1) - ma2)
// Slow line
mas1 = useEma ? ema(source, slowLength) : sma(source, slowLength)
mas2 = useEma ? ema(mas1, slowLength) : sma(mas1, slowLength)
zerolagslowMA = ((2 * mas1) - mas2)
// MACD line
ZeroLagMACD = zerolagEMA - zerolagslowMA
// Signal line
emasig1 = ema(ZeroLagMACD, signalLength)
emasig2 = ema(emasig1, signalLength)
signal = useOldAlgo ? sma(ZeroLagMACD, signalLength) : (2 * emasig1) - emasig2
hist = ZeroLagMACD - signal
upHist = (hist > 0) ? hist : 0
downHist = (hist <= 0) ? hist : 0
p1 = plot(upHist, color=color.blue, transp=40, style=plot.style_columns, title='Positive delta')
p2 = plot(downHist, color=color.red, transp=40, style=plot.style_columns, title='Negative delta')
zeroLine = plot(ZeroLagMACD, color=color.red, transp=0, linewidth=2, title='MACD line')
signalLine = plot(signal, color=color.blue, transp=0, linewidth=2, title='Signal')
ribbonDiff = hist > 0 ? color.blue : color.red
fill(zeroLine, signalLine, color=ribbonDiff)
circleYPosition = signal * dotsDistance
ribbonDiff2 = hist > 0 ? color.blue : color.red
// Generate dots for cross signals
plot(showDots and cross(ZeroLagMACD, signal) ? circleYPosition : na, style=plot.style_circles, linewidth=4, color=ribbonDiff2, title='Dots')
// Alerts for buy and sell signals
buySignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.blue) and (ZeroLagMACD < 0)
sellSignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.red) and (ZeroLagMACD > 0)
// Use 'strategy.entry' for placing orders in strategy context
if (buySignal)
strategy.entry("Buy", strategy.long)
alert("Buy Signal: Blue dot below zero line", alert.freq_once_per_bar_close)
if (sellSignal)
strategy.entry("Sell", strategy.short)
alert("Sell Signal: Red dot above zero line", alert.freq_once_per_bar_close)