テクニカル指標の中で、一番最初に覚えるのは、
「移動平均線(Moving Average)」ではないでしょうか。
トレンドを把握しやすいテクニカル指標で、世界中のトレーダーが利用しています。
MQL4では「iMA関数」を使えば、移動平均線の価格を取得できます。
今回は、このiMA関数の使い方をご紹介します。
iMA関数の書式
double iMA(
string symbol, // 通貨ペア
int timeframe, // 時間軸
int ma_period, // 期間
int ma_shift, // 表示移動
int ma_method, // 移動平均の種別
int applied_price, // 適用価格
int shift // ローソク足の位置
);

iMA関数の引数
double iMA( string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift );
引数名 | 引数和名 | 設定内容 |
---|---|---|
string symbol | 通貨ペア | USDJPY、EURJPYなど。 現在の通貨ペアは「NULL」 |
int timeframe | 時間軸 | PERIOD_CURRENT(0) PERIOD_M1(1) PERIOD_M5(5) PERIOD_M15(15) PERIOD_M30(30) PERIOD_H1(60) PERIOD_H4(240) PERIOD_D1(1440) |
int ma_period | 期間 | 20日移動平均線だと「20」 50日移動平均線だと「50」 |
int ma_shift | 表示移動 | 左右にシフト表示する場合、ローソク足の数を指定。 シフトしない「0」 |
int ma_method | 移動平均の種別 | MODE_SMA(単純移動平均線) MODE_EMA(指数移動平均線) MODE_SMMA(平滑移動平均線) MODE_LWMA(加重移動平均線) |
int applied_price | 適用価格 | PRICE_CLOSE(0)終値 PRICE_OPEN(1)始値 PRICE_HIGH(2)高値 PRICE_LOW(3)安値 |
int shift | ローソク足の位置 | 現在のローソク足「0」 1本前のローソク足「1」 2本前のローソク足「2」 など右から何本目か。 |
iMA関数の使い方
例えば「20日移動平均線」の価格を取得する場合。
引数 | 設定値 | 設定内容 |
---|---|---|
symbol | NULL | 現在の通貨ペア |
timeframe | 0 | 現在の時間軸 |
ma_period | 20 | 20日移動平均線 |
ma_shift | 0 | 表示移動なし |
ma_method | MODE_SMA | 単純移動平均線 |
applied_price | PRICE_CLOSE | 終値 |
shift | 0 | 現在のローソク足 |
コード例)
// 20日移動平均線
double sma20 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
移動平均線のゴールデンクロス


「ゴールデンクロス」したら、エントリーしよう。
こんな使い方をする場面も多いかと思います。
例えば「20MA」と「50MA」が「ゴールデンクロス」したらエントリーする場合。
// 20日移動平均線
double sma20 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0); //現在足
double sma20_1 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 1); //1本前足
// 50日移動平均線
double sma50 = iMA(NULL, 0, 50, 0, MODE_SMA, PRICE_CLOSE, 0); //現在足
double sma50_1 = iMA(NULL, 0, 50, 0, MODE_SMA, PRICE_CLOSE, 1); //1本前足
// ゴールデンクロス判定
if( sma20_1 < sma50_1 && sma20 >= sma50){
// ここでエントリー処理
}
ポイントは、2つの判定条件にあります。
「1本前」のローソク足では、まだクロス「していない」。
「現在」のローソク足では、クロス「している」。
この2つの条件によって、今まさに「ゴールデンクロス」したことが分かります。
EA作成ソフトが無料で付属してるForex Tester移動平均線とローソク足


「25日移動平均線」をローソク足が上抜けたらエントリーしよう。
こんな場面もあるかと思います。
コードにするとこんな感じになります。
// 25日移動平均線
double sma25 = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, 0); //現在足
double sma25_1 = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, 1); //1本前
// ASK上抜け判定
if( sma25_1 > ASK && sma25 <= ASK ){
// ここでエントリー処理
}
移動平均線だけで勝ち続けている人もいるようなので、
とことん追求してみると面白いかも知れませんね。