Diese Strategie basiert auf der Nullverzögerungs-Version des MACD-Indikators (Moving Average Convergence Divergence), der kurzfristige Trends erfasst, indem er schnell auf Preisänderungen reagiert, was einen Hochfrequenzhandel ermöglicht. Die Strategie verwendet zwei gleitende Durchschnitte mit unterschiedlichen Perioden (schnelle und langsame Linien), um den MACD-Indikator zu konstruieren, und führt einen Nullverzögerungs-Algorithmus ein, um die Verzögerung zwischen Indikator und Preis zu beseitigen, wodurch die Aktualität der Signale verbessert wird. Zusätzlich wird die Überschneidung der Signallinie und der MACD-Linie als Kauf- und Verkaufssignale verwendet, und Alarme werden eingerichtet, um den Händlern zu helfen, Handelsmöglichkeiten rechtzeitig zu nutzen.
Die MACD Dual Crossover Zero Lag Trading Strategie erzielt einen hohen Frequenzhandel, indem sie schnell auf Preisänderungen reagiert und kurzfristige Trends erfasst. Der Null-Lag-Algorithmus und das doppelte gleitende Durchschnittsdesign verbessern die Aktualität und Genauigkeit der Signale. Die Strategie hat bestimmte Vorteile, wie intuitive Signale und bequeme Bedienung, aber auch Risiken wie Overtrading und Parameterempfindlichkeit. In Zukunft kann die Strategie durch die Einführung von Trendbestätigungsindikatoren, Parameteroptimierung, Multifaktormodellen usw. optimiert werden, um die Robustheit und Rentabilität der Strategie zu verbessern.
/*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)