IndicatorSetDouble

この関数は、対応する指標プロパティの値を設定します。指標プロパティは double 型でなければなりません。この関数には 2 つのバージョンがあります。

プロパティ識別子との呼び出し

bool  IndicatorSetDouble(
  int    prop_id,          // 識別子
  double  prop_value        // 設定する値
  );

プロパティ識別子と修飾子との呼び出し

bool  IndicatorSetDouble(
  int    prop_id,          // 識別子
  int    prop_modifier,    // 修飾子
  double  prop_value        // 設定する値
  )

パラメータ

prop_id

[in]  指標プロパティの識別子。値は ENUM_CUSTOMIND_PROPERTY_DOUBLE 列挙のいずれかです。

prop_modifier

[in]  指定されたプロパティの修飾子。修飾子はレベルプロパティのみで必要です。レベルの番号付けは0から始まります。なので、レベル2のプロパティを設定するには1を指定する必要があります(コンパイラディレクティブ使用時より 1 つ下)。

prop_value

[in]  プロパティ値

戻り値

実行成功の場合は true、それ以外の場合は false

注意事項

#property ディレクティブの使用時にはプロパティ( 修飾子)の番号付けは1から始まる一方、関数では番号付けが0から始まります。レベル番号が正しく設定されていない場合、指標の表示目的のものと異なる場合があります。

例えば、別々のサブウィンドウでの指標の最初のレベル値は、次の 2 つの方法で設定出来ます。

  • property indicator_level1  50 - レベル番号は1で指定
  • IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, 50) - レベル1を指定するのに 0 を使用

例: 指標ウィンドウの最大値と最小値及び水平線が配置されているレベル値を逆転する指標

IndicatorSetDouble() 関数の使用例

#property indicator_separate_window
//--- 指標ウィンドウの最大値と最小値を設定
#property indicator_minimum  0
#property indicator_maximum  100
//--- 3 つの水平レベルを別々の指標ウィンドウに表示
#property indicator_level1 25
#property indicator_level2 50
#property indicator_level3 75
//--- 水平レベルの厚さを設定
#property indicator_levelwidth 1
//--- 水平レベルのスタイルを設定
#property indicator_levelstyle STYLE_DOT
//+------------------------------------------------------------------+
//| カスタム指標を初期化する関数                                            |
//+------------------------------------------------------------------+
int OnInit()
 {
//--- 水平レベルの記述を設定
  IndicatorSetString(INDICATOR_LEVELTEXT,0,"First Level (index 0)");
  IndicatorSetString(INDICATOR_LEVELTEXT,1,"Second Level (index 1)");
  IndicatorSetString(INDICATOR_LEVELTEXT,2,"Third Level (index 2)");
//--- 指標の短縮名を設定
  IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetDouble() Demo");
//--- それぞれのレベルの色を設定
  IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
  IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrGreen);
  IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrRed);
//---
  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[])
 {
  static int tick_counter=0;
  static double level1=25,level2=50,level3=75;
  static double max=100,min=0, shift=100;
//--- ティックを計算
  tick_counter++;
//--- 10ティックごとにレベルを逆転する
  if(tick_counter%10==0)
    {
    //--- レベル値の符号を反転する
     level1=-level1;
     level2=-level2;
     level3=-level3;
    //--- 最大値と最小値の符号を反転する
     max-=shift;
     min-=shift;
    //--- シフト値を反転
     shift=-shift;
    //--- 新しいレベル値を設定
    IndicatorSetDouble(INDICATOR_LEVELVALUE,0,level1);
    IndicatorSetDouble(INDICATOR_LEVELVALUE,1,level2);
    IndicatorSetDouble(INDICATOR_LEVELVALUE,2,level3);
    //--- 指標ウィンドウの新しい最大値と最小値を設定
    Print("Set up max = ",max,",   min = ",min);
    IndicatorSetDouble(INDICATOR_MAXIMUM,max);
    IndicatorSetDouble(INDICATOR_MINIMUM,min);
    }
//--- 次の呼び出しのために prev_calculated の値を返す
  return(rates_total);
 }

参照

指標スタイルの例指標プロパティと関数との関係描画スタイル