MT5でEMAを設定する方法|SMAとの違いと期間の決め方

EMA(指数平滑移動平均)は、直近の価格に大きな重みを置いて平均する移動平均線です。同じ期間のSMA(単純移動平均)より値動きへの反応が速くなります。

MT5では標準の「Moving Average」を挿入し、種別を Exponential に変えるだけで表示できます。EMA専用のインジケーターを探す必要はありません。

この記事では、SMAとの違いを計算式で確認したうえで、MT5での設定手順、期間の決め方、MQL5から扱う場合の書き方までを扱います。

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

EMAとSMAの違いは「直近の価格の重み」

SMAは対象期間の価格を単純に平均します。20期間なら、20本前の価格も1本前の価格も同じ重みです。

EMAは直近の価格ほど重く扱います。計算は前回のEMAに今回の価格を一定の割合で混ぜる形で、割合(平滑化係数)は期間から決まります。

結果として、同じ期間でも次の違いが出ます。

  SMA EMA
直近の価格の扱い 他と同じ重み 重く扱う
値動きへの反応 遅い 速い
ダマシ 少ない 増えやすい
期間外れの価格 対象から外れた瞬間に影響が消える 影響が徐々に薄れる

どちらが優れているという関係ではありません。反応を速くすればダマシが増え、遅くすれば転換への追随が遅れます。速さと安定のどちらを取るかという選択です。

MT5でEMAを表示する手順

  1. MT5のメニューから「挿入」→「インディケータ」→「トレンド」→「Moving Average」を選ぶ
  2. 「期間」に使いたい本数を入れる
  3. 「種別」を「Exponential」に変更する(初期値は Simple=SMA)
  4. 「適用価格」を選ぶ(通常は Close price)
  5. 「OK」を押す

3を変えないとSMAのままです。「EMAを入れたつもりが反応が鈍い」という時は、まずここを確認してください。パラメータ画面は、チャート上の線をダブルクリックすれば開き直せます。

「表示移動」は基本的に0のまま

Moving Average には「表示移動」という項目があります。これは線を左右にずらす設定で、初期値の0から変える必要は通常ありません。ずらした線はその時点では存在しない情報を表示しているため、過去チャートを見た時に実際より早く反応しているように見えます。

期間に「最適値」は無い

EMAの期間について「最適値」を示す記事がありますが、銘柄・時間足・相場付きで変わるため、一つの正解はありません。

実際によく使われるのは、20・50・75・200あたりです。これらが使われる理由は統計的な優位性が証明されているからではなく、多くの参加者が見ているために意識されやすいという点にあります。

自分で決めるなら、期間を変えながら次の2つを見るのが早いです。

  1. 線が価格に張り付きすぎていないか(短すぎる)
  2. 転換してから線が向きを変えるまでが遅すぎないか(長すぎる)

数字を動かした結果は記録しておいてください。記録せずに感覚で変え続けると、後から「どの設定で見ていたのか」が分からなくなります。

EMAを複数本並べる使い方

EMAは1本で使うより、期間の違う複数本を並べた方が状態を読みやすくなります。短期の線が長期の線より上にあり、かつ線の間隔が開いていれば、その方向に押されている状態だと判断できます。

この考え方を徹底したものがGMMA(複合型移動平均線)で、短期6本と長期6本の計12本のEMAを同時に表示します。

私が配布している RL_GMMA は、短期に3・5・8・10・12・15、長期に30・35・40・45・50・60 のEMAを使っています。実装では MQL5 の iMA に MODE_EMA を渡して12本分のハンドルを作っているだけで、特別なことはしていません。

12本も並べると、レンジでは線が絡み合って目視では判断しにくくなります。そこで長期グループの広がりをATRで割った数値を画面に出すようにしました。導入手順と配布ファイルはMT5用GMMAインジケーターを無料配布にまとめています。

MQL5からEMAを使う場合

自分でインジケーターやEAを書く場合、EMAは iMA で取得します。

int handle = iMA(_Symbol, _Period, 20, 0, MODE_EMA, PRICE_CLOSE);

double buf[];
if(CopyBuffer(handle, 0, 0, 100, buf) <= 0)
   return(0);

引数は左から銘柄・時間足・期間・表示移動・種別・適用価格です。MODE_EMA を MODE_SMA に変えればSMAになります。

iMA が返すのはハンドル(識別子)であって値ではありません。値は必ず CopyBuffer で取り出します。ここを混同すると値が取れず、原因が分かりにくいエラーになります。取得できない場合の切り分けはMQL5でiCustom・CopyBufferの値が取れない原因にまとめました。

EMAの限界

EMAは過去の価格から計算される指標です。将来の価格を予測するものではなく、いま起きている値動きを均して見やすくする道具です。

  • レンジ相場では上下に何度も抜けるため、線の位置だけでは判断できない
  • 急変時は、線が追いつく前に値が動き終わっていることがある
  • 期間を後から変えると、過去チャート上では都合よく見える(最適化のしすぎ)

3つ目は特に注意が必要です。過去チャートに合わせて期間を選ぶと、その期間の値動きにだけ合った設定になります。

まとめ

  1. EMAは直近の価格を重く扱う移動平均。同じ期間ならSMAより反応が速い
  2. MT5では「Moving Average」の種別を Exponentialに変えるだけ
  3. 期間に最適値は無い。よく使われる値は「多くの人が見ている」ことが理由
  4. 複数本を並べると状態を読みやすい。突き詰めた形がGMMA
  5. MQL5では iMA でハンドルを作り、CopyBuffer で値を取る

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