Strategi perdagangan crossover rata-rata bergerak MACD adalah strategi perdagangan kuantitatif yang melacak situasi crossover rata-rata bergerak eksponensial jangka pendek dan jangka panjang (EMA) dan melakukan operasi beli dan jual ketika golden cross dan dead cross terjadi.
Strategi ini terutama didasarkan pada EMA 12 hari, EMA 26 hari dan indikator MACD. Logika spesifiknya adalah:
Selain itu, strategi ini juga menetapkan beberapa kondisi penyaringan:
Strategi ini menggabungkan crossover rata-rata bergerak dan indikator MACD, yang dapat secara efektif menangkap titik perubahan tren pasar jangka pendek dan jangka menengah.
Strategi ini juga memiliki beberapa risiko:
Metode mitigasi yang sesuai:
Aspek utama untuk mengoptimalkan strategi ini meliputi:
Strategi perdagangan crossover rata-rata bergerak MACD menghasilkan sinyal perdagangan melalui pelacakan tren sederhana dan secara efektif mengontrol risiko dengan kondisi penyaringan yang tepat. Ini adalah strategi perdagangan kuantitatif yang efektif. Strategi dapat ditingkatkan dengan cara seperti optimasi parameter, menambahkan mekanisme stop loss, menggabungkan lebih banyak indikator tambahan dll.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMMA", max_bars_back = 200) var up1 = #26A69A var up2 = #B2DFDB var down1 = #FF5252 var down2 = #FFCDD2 var confirmationLength = 2 var earliest = timestamp("20 Jan 2024 00:00 +0000") // Regn u shortEMA = ta.ema(close, 12) longEMA = ta.ema(close, 26) macd = shortEMA - longEMA signal = ta.ema(macd, 9) delta = macd - signal absDelta = math.abs(delta) previousDelta = delta[1] signalCrossover = ta.crossover(macd, signal) signalCrossunder = ta.crossunder(macd, signal) harskiftetdag = hour(time[confirmationLength]) > hour(time) enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08) exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal) enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08) exitShortSignal = signalCrossover[confirmationLength] and (macd > signal) // Så er det tid til at købe noe qty = math.floor(strategy.equity / close) if time >= earliest and not harskiftetdag if exitLongSignal strategy.close("long") else if enterLongSignal strategy.close("short") strategy.entry("long", strategy.long, qty = qty) if exitShortSignal strategy.close("short") else if enterShortSignal strategy.close("long") strategy.entry("short", strategy.short, qty = qty) // Så er det tid til at vise noe plot(macd, color=color.blue) plot(signal, color=color.orange) // bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100)) // bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100)) histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2) plot( delta, style=plot.style_columns, color=histogramColor )