Diese Strategie nutzt verschiedene gleitende Durchschnittsindikatoren, darunter SMMA, SMA, ZLEMA und EMA, und konstruiert auf ihrer Grundlage einen verbesserten MACD-Indikator (Impulse MACD). Sie erzeugt Handelssignale durch das Crossover des Impulse MACD und seiner Signallinie. Die Hauptidee der Strategie besteht darin, Markttrends mit gleitenden Durchschnitten verschiedener Zeitrahmen zu erfassen und gleichzeitig die Stärke und Richtung des Trends mit dem Impulse MACD zu bestätigen.
Diese Strategie konstruiert einen verbesserten MACD-Indikator auf der Grundlage verschiedener Arten von gleitenden Durchschnitten und erzeugt Handelssignale durch seine Kreuzung mit der Signallinie, während die Trendstärke intuitiv angezeigt wird. Die allgemeine Idee ist klar und die Vorteile sind offensichtlich. Die Strategie hat jedoch auch bestimmte Einschränkungen, wie eine schlechte Anpassungsfähigkeit an unsichere Märkte und einen Mangel an Risikokontrollmaßnahmen. Weitere Verbesserungen können aus Aspekten wie Trendidentifikation, Signalbestätigung, Risikokontrolle und Parameteroptimierung zur Steigerung der Robustheit und Rentabilität der Strategie in Betracht gezogen werden.
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false) // Function to calculate SMMA calc_smma(src, len) => var float smma = na smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len smma // Function to calculate SMA ta.sma(src, len) sum = 0.0 for i = 0 to len - 1 sum := sum + src[i] sum / len // Function to calculate ZLEMA calc_zlema(src, length) => var float ema1 = na var float ema2 = na var float d = na ema1 := ta.ema(src, length) ema2 := ta.ema(ema1, length) d := ema1 - ema2 ema1 + d // Function to calculate EMA calc_ema(src, len) => ema = 0.0 ema := ta.ema(src, len) ema // Inputs lengthMA = input(34, title="Length of Moving Average") lengthSignal = input(9, title="Length of Signal Line") // Calculations src = hlc3 hi = calc_smma(high, lengthMA) lo = calc_smma(low, lengthMA) mi = calc_zlema(src, lengthMA) md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0 sb = ta.sma(md, lengthSignal) sh = md - sb mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange // Plotting plot(0, color=color.gray, linewidth=1, title="MidLine") plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram) plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram) plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal") // Execute trades based on signals if (ta.crossover(md, sb)) strategy.entry("Buy", strategy.long) if (ta.crossunder(md, sb)) strategy.close("Buy")