IndicatorDigits関数|MT4インジケータの配列の有効桁数を設定する方法

執筆者

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

MetaTrader 4(MT4)のMQL4プログラムでカスタムインディケータを作成する際には、インディケータ配列の各要素の有効桁数を適切に設定することが重要です。この記事では、IndicatorDigits()関数を使用してインディケータ配列の有効桁数を設定する方法について、初心者にもわかりやすく解説します。

インディケータ配列の有効桁数とは?

インディケータ配列の有効桁数は、インディケータ配列の各要素が保持する小数点以下の桁数を指します。通常、インディケータ配列の各要素の有効桁数はチャートの通貨ペアの価格と同じ有効桁数が適用されますが、計算等でそれ以上の有効桁数が必要な場合は変更しておく必要があります。

IndicatorDigits()関数の使用方法

IndicatorDigits()関数を使用すると、インディケータ配列の有効桁数を設定することができます。この関数の仕様は以下の通りです。

関数仕様
void IndicatorDigits(int digits)

引数の説明

digits
有効桁数

この関数は、指定された有効桁数をインディケータ配列の各要素に適用します。デフォルトでは通貨ペアの価格と同じ有効桁数が適用されます。

以下に、IndicatorDigits()関数を使用してインディケータ配列の有効桁数を設定するサンプルコードを示します。

サンプルコード
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Blue
#property indicator_color3 Red
//—- インディケータパラメータ
extern int FastEMA = 12; // 高速EMAの期間
extern int SlowEMA = 26; // 低速EMAの期間
extern int SignalSMA = 9; // シグナルSMAの期間
//—- インディケータバッファ
double ind_buffer1[]; // インディケータのバッファ1
double ind_buffer2[]; // インディケータのバッファ2
double ind_buffer3[]; // インディケータのバッファ3
// カスタムインディケータの初期化関数
int init() {
    //—- インディケータバッファの設定
    IndicatorBuffers(3);
    //—- 描画設定
    SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 3);
    SetIndexDrawBegin(0, SignalSMA);
    IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 2);
    //—- インディケータバッファのマッピング
    SetIndexBuffer(0, ind_buffer1);
    SetIndexBuffer(1, ind_buffer2);
    SetIndexBuffer(2, ind_buffer3);
    //—- データウィンドウおよびインディケータサブウィンドウラベルの名前
    IndicatorShortName(“Custom OsMA Indicator (" + FastEMA + “," + SlowEMA + “," + SignalSMA + “)");
    return (0);
}#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Green
//—- インディケータパラメータ
extern int SignalSMA = 9; // シグナルSMAの期間
//—- インディケータバッファ
double ind_buffer1[]; // インディケータのバッファ
// カスタムインディケータの初期化関数
int init() {
    //—- インディケータバッファの設定
    IndicatorBuffers(1);
    //—- 描画設定
    SetIndexStyle(0, DRAW_LINE);
    IndicatorDigits(Digits + 2); // 有効桁数を通貨ペアの価格より2桁多く設定
    //—- インディケータバッファのマッピング
    SetIndexBuffer(0, ind_buffer1);
    //—- データウィンドウおよびインディケータサブウィンドウラベルの名前
    IndicatorShortName(“Custom Indicator with Digits");
    return (0);
}

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

  1. `#property`ディレクティブを使って、インディケータの設定を行います。
  2. 外部パラメータ(`SignalSMA`)を宣言します。
  3. グローバル変数としてインディケータ配列(`ind_buffer1`)を宣言します。
  4. `init()`関数内で、`IndicatorBuffers()`関数を使って配列の個数を設定します。
  5. `SetIndexStyle()`関数を使って、インディケータ線のスタイルを設定します。
  6. `IndicatorDigits()`関数を使って、有効桁数を通貨ペアの価格より2桁多く設定します。
  7. `SetIndexBuffer()`関数を使って、配列の領域を確保します。
  8. `IndicatorShortName()`関数を使って、インディケータの短縮名称を設定します。

まとめ

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

MQL4

Posted by 佐川直弘