【MQL4定数】インジケータの設定の定数:Double型(ENUM_CUSTOMIND_PROPERTY_DOUBLE)

【辞書】MQLリファレンス

インジケータの設定の定数:Double型

インジケータの設定の定数は、インジケータにDouble型の値を入力するときに使用されます。

主に、IndicatorSetDouble関数です。

Get関数はありません。

 

インジケータの設定の定数:Double型(ENUM_CUSTOMIND_PROPERTY_DOUBLE)

定数説明
INDICATOR_MINIMUMサブウィンドウスケールの最小値
INDICATOR_MAXIMUMサブウィンドウスケールの最大値
INDICATOR_LEVELVALUEレベルラインの値

 

インジケータの設定の定数:Double型の使い方

主に、IndicatorSetDouble関数で使用されます。

上記の定数を入力しましょう。

すると、その定数に対応した設定値が、インジケータに反映されます。

例えば、以下のように使用します。

  //IndicatorSetDouble関数
  //インジケータのサブウィンドウスケールの最小値を0に設定
   bool  indicatorSetDouble = IndicatorSetDouble(INDICATOR_MINIMUM, 0); 

 

返り値はbool型です。

成功すればtrue、失敗すればfalseが返ってきます。

 

サンプルプログラム

以下は、IndicatorSetDouble関数を使って、サブウィンドウのスケール最小値・最大値やレベルラインを設定するサンプルプログラムです。

//+------------------------------------------------------------------+
//| サンプルインジケータ:ENUM_CUSTOMIND_PROPERTY_DOUBLE の使用例
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue

double buffer[];

//+------------------------------------------------------------------+
//| OnInit関数                                                        |
//+------------------------------------------------------------------+
int OnInit()
{
   SetIndexBuffer(0, buffer);
   SetIndexStyle(0, DRAW_LINE);

   //--- サブウィンドウスケールの最小値を0に設定
   bool resultMin = IndicatorSetDouble(INDICATOR_MINIMUM, 0.0);
   if(resultMin)
      Print("INDICATOR_MINIMUM の設定に成功しました。");
   else
      Print("INDICATOR_MINIMUM の設定に失敗しました。");

   //--- サブウィンドウスケールの最大値を100に設定
   bool resultMax = IndicatorSetDouble(INDICATOR_MAXIMUM, 100.0);
   if(resultMax)
      Print("INDICATOR_MAXIMUM の設定に成功しました。");
   else
      Print("INDICATOR_MAXIMUM の設定に失敗しました。");

   //--- レベルラインを設定(インデックス0番目のレベルを30に設定)
   bool resultLevel0 = IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, 30.0);
   if(resultLevel0)
      Print("INDICATOR_LEVELVALUE(0) の設定に成功しました。");
   else
      Print("INDICATOR_LEVELVALUE(0) の設定に失敗しました。");

   //--- レベルラインを設定(インデックス1番目のレベルを70に設定)
   bool resultLevel1 = IndicatorSetDouble(INDICATOR_LEVELVALUE, 1, 70.0);
   if(resultLevel1)
      Print("INDICATOR_LEVELVALUE(1) の設定に成功しました。");
   else
      Print("INDICATOR_LEVELVALUE(1) の設定に失敗しました。");

   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| OnCalculate関数                                                   |
//+------------------------------------------------------------------+
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[])
{
   for(int i = prev_calculated; i < rates_total; i++)
   {
      //--- サンプルとしてRSI風の0~100の値を仮で計算
      if(i == 0)
         buffer[i] = 50.0;
      else
         buffer[i] = 50.0 + (close[i] - close[i - 1]) * 10000.0;

      //--- 0~100の範囲に制限
      if(buffer[i] > 100.0) buffer[i] = 100.0;
      if(buffer[i] < 0.0)   buffer[i] = 0.0;
   }

   return(rates_total);
}

 

上記のサンプルでは、OnInit関数内で以下の設定を行っています。

  • INDICATOR_MINIMUM:サブウィンドウの最小値を0に設定
  • INDICATOR_MAXIMUM:サブウィンドウの最大値を100に設定
  • INDICATOR_LEVELVALUE:レベルラインを30と70に設定(インデックスで指定)

INDICATOR_LEVELVALUEは、IndicatorSetDouble関数の第2引数にインデックス番号を指定することで、複数のレベルラインを設定できます。

 

【補足】インジケータの設定の定数:Double型の列挙型(ENUM_CUSTOMIND_PROPERTY_DOUBLE)

インジケータの設定の定数は、ENUM_CUSTOMIND_PROPERTY_DOUBLE​という列挙型に含まれています。

列挙型は、定数群をひとまとめにしたものです。

以下のように使います。

ENUM_CUSTOMIND_PROPERTY_DOUBLE customindPropertyDouble = INDICATOR_MINIMUM;

上記のようにプログラムすると、customindPropertyDouble変数に INDICATOR_MINIMUMの数値が代入されます。