SetIndexEmptyValue関数|MT4インディケータの線を非表示にする方法

執筆者

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

MetaTrader 4(MT4)のMQL4プログラムでカスタムインディケータを作成する際には、特定の条件下でインディケータ線を非表示にすることが重要です。この記事では、SetIndexEmptyValue()関数を使用してインディケータ線を非表示にする方法について、初心者にもわかりやすく解説します。

インディケータ線の非表示とは?

インディケータ線の非表示は、特定の値が設定された箇所を描画しないようにすることを指します。これにより、インディケータの値が無効である部分や、特定の条件を満たさない部分を表示から除外することができます。

SetIndexEmptyValue()関数の使用方法

SetIndexEmptyValue()関数を使用すると、インディケータ線の特定の値を非表示にすることができます。この関数の仕様は以下の通りです。

関数仕様
void SetIndexEmptyValue(int index, double value)

引数の説明

index
インディケータ配列インデックス番号(0~7)
value
非表示用の数値

この関数は、指定されたインデックス番号のインディケータ配列に対して、指定された値を非表示用の数値として設定します。この値が設定された箇所は描画されなくなります。

以下に、SetIndexEmptyValue()関数を使用してインディケータ線を非表示にするサンプルコードを示します。

サンプルコード
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//—- インディケータパラメータ
extern int SignalSMA = 9; // シグナルSMAの期間
//—- インディケータバッファ
double ind_buffer1[]; // インディケータのバッファ
// カスタムインディケータの初期化関数
int init() {
    //—- インディケータバッファの設定
    IndicatorBuffers(1);
    //—- 描画設定
    SetIndexStyle(0, DRAW_LINE);
    SetIndexEmptyValue(0, 0.0); // 値が0.0の場合に非表示にする
    IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 2);
    //—- インディケータバッファのマッピング
    SetIndexBuffer(0, ind_buffer1);
    //—- データウィンドウおよびインディケータサブウィンドウラベルの名前
    IndicatorShortName(“Custom Indicator with Empty Value");
    return (0);
}

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

  1. `#property`ディレクティブを使って、インディケータの設定を行います。
  2. 外部パラメータ(`SignalSMA`)を宣言します
  3. グローバル変数としてインディケータ配列(`ind_buffer1`)を宣言します。
  4. `init()`関数内で、`IndicatorBuffers()`関数を使って配列の個数を設定します。
  5. `SetIndexStyle()`関数を使って、インディケータ線のスタイルを設定します。
  6. `SetIndexEmptyValue()`関数を使って、値が0.0の場合に非表示にする設定を行います。
  7. `SetIndexBuffer()`関数を使って、配列の領域を確保します。
  8. `IndicatorShortName()`関数を使って、インディケータの短縮名称を設定します。

まとめ

インディケータ線を適切に非表示にすることで、チャート上の視認性が向上し、トレードの精度も向上します。MQL4のSetIndexEmptyValue()関数を使用することで、簡単にインディケータ線を非表示にし、カスタムインディケータをより使いやすくすることができます。初心者の方も、この基本的な使い方を理解して、実際のトレードに応用してみてください。

MQL4

Posted by 佐川直弘