MACD (Moving Average Convergence Divergence)

テクニカル指標テクニカル指標,FX,MA,MACD

MACD(Moving Average Convergence Divergence、マックディー)とは短期と長期の指数移動平均(EMA)の差を見ることで、トレンドを把握しようとする方法です。オシレーター系指標に分類されることもあります(MT5ではオシレータの中にあります)。

トレンドを形成しているときに有効なインジケータとされます。

計算式

MACDには主に2つの曲線があります。MACDとシグナルラインと呼ばれています。

MACD = EMA(data, 12) – EMA(data, 26)

ここで、EMAは指数移動平均、dataは通常close値を表しますが、Typical Price(HLC/3)やWeighted Close(HLCC/4)なども使われます。

お気持ちとしては短期(fast)と長期(slow)EMAの差を見ており、短期EMAの方が長期EMAよりも上の位置にあれば上昇トレンドがあるだろうという感じです。逆の場合は、下降トレンドということです。この差が大きいほど強いトレンドがあるだろうと考えることができます。

単純な意味でのゴールデンクロス・デッドクロスは、移動平均が超えた場合にエントリーとなりますが、これはMACDの符号が変わるタイミングを表しています。MACDは移動平均のクロスオーバー戦略にトレンドの強弱を考慮した方法とも言えます。

このように考えると、トレンドの強弱の平均的な挙動を知りたくなってきます。それを表したのがシグナルラインでMACDに対してEMAを取ります。

Signal Line = EMA(MACD, 9)

一般に、シグナルラインはMACDに対して9期間での指数移動平均をとったものです。平均的なトレンドがどのようになってくるか見たものです。

平均的なトレンドの強弱を見たくなります。これは、MACDとシグナルラインの差分を取ることで得ることができます。これはMACDヒストグラムと呼ばれます。

Histogram = MACD – Signal line

移動平均のクロスオーバー戦略と同じようにMACD値がシグナルラインを超えているときは、上昇トレンドが移動平均値より強いことを表し、上昇トレンドを表します。なお、ヒストグラムに対して移動平均を取れば同じことを繰り返すことができます。

見方

MACDを見るときは特定の時間足で見ますが、今回はドル円の1時間足のクローズ値を見ていきます。

上図がドル円の2023年6月1日9時から6日2時までのティックデータ66点の動きです。

下図がクローズ値に対してMACDを適用したラインです。

条件1

MACDラインがシグナルラインを上向(下向き)にクロスしたら買い(売り)

MACDラインとシグナルラインのゴールデンクロス時には買い、デッドクロス時には売るというタイミングです。ヒストグラムは2つのグラフの大小関係を表すため、正負が逆転したタイミングでエントリーします。最初のクロスした点は、シグナルは小さいですが、ちょうどMACDのヒストグラムが負から正になる5点目です。

条件2

ゴールデンクロス(デッドクロス)後、MACDラインが正(負)になるタイミングでは買い(売り)

条件1を満たした後に、MACDラインが0を超えれば買い増して、0を下回れば売ります。

ぱっと見でも今回のドル円だとワークしそうな感じですのでバックテストで確認してみます。

Python実装

MACDの実装は非常に単純です。

def EMA(prices, period=14, alpha=None):
    if alpha is None:
        alpha = 2 / (period + 1)
    ema = prices.ewm(alpha=alpha, adjust=False).mean()
    return ema

def MACD(prices):
    return EMA(prices, 12) - EMA(prices, 26)

macd = MACD(df.price)
signal = EMA(macd, 9)
hist = macd - signal