Стратегия торговли пересечением скользящей средней MACD - это количественная стратегия торговли, которая отслеживает пересечение краткосрочных и долгосрочных экспоненциальных скользящих средних (EMA) и совершает операции покупки и продажи при возникновении золотого креста и мертвого креста.
Эта стратегия в основном основана на 12-дневной EMA, 26-дневной EMA и индикаторе MACD.
Кроме того, эта стратегия также устанавливает некоторые условия фильтрации:
Эта стратегия сочетает в себе скользящий средний кроссовер и индикатор MACD, который может эффективно отражать точки перелома краткосрочных и среднесрочных тенденций рынка.
Эта стратегия также сопряжена с некоторыми рисками:
Соответствующие методы смягчения последствий
К основным аспектам оптимизации этой стратегии относятся:
Движущаяся средняя кроссовер MACD торговая стратегия генерирует торговые сигналы с помощью простого отслеживания тренда и эффективно контролирует риски с соответствующими условиями фильтрации. Это эффективная количественная торговая стратегия.
/*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 )