MACDトレンドフォロー戦略


作成日: 2023-11-24 15:51:39 最終変更日: 2023-11-24 15:51:39
コピー: 0 クリック数: 646
1
フォロー
1617
フォロワー

MACDトレンドフォロー戦略

概要

MACDトレンド追跡策略は,MACD指標とその信号線の金叉死叉を計算してトレンドを判断し,トレンド追跡を利益にする.

戦略原則

この戦略は,MACD指標に基づいてトレンドの方向を判断する.MACD指標は,トレンド追跡指数であり,移動平均と平らなもので,快線 (MACD),慢線 (Signal) とヒストグラムで構成されている.快線と慢線の金叉は,トレンドが牛市を始める可能性があることを示し,死叉は,トレンドが熊市を始める可能性があることを示している.ヒストグラムは,快線と慢線の差値を代表し,色の変化によって2つの平均線の近接と変化の速度を判断する.

ヒストグラムがマイナスから正数に上昇すると金叉信号が生じる.これは,取引が始まったばかりであることを示すため,多頭ポジションを確立することができる.ヒストグラムが正数からマイナスに変化すると,取引が頂点に達する可能性を示すために,多頭ポジションを平らげるか空頭ポジションを確立することができる.

優位分析

  • 二重スムージング平均線金,死叉形状の判断傾向を利用して,勝率が高い
  • ヒストグラムはMACD指標の動きと速度を明確に判断します.
  • パラメータの最適化スペースは大きく,最適状態に調整できます.
  • 偽信号をフィルターする他の指標と連携

リスクと最適化

  • 落とし穴がある
  • 誤った信号が出る可能性
  • MA,KDなどの指標でトレンドを確認できます.
  • 調整可能なパラメータを最適配置に

要約する

MACDトレンド追跡戦略は,全体としてより信頼性の高いトレンド判断方法である.最適化パラメータを,他の指標と組み合わせて確認することにより,偽信号率を大幅に低減して,より高い戦略収益を得ることができる.この戦略の考え方は,簡単で理解しやすく,自動化量化取引の入門の第一選択である.

ストラテジーソースコード
/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("MACD")

// Getting inputs
fastLength = input(title="Fast Length",  defval=12)
slowlength = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signalLength = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)

// Calculating
macd = ema(close, fastLength) - ema(close, slowlength)
signal = ema(macd, signalLength)
delta = macd - signal

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Plot histogram
plot(delta, title="Histogram", style=columns, color=(delta>=0 ? (delta[1] < delta ? col_grow_above : col_fall_above) : (delta[1] < delta ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

// Plot orders
if (crossover(delta, 0))
    strategy.entry("buy", strategy.long)
if (crossunder(delta, 0))
    strategy.entry("sell", strategy.short)