移動平均クロスオーバーMACD取引戦略は,短期および長期指数的な移動平均 (EMA) のクロスオーバー状況を追跡し,黄金クロスとデッドクロスが発生するときに購入および販売操作を行う定量的な取引戦略である.この戦略は,取引信号判断のためのMACD指標を組み合わせています.
この戦略は主に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 )