MetaTrader 5(MT5)は、トレードや分析を行うための非常に強力なプラットフォームです。その中でも「移動平均線」は、多くのトレーダーが使用する基本的なテクニカル指標の一つです。
先ずは、MT5で移動平均線を描画するカスタムインディケーターを作成してみましょう。
インディケーターの説明
これから作成するカスタムインディケーターは、移動平均線(MA: Moving Average)をチャート上に描画するものです。移動平均線は、指定された期間(例えば14日間)の終値の平均値を過去から描画して、価格トレンドを視覚化するために使用されます。
平均化する期間を変えることで値動きの見方の目的が変わってきます。
- 短期移動平均線(期間14など):価格の短期的な動きを捉える。
- 長期移動平均線(期間50や100など):価格の長期的なトレンドを見る。
今回は期間を14にしていますが、数値を変えるだけで様々な期間の移動平均線を描くことが出来ます。
2. コード全体
以下が今回作成したコードです。このコードは、14期間の移動平均線を計算しでチャート上に描画します。
mql5コピー#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrBlue
input int ma_period = 14; // 移動平均期間
double MA_Buffer[]; // バッファ
int OnInit()
{
SetIndexBuffer(0, MA_Buffer); // バッファ設定
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); // 線描画設定
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
const double &open[], const double &high[], const double &low[],
const double &close[], const long &tick_volume[], const long &volume[], const int &spread[])
{
int start = prev_calculated > 0 ? prev_calculated - 1 : ma_period; // 計算開始位置
for (int i = start; i < rates_total; i++)
{
double sum = 0.0;
for (int j = 0; j < ma_period && i - j >= 0; j++) sum += close[i - j];
MA_Buffer[i] = sum / ma_period; // バッファに移動平均を格納
}
return(rates_total);
}
3. コードのポイント解説
(1) インディケーターの基本設定
mql5コピー#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrBlue
indicator_chart_window:インディケーターをチャート上に描画することを指定します。indicator_buffers 1:このインディケーターが使用する「バッファ(データ保存領域)」の数を1つに設定しています。今回は移動平均線1本なのでバッファは1つです。indicator_color1 clrBlue:移動平均線の色を青(clrBlue)に設定しています。
(2) 移動平均期間の設定
mql5コピーinput int ma_period = 14; // 移動平均期間
input:ユーザーが設定を変更できるようにするキーワードです。ma_period:移動平均線の計算に使用する期間を指定します(デフォルトは14)。- チャート上でこの値を自由に変更することで、短期・長期の移動平均線を切り替えることができます。
(3) バッファの設定
mql5コピーdouble MA_Buffer[]; // バッファ
SetIndexBuffer(0, MA_Buffer); // バッファ設定
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); // 線描画設定
MA_Buffer[]:移動平均値を保存するための配列(バッファ)です。SetIndexBuffer:MA_Bufferを描画用のバッファとして登録します。PlotIndexSetInteger:バッファの値を「線(DRAW_LINE)」として描画するように設定します。
(4) 移動平均線の計算ロジック
mql5コピーint start = prev_calculated > 0 ? prev_calculated - 1 : ma_period; // 計算開始位置
for (int i = start; i < rates_total; i++)
{
double sum = 0.0;
for (int j = 0; j < ma_period && i - j >= 0; j++) sum += close[i - j];
MA_Buffer[i] = sum / ma_period; // バッファに移動平均を格納
}
start:計算開始位置を設定します。- インディケーターは、過去の計算済みデータを無駄に再計算しないように、
prev_calculatedを使います。 - 初回計算時は
ma_periodからスタートします(移動平均を計算するには最低でもma_period本のデータが必要なため)。
- インディケーターは、過去の計算済みデータを無駄に再計算しないように、
- 移動平均の計算:
- 各バー(ローソク足)に対して、指定された期間(
ma_period)分の終値を合計し、その平均を計算します。 - 計算結果を
MA_Bufferに格納します。
- 各バー(ローソク足)に対して、指定された期間(
4. このインディケーターの使い方
- コードをMetaEditorに貼り付ける
- MetaTrader 5のMetaEditorを開き、上記のコードを新しいファイルに貼り付けます。
- 保存後、コンパイルしてください(エラーがないことを確認)。
- インディケーターをチャートに適用する
- MetaTrader 5のナビゲータウィンドウで、作成したインディケーターを見つけてチャートにドラッグ&ドロップします。
- 移動平均期間を調整する
- インディケーターの設定画面で「移動平均期間」を変更することで、短期・長期の移動平均線を切り替えることができます。
5. 実際にチャートに表示される結果
このインディケーターを適用すると、指定した移動平均期間に基づいて、青い移動平均線がチャート上に描画されます。
- 短期移動平均線(例: 14期間):価格に敏感に反応します。
6. カスタマイズのアイデア
このインディケーターをさらに発展させることも可能です。例えば:
- 複数の移動平均線を描画する(短期・長期両方を表示)。
- 移動平均の種類を変更する(単純移動平均(SMA)から指数移動平均(EMA)に変更)。
- 売買シグナルを追加する(短期線と長期線のクロスを検出)。
7. まとめ
今回作成したカスタムインディケーターは、移動平均線を簡単に描画するための基本的なものです。移動平均線は、トレンドの方向性を確認したり、売買タイミングを判断するために役立つツールです。このコードをベースに、自分だけのオリジナルインディケーターを作成してみてください!
サンプルコードをダウンロード
この記事で紹介したコードは、以下のリンクからダウンロードできます: (※ここにダウンロードリンクを挿入)


コメント