MT5のMACDの使い方|シグナル線がSMAで他ツールと違う点

MACDは、期間の違う2本のEMAの差を線にしたオシレーターです。トレンドの向きと勢いを同時に見る目的で使われます。

ただしMT5のMACDには、知らないと混乱する仕様が1つあります。シグナル線がEMAではなくSMA(単純移動平均)で計算されている点です。このため、TradingViewなど他のツールと数値が一致しません。

この記事では、計算式を公式ドキュメントで確認したうえで、その差がどこから来るのか、MT5での表示手順、MQL5から扱う書き方までを扱います。

(確認環境:MetaTrader 5 / Windows 11)

MACDは2本のEMAの差

MACDの本体(MACDライン)は、短期EMAから長期EMAを引いた値です。2本が離れるほど値が大きくなり、近づくほどゼロに寄ります。

これに、MACDライン自体を平均したシグナル線を重ねます。2本の関係と、ゼロラインとの位置関係を見るのが基本的な使い方です。

MT5のシグナル線はSMAで計算されている

MetaTrader 5 の公式ヘルプには、次のように記載されています。

MACD = EMA(CLOSE,12) - EMA(CLOSE,26)

SIGNAL = SMA(MACD, 9)

出典:MetaTrader 5 ヘルプ「MACD」

本体は12と26のEMAの差で、これは一般的なMACDと同じです。違うのはシグナル線で、MT5は SMA(MACD, 9) を使っています。

MACDを考案したジェラルド・アペル氏の定義では、シグナル線もMACDラインのEMAです。多くのチャートツールはこちらを採用しています。

  MACDライン シグナル線
MT5の標準MACD EMA(12) − EMA(26) SMA(MACD, 9)
一般的なMACD EMA(12) − EMA(26) EMA(MACD, 9)

何が起きるか

シグナル線の計算が違えば、クロスするタイミングがずれます。SMAはEMAより反応が遅いため、MT5のMACDは他ツールよりクロスが遅れて出ることがあります。

「MT5とスマホアプリでMACDのクロス位置が違う」「解説記事の通りにならない」という状態の原因は、多くの場合ここにあります。設定ミスではありません。

どう扱うか

  1. MT5の中だけで完結させる — 他ツールと比べないなら実害はありません
  2. EMAシグナル版のカスタムインジケーターを入れる — 配布されているものを使う
  3. 自分で書く — シグナル線を iMA で EMA として計算し直す

どれを選ぶかは、他のツールと突き合わせる必要があるかどうかで決まります。MT5だけで判断するなら、標準のままで問題ありません。

MT5でMACDを表示する手順

  1. メニューの「挿入」→「インディケータ」→「オシレーター」→「MACD」を選ぶ
  2. 「短期EMA期間」「長期EMA期間」「シグナル期間」を確認する(初期値は12・26・9)
  3. 「適用価格」を選ぶ(通常は Close price)
  4. 「OK」を押す

MACDはサブウィンドウに表示されます。チャート本体には重ならないため、ローソク足の表示領域は狭くなります。

追加したのに表示されない場合は、MT5でインジケーターの初期値を変更しても反映されない理由を確認してください。再コンパイルしても既存チャートの設定は引き継がれるため、値を変えたつもりが変わっていないことがあります。

基本的な読み方

状態 一般的な解釈
MACDがゼロラインより上 短期EMAが長期EMAより上=上向きの状態
MACDがゼロラインより下 短期EMAが長期EMAより下=下向きの状態
MACDがシグナルを上抜け 勢いが上向きに変わった可能性
MACDがシグナルを下抜け 勢いが下向きに変わった可能性
価格とMACDの高値・安値が逆行 ダイバージェンス。勢いの減衰とされる

いずれも一般にそう解釈されるという話であり、そうなることが決まっているわけではありません。特にレンジ相場ではゼロライン付近でクロスを繰り返し、判断材料になりません。

MACDの弱点

  • 遅行する — EMAの差を、さらに平均した指標なので、価格より遅れる
  • レンジに弱い — ゼロライン付近で細かくクロスし、ダマシが増える
  • 絶対値を比較できない — 価格水準が違う銘柄同士でMACDの数値を比べても意味がない

3つ目は見落とされがちです。MACDは価格の差をそのまま表すため、ドル円とゴールドのMACDの値を並べても比較になりません。

MQL5からMACDを使う場合

EAやインジケーターから値を取る場合は iMACD を使います。

int handle = iMACD(_Symbol, _Period, 12, 26, 9, PRICE_CLOSE);

double main[], signal[];
CopyBuffer(handle, 0, 0, 100, main);    // 0 = MAIN_LINE
CopyBuffer(handle, 1, 0, 100, signal);  // 1 = SIGNAL_LINE

引数は銘柄・時間足・短期EMA期間・長期EMA期間・シグナル期間・適用価格の順です。バッファ番号は公式ドキュメントに「0 - MAIN_LINE, 1 - SIGNAL_LINE」と明記されています(MQL5リファレンス iMACD)。

この signal も、前述のとおりSMAで計算された値です。EMAのシグナルが必要なら、main を自分で iMA に通し直す必要があります。

値が取得できない場合は、MQL5でiCustom・CopyBufferの値が取れない原因で切り分け手順をまとめています。

まとめ

  1. MACDは短期EMAと長期EMAの差。シグナル線はそれを平均したもの
  2. MT5のシグナル線はSMA。一般的なMACD(EMA)とはクロス位置がずれる
  3. 他ツールと比べないなら、標準設定のままで問題ない
  4. レンジではクロスを繰り返すため、単独では判断材料にならない
  5. MQL5では iMACD、バッファは 0 が MAIN、1 が SIGNAL

MACDの土台になっているEMAそのものの設定は、MT5でEMAを設定する方法にまとめています。

本記事は指標の計算方法と操作手順を説明したものであり、特定の売買を推奨するものではありません。投資判断はご自身の責任で行ってください。テクニカル指標は相場の状態を可視化する道具であり、将来の値動きや取引の成果を保証するものではありません。