La estrategia de negociación de cruce de la media móvil MACD es una estrategia de negociación cuantitativa que rastrea las situaciones de cruce de medias móviles exponenciales (EMA) a corto y largo plazo y realiza operaciones de compra y venta cuando ocurren cruces dorados y cruces muertos.
Esta estrategia se basa principalmente en la EMA de 12 días, la EMA de 26 días y el indicador MACD.
Además, esta estrategia también establece algunas condiciones de filtrado:
Esta estrategia combina el cruce de la media móvil y el indicador MACD, que puede capturar eficazmente los puntos de inflexión de las tendencias a corto y mediano plazo del mercado.
Esta estrategia también tiene algunos riesgos:
Métodos de mitigación correspondientes:
Los principales aspectos para optimizar esta estrategia incluyen:
La estrategia de negociación MACD genera señales de negociación a través de un simple seguimiento de tendencias y controla eficazmente los riesgos con condiciones de filtrado apropiadas. Es una estrategia de negociación cuantitativa efectiva. La estrategia se puede mejorar en formas como la optimización de parámetros, la adición de mecanismos de stop loss, la incorporación de más indicadores auxiliares, etc.
/*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 )