この戦略は,MACDトレンドフォロー戦略と呼ばれています.これは,価格傾向を決定し,トレードへのトレンドを追跡するためにMACD指標を使用する定量戦略です.この戦略は,中長期トレンドを把握し,トレンド逆転が発生した場合にタイミングでポジションを調整することを目的としています.
この戦略は,価格動向を決定するためにMACD指標を使用する.MACDは,速いEMA線 (12日) とスローEMA線 (26日) によって形成されたブレイクアウト指標である.この2つの線間の差はMACDヒストグラムを形成し,ヒストグラムの9日EMAはMACD信号線である.MACD線が信号線の上を横切ると,上向きの傾向を示す黄金十字である.MACD線が線を下を横切ると,ダウン傾向を示す死十字信号である.
この戦略は,まずMACDラインとシグナルラインを計算し,次に両ラインの間のデルタ差を計算する.デルタが0を超えると買い信号が生成される.デルタが0を下回ると売り信号が生成される.これらの2つの信号に基づいて,戦略はそれに応じてポジションを調整する.ノイズをフィルタリングするために,戦略はEMAラインも導入する - 価格がこのEMAラインを突破したときのみ有効な取引信号が生成される.
具体的には 戦略の論理は
この設計により,戦略は中長期のトレンドを追跡し,トレンドが逆転するとポジションを迅速に調整できます.短期的な市場の騒音に惑わされないようにします.
この戦略には以下の利点があります.
注意すべきリスクは:
解決策:
この戦略は,次の方法でさらに最適化できます.
指標コンボ,適応性パラメータ,ストップ損失/利益取得などの方法によって 顕著な改善が達成できます
概要すると,MACDトレンドフォロー戦略は,中長期トレンドを特定するためにシンプルで効果的なMACD指標を利用し,論理に従って明確なトレンドを実装する.トレンドと合理的なリスク管理措置を把握する能力があります.さらなる最適化により,戦略は非常に実践的な量取引システムになることができます.短期利益よりも安定した長期利益を求める投資家に適しています.
/*backtest start: 2022-11-14 00:00:00 end: 2023-10-27 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MACD Strategy v1.0", shorttitle = "MACD str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") usefil = input(false, defval = false, title = "Use EMA filter") lenfil = input(5, defval = 5, minval = 1, maxval = 50, title = "EMA filter period") fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD //Signals ema = ema(close, lenfil) trend = crossover(delta, 0) == true ? 1 : crossunder(delta, 0) == true ? -1 : trend[1] up = trend == 1 and (low < ema or usefil == false) ? 1 : 0 dn = trend == -1 and (high > ema or usefil == false) ? 1 : 0 plot(ema, color = black, transp = 0) if (up == 1) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) if (dn == 1) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)