MT4の使い方

MT4カスタムインジケーターの作り方入門|最小サンプルで表示まで確認する手順

投資リスクについて

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

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

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

この記事では、MT4でカスタムインジケーターを作るときの最小構成を整理します。扱うのは「作成 → コンパイル → チャート適用」までで、売買ロジックやEAの完成コードには踏み込みません。サンプルは OnCalculate() を使うため、インジケーターとして確認します。

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

まず整理したい違い

種類主な役割よく使う入口
EA自動売買や条件実行を担うOnTick()
スクリプト1回だけ実行する処理を担うOnStart()
インジケーターチャート上に線や表示を描くOnCalculate()

この記事はインジケーターに絞ります。EAの発注処理やスクリプトの単発実行は扱いません。

MT4カスタムインジケーターとは

カスタムインジケーターは、MT4のチャート上に独自の線や表示を出すためのプログラムです。標準の移動平均やRSIのような考え方で、チャートに補助線を重ねたり、独自の計算結果を見える形にできます。

  • メタエディターでインジケーターを作成する
  • 最小コードを書いてコンパイルする
  • チャートに適用して表示を確認する
  • 表示されないときは別記事で切り分ける

作成フロー全体図

  1. メタエディターを開く
  2. インジケーターのテンプレートを選ぶ
  3. 最小コードを書く
  4. コンパイルする
  5. MT4のチャートへ適用する

最小サンプルコード

ここでは、チャート上に1本のラインを表示するだけの最小構成を示します。SetIndexStyleSetIndexBufferSetIndexLabelOnCalculate の役割だけを確認するためのサンプルです。

#property strict
#property indicator_chart_window
#property indicator_buffers 1

double LineBuffer[];

int OnInit()
{
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, clrDodgerBlue);
   SetIndexBuffer(0, LineBuffer);
   SetIndexLabel(0, "BasicLine");
   IndicatorShortName("MQL4 Indicator Basic");
   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[]
)
{
   if(rates_total <= 0)
      return(0);

   int start = prev_calculated > 0 ? prev_calculated - 1 : 0;
   for(int i = start; i < rates_total; i++)
      LineBuffer[i] = close[i];

   return(rates_total);
}

このコードは、終値を1本のラインとして描画するだけです。発注や条件分岐はありません。

メタエディターの起動とテンプレート選択

最初は MT4 からメタエディターを開き、インジケーターのテンプレートを選びます。保存先がインジケーター用フォルダになっているかも確認してください。

コンパイル手順

  • F7 でコンパイルする
  • エラーが 0 件か確認する
  • ナビゲーターに対象名が出るか確認する

チャートへの適用

コンパイルできたら、MT4 のナビゲーターから対象インジケーターをチャートへドラッグします。表示が追いつかないときや初回データが足りないときは、MT4のヒストリカルデータを確認・補充する手順MT4のアップデートが終わらないときの確認手順 を合わせて確認します。

各関数の役割の概要

  • OnInit は、初期設定を行う入口です
  • OnCalculate は、値を計算して描画する入口です
  • SetIndexBuffer は、描画用の配列をバッファとして使えるようにする処理です
  • SetIndexStyle は、線の種類や色を決める処理です
  • SetIndexLabel は、表示名を付ける処理です

個別関数の詳細は、子記事で補完していく前提です。

FAQ

Q. EAとインジケーターの違いは何ですか?
A. EA は主に自動売買や条件実行に使い、インジケーターはチャート表示に使います。この記事はインジケーターの作成入口だけを扱います。

Q. SetIndexBuffer に値を入れても線が見えません。
A. バッファの設定、indicator_chart_window の指定、チャートの表示状態を確認してください。表示されない場合は MT4インジケーターが表示されない原因と確認手順 を確認する流れになります。

Q. 自作インジケーターは売買判断に使えますか?
A. この記事では売買判断は扱いません。まずは描画ができるところまでを確認してください。

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

まとめ

  • インジケーターは OnCalculate() を入口にする
  • SetIndexStyleSetIndexBufferSetIndexLabel で表示を組み立てる
  • 最初は売買ロジックを入れず、描画だけ確認する
  • 表示されないときは、履歴データや更新状態も確認する

このHubを入口にして、必要なら個別関数の記事へ分けて確認していくと整理しやすくなります。サンプルコードは学習用・検証用です。動作を試すときは、デモ環境または検証環境で確認してください。

関連

関連記事

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