MT4の使い方

iMAとは|MQL4で移動平均を取得する基本とサンプルコード

投資リスクについて

投資は自己責任であり、過去の成績は将来の利益を保証しません。本記事は投資助言ではありません。売買の判断は各自の責任において行ってください。

本記事は投資助言ではありません。公式ページで最新条件を確認してください。

はじめに:このサンプルの前提

この記事では、MQL4 の iMA() を使って移動平均の値を取得する基本を整理します。扱うのは「値を取り出して確認する」ところまでで、売買ロジックやEAの完成コードには踏み込みません。サンプルは OnTick() を使うため、学習用EAとして確認しますが、発注処理や売買条件は含めません。

サンプルコードは学習用・検証用です。実運用や利益を保証するものではありません。売買タイミング・銘柄・ロット数を推奨するものでもありません。実口座で使用する前提ではなく、デモ環境または検証環境で確認してください。MT4のビルドやブローカー環境により、表示や動作が異なる場合があります。

iMAとは

iMA() は、MQL4で移動平均(Moving Average)の値を取得するための組み込み関数です。チャートに線を描く関数ではなく、値を返すだけです。

  • 現在や過去の足の移動平均の値を取得する
  • Print()Comment() で確認する
  • 検証用スクリプトや自作ロジックの材料にする

iMAの基本構文

double iMA(
   string symbol,
   int    timeframe,
   int    ma_period,
   int    ma_shift,
   int    ma_method,
   int    applied_price,
   int    shift
);
引数意味
symbol通貨ペア。NULL で現在の通貨ペアNULL, "USDJPY"
timeframe時間足。0 で現在の時間足0, PERIOD_H1
ma_period平均する本数(期間)20, 75
ma_shift移動平均線そのものをずらす量0
ma_method平均化の方法MODE_SMA, MODE_EMA
applied_priceどの価格を使うかPRICE_CLOSE
shiftどの足の値を読むか0, 1

最小サンプルコード

ここでは、現在のチャートで期間20の単純移動平均を取得し、値を確認するだけのサンプルを示します。

#property strict

void OnTick()
{
   double ma = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
   Print("MA(20) = ", ma);
   Comment("MA(20) = ", ma);
}

このコードは「値を取得して表示するだけ」のものです。エントリー条件や発注は含めていません。

サンプルコードの見方

  • iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0) は、現在のチャート基準の移動平均を読む指定です。
  • 最後の引数 0shift で、現在形成中の足を指します。
  • OnTick() は価格更新ごとに動くため、ログが多くなる点に注意してください。

Comment() はチャート左上に表示、Print() はターミナルの「エキスパート」タブに出力されます。

コンパイル前に確認すること

  • このサンプルは OnTick() を使うため、MQL4 → Experts に保存しているか
  • メタエディターで開き、コンパイル(F7)してエラーが 0 件になっているか
  • 引数の数と順番が構文どおりか
  • セミコロンや関数名のスペルミスがないか

iMAの値がうまく取得できないときの確認点

  • ヒストリカルデータが足りていないと、正しい値が出ないことがあります。データ量が不足している場合は MT4のヒストリカルデータを確認・補充する手順 を確認してください。
  • 通貨ペアや時間足の指定が意図と違っていないかを確認する
  • shift がずれていないかを確認する
  • 引数の順番が入れ替わっていないかを確認する

取得した値を検証で使いたい場合は、MT4でEAをバックテストする手順 も参考になります。

iMAを使うときに誤解しやすいこと

  • ma_shiftshift は別物です。
  • iMA() はチャートに線を描く関数ではありません。
  • shift = 0 は現在形成中の足を指します。
  • ma_methodapplied_price は定数で指定するのが分かりやすいです。

FAQ

Q. iMAは移動平均線そのものを表示する関数ですか?
A. いいえ。iMA() は移動平均の値を返す関数です。

Q. iMAの値だけで売買判断してもよいですか?
A. この記事は基礎理解が目的です。売買タイミング・銘柄・ロット数を推奨するものではありません。

Q. periodやshiftの違いは何ですか?
A. ma_period は平均する本数、shift はどの足の値を読むかです。

Q. コンパイルできない場合はどこを見ればよいですか?
A. メタエディターのエラー表示を確認し、引数の数・順番、セミコロンの抜けを見直してください。MT4のビルドやブローカー環境により、表示や動作が異なる場合があります。

まとめ

  • iMA() は値を返す関数で、チャートに線を描くものではない
  • 引数は symbol / timeframe / ma_period / ma_shift / ma_method / applied_price / shift の順
  • ma_shiftshift は別物
  • 値が出ないときは、データ量・引数の順番・shift の指定を確認する

まずは値を取得して Print()Comment() で確認するところから始めると、iMA() の挙動を理解しやすくなります。サンプルコードは学習用・検証用です。

関連

関連記事

MT4の使い方 MT4にログインできない原因と対処法|口座番号・サーバー・パスワードの確認手順 MT4でログインできないときに確認すべき7つの原因と対処手順を解説します。口座番号の入力ミス、パスワード種別の違い、サーバー名の間違い、デモ口座とリアル口座の混同、インターネット接続などのよくある原因を順番に切り分けて解決できるよう整理しました。 MT4の使い方 MT4がアップデート待機中になる原因と解決法|チャートが動かないときの確認手順 MT4のチャートに「アップデート待機中」と表示されて動かないときの原因6パターンと対処手順を解説します。通貨ペアの気配値設定、銘柄サフィックスの違い、最大バー数、ヒストリカルデータ不足などを段階的に確認し、原因を切り分けて解決できるよう整理しました。 MT4の使い方 MT4の回線不通・接続エラーの原因と対処法|接続状態の確認手順 MT4の右下に「回線不通」と表示されてチャートが止まるときの原因7パターンと確認手順を解説します。インターネット回線、サーバー設定、ファイアウォール、VPS接続、ブローカー側の障害などをステップごとに切り分けて解決できるよう整理しました。