Strategi ini menggunakan berbagai indikator rata-rata bergerak, termasuk SMMA, SMA, ZLEMA, dan EMA, dan membangun indikator MACD yang lebih baik (Impulse MACD) berdasarkan mereka. Ini menghasilkan sinyal perdagangan melalui persilangan Impulse MACD dan garis sinyalnya.
Strategi ini membangun indikator MACD yang ditingkatkan berdasarkan berbagai jenis moving average dan menghasilkan sinyal perdagangan melalui persilangan dengan garis sinyal sambil secara intuitif menampilkan kekuatan tren. Ide keseluruhan jelas, dan keuntungannya jelas. Namun, strategi ini juga memiliki keterbatasan tertentu, seperti kemampuan beradaptasi yang buruk terhadap pasar yang bergolak dan kurangnya langkah-langkah pengendalian risiko. Peningkatan lebih lanjut dapat dipertimbangkan dari aspek seperti identifikasi tren, konfirmasi sinyal, pengendalian risiko, dan optimasi parameter untuk meningkatkan ketahanan dan profitabilitas strategi.
/*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")