Strategi perdagangan crossover purata bergerak MACD adalah strategi perdagangan kuantitatif yang mengesan situasi crossover purata bergerak eksponensial jangka pendek dan jangka panjang (EMA) dan membuat operasi beli dan jual apabila melintasi emas dan melintasi mati berlaku.
Strategi ini terutamanya bergantung pada 12 hari EMA, 26 hari EMA dan penunjuk MACD. Logik tertentu adalah:
Di samping itu, strategi ini juga menetapkan beberapa syarat penapisan:
Strategi ini menggabungkan crossover purata bergerak dan penunjuk MACD, yang dapat menangkap dengan berkesan titik perubahan trend pasaran jangka pendek dan sederhana.
Strategi ini juga mempunyai beberapa risiko:
Kaedah pengurangan yang sepadan:
Aspek utama untuk mengoptimumkan strategi ini termasuk:
Strategi perdagangan crossover purata bergerak MACD menjana isyarat perdagangan melalui penjejakan trend yang mudah dan berkesan mengawal risiko dengan keadaan penapisan yang sesuai.
/*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 )