SetLevelStyle関数、SetLevelValue関数(MT4インジケータ)|サブウィンドウに水平線を表示する方法

執筆者

佐川直弘(株式会社トリロジー取締役)

MetaTrader 4(MT4)のMQL4プログラムでカスタムインディケータを作成する際には、サブウィンドウに水平線を表示することがよくあります。この記事では、SetLevelStyle()関数およびSetLevelValue()関数を使用して、サブウィンドウに水平線を表示する方法について、初心者にもわかりやすく解説します。

水平線の表示

水平線をサブウィンドウに表示することで、特定の価格レベルや指標レベルを視覚的に強調することができます。これは、トレードの判断をサポートするために非常に有用です。

SetLevelStyle()関数の使用方法

SetLevelStyle()関数を使用すると、水平線のスタイルを設定することができます。この関数の仕様は以下の通りです。

関数仕様
void SetLevelStyle(int draw_style, int line_width, color clr=CLR_NONE)

引数の説明

draw_style
線種
line_width
線幅(1~5)
clr
線色(未指定の場合はCLR_NONEで変更なし)

この関数を使用することで、水平線の線種、線幅、および色を一括して設定できます。

SetLevelValue()関数の使用方法

SetLevelValue()関数を使用すると、水平線の値を設定することができます。この関数の仕様は以下の通りです。

関数仕様
void SetLevelValue(int level, double value)

引数の説明

level
水平線番号(0~31)
value

この関数を使用することで、最大32本の水平線をサブウィンドウに表示することができます。

以下に、SetLevelStyle()関数およびSetLevelValue()関数を使用してサブウィンドウに水平線を表示するサンプルコードを示します。

サンプルコード
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
//—- インディケータバッファ
double ind_buffer1[];
// カスタムインディケータの初期化関数
int init() {
    //—- インディケータバッファのマッピング
    SetIndexBuffer(0, ind_buffer1);
    //—- レベルのスタイルと値を設定
    SetLevelStyle(STYLE_SOLID, 2, Red);
    SetLevelValue(0, 120.00);
    SetLevelValue(1, 121.00); // この行は削除しました
    //—- データウィンドウおよびインディケータサブウィンドウラベルの名前
    IndicatorShortName(“Custom Indicator with Levels");
    return (0);
}
// カスタムインディケータのイテレーション関数
int start() {
    int limit = Bars – IndicatorCounted();
    for (int i = 0; i < limit; i++) {
        ind_buffer1[i] = iClose(NULL, 0, i); // サンプルデータの代わりに終値を設定
    }
    return (0);
}

このサンプルコードでは、以下のことを行っています。

  1. `#property`ディレクティブを使って、インディケータの設定を行います。
  2. グローバル変数としてインディケータ配列(`ind_buffer1`)を宣言します。
  3. `init()`関数内で、`SetIndexBuffer()`関数を使って配列の領域を確保します。
  4. `SetLevelStyle()`関数を使って、水平線のスタイルを設定します。
  5. `SetLevelValue()`関数を使って、水平線の値を設定します。
  6. `IndicatorShortName()`関数を使って、インディケータの短縮名称を設定します。
  7. `start()`関数内で、サンプルデータをインディケータ配列に設定します。

まとめ

サブウィンドウに水平線を表示することで、特定の価格レベルや指標レベルを視覚的に強調することができます。MQL4のSetLevelStyle()関数およびSetLevelValue()関数を使用することで、簡単に水平線を設定し、カスタムインディケータをより使いやすくすることができます。初心者の方も、この基本的な使い方を理解して、実際のトレードに応用してみてください。

MQL4

Posted by 佐川直弘