1.初めてのインディケーター

インディケーター

最も簡単なインディケーターを作ってみよう。

今回は、MQL5を使って初めてのインディケーターを作成してみます。この記事では、最も基本的なインディケーターを作成する方法をステップバイステップで解説します。プログラミング初心者の方でも理解できるように、丁寧に説明していきますので、ぜひ最後まで読んでみてください!


1. インディケーターとは?

インディケーターとは、チャート上に価格などのテクニカルデータを視覚的に表示するツールです。トレーダーが市場の動きを分析しやすくするために使われます。

今回は、チャート上に「安値(Low)」を赤いラインとして表示する、とてもシンプルなインディケーターを作成します。このインディケーターを作ることで、MQL5の基本的な仕組みを学ぶことができます。


2. 完成コード

以下が今回作成するインディケーターの完成コードです。

mql5 コピー

#property indicator_chart_window // チャートウィンドウに描画
#property indicator_buffers 1 // バッファ数を1つ設定
#property indicator_color1 clrRed // ラインの色を赤に設定

double Low_Buffer[]; // 安値を格納するバッファ

// 初期化関数
int OnInit()
{
// バッファをインディケーターに登録
SetIndexBuffer(0, Low_Buffer);

// 描画タイプを線に設定
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE);

// インディケーターの名前を設定
IndicatorSetString(INDICATOR_SHORTNAME, "Low 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 : 0;

// 安値をバッファにコピー
for (int i = start; i < rates_total; i++)
{
Low_Buffer[i] = low[i]; // 安値をバッファに格納
}

return(rates_total); // 計算されたバーの数を返す
}

3. コードの解説

(1) プロパティ設定

mql5コピー
#property indicator_chart_window // チャートウィンドウに描画
#property indicator_buffers 1 // バッファ数を1つ設定
#property indicator_color1 clrRed // ラインの色を赤に設定
  • indicator_chart_window: インディケーターをチャートウィンドウに表示します。
  • indicator_buffers: データを格納するバッファの数を指定します(今回は1つ)。
  • indicator_color1: ラインの色を赤(clrRed)に設定します。

(2) バッファの定義

mql5コピー
double Low_Buffer[]; // 安値を格納するバッファ
  • バッファは、インディケーターのデータを格納する配列です。この配列に安値データを保存します。

(3) 初期化関数

mql5コピー
int OnInit()
{
SetIndexBuffer(0, Low_Buffer); // バッファをインディケーターに登録
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); // 描画タイプを線に設定
IndicatorSetString(INDICATOR_SHORTNAME, "Low Line"); // インディケーター名を設定
return(INIT_SUCCEEDED);
}
  • SetIndexBuffer: バッファをインディケーターに登録します。
  • PlotIndexSetInteger: ラインの描画タイプを設定します(今回は線 DRAW_LINE)。
  • IndicatorSetString: インディケーターの名前を設定します(チャート上で表示される名前)。

(4) 計算関数

mql5コピー
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 : 0; // 計算開始位置
for (int i = start; i < rates_total; i++)
{
Low_Buffer[i] = low[i]; // 安値をバッファに格納
}
return(rates_total); // 計算されたバーの数を返す
}
  • **OnCalculate**は、インディケーターのコア部分です。ここでチャートデータを処理します。
  • 安値データ(low[i])をLow_Bufferにコピーし、赤いラインとして表示します。

4. インディケーターの動作確認

(1) コードをMetaEditorに貼り付ける

  1. MetaTrader 5を起動し、MetaEditorを開きます。
  2. 新しいインディケーターを作成し、上記のコードを貼り付けます。

(2) コンパイル

  • MetaEditorの「コンパイル」ボタンをクリックして、エラーがないか確認します。

(3) チャートに適用

  1. MetaTrader 5のチャートを開きます。
  2. ナビゲーターウィンドウから作成したインディケーターをドラッグ&ドロップします。

5. インディケーターの結果

チャート上に赤いラインが表示されます。このラインは、各バーの安値を示しています。これが、最も簡単なカスタムインディケーターの例です。


6. 次のステップ

今回のインディケーターは非常にシンプルですが、以下のような改良に挑戦してみると、さらに学びが深まります:

  • ラインの太さや色を変更する。
  • 高値や終値を表示するインディケーターを作る。
  • 複数のラインを表示するインディケーターを作る。

まとめ

今回の記事では、MQL5を使った最も簡単なインディケーターの作成方法を解説しました。このプログラムを作成することで、インディケーターの基本的な仕組みやコードの流れを理解できたのではないでしょうか?

最初はシンプルなものから始めて、少しずつ複雑なものにチャレンジしていきましょう!分からないことがあれば、ぜひコメントで質問してください。それでは、良いプログラミングライフを!😊

コメント

タイトルとURLをコピーしました