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)は、現在のチャート基準の移動平均を読む指定です。- 最後の引数
0がshiftで、現在形成中の足を指します。 OnTick()は価格更新ごとに動くため、ログが多くなる点に注意してください。
Comment() はチャート左上に表示、Print() はターミナルの「エキスパート」タブに出力されます。
コンパイル前に確認すること
- このサンプルは
OnTick()を使うため、MQL4 → Experts に保存しているか - メタエディターで開き、コンパイル(F7)してエラーが 0 件になっているか
- 引数の数と順番が構文どおりか
- セミコロンや関数名のスペルミスがないか
iMAの値がうまく取得できないときの確認点
- ヒストリカルデータが足りていないと、正しい値が出ないことがあります。データ量が不足している場合は MT4のヒストリカルデータを確認・補充する手順 を確認してください。
- 通貨ペアや時間足の指定が意図と違っていないかを確認する
shiftがずれていないかを確認する- 引数の順番が入れ替わっていないかを確認する
取得した値を検証で使いたい場合は、MT4でEAをバックテストする手順 も参考になります。
iMAを使うときに誤解しやすいこと
ma_shiftとshiftは別物です。iMA()はチャートに線を描く関数ではありません。shift = 0は現在形成中の足を指します。ma_methodやapplied_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_shiftとshiftは別物- 値が出ないときは、データ量・引数の順番・shift の指定を確認する
まずは値を取得して Print() や Comment() で確認するところから始めると、iMA() の挙動を理解しやすくなります。サンプルコードは学習用・検証用です。