IndicatorSetDouble()

 IndicatorSetDouble()関数は、double型のインジケータープロパティの値を設定するために使用します。

 IndicatorSetDouble()関数には、以下のように定義されています。

bool IndicatorSetDouble(
int prop_id,
double prop_value
);

又は

bool IndicatorSetDouble(
int prop_id,
int prop_modifier,
double prop_value
);

 各引数の意味は、以下のとおりです。

  • int prop_id
    以下の表に従って、値を設定したいインジケータープロパティを指定します。

    インジケータープロパティ
    説 明
    プロパティの型
    INDICATOR_MINIMUMサブウィンドウにおける縦軸の最小値
    double
    INDICATOR_MAXIMUMサブウィンドウにおける縦軸の最大値
    double
    INDICATOR_LEVELVALUEサブウィンドウにおけるレベルライン
    double
    修飾子=レベル番号
  • int prop_modifier
    インジケータープロパティの修飾子を指定します。
    修飾子は、第一引数で「INDICATOR_LEVELVALUE」を指定した場合において、2本以上のレベルラインを設定する場合に必要となります。
    例えば、2本のレベルラインを設定したい場合は、1本目のレベルラインには「0」、2本目のレベルラインには「1」と指定します。
  • double prop_value
    インジケータープロパティの値を指定します。

戻り値

 IndicatorSetDouble()関数が正常に実行された場合は「true」、そうでない場合は「false」が返されます。

注意点

 サブウィンドウにレベルラインを表示させる方法には#property命令を使用する方法と、IndicatorSetDouble()関数を使用する方法とがありますが、レベル番号のナンバリングは、#property命令を使用する場合はから、IndicatorSetDouble()関数を使用する場合はからとなります。

 具体的には、以下のようになります。

  • #property命令を使用する場合
    
    #property indicatorlevel1 20
    #property indicatorlevel2 40
    
  • IndicatorSetDouble()関数を使用する場合
    
    IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
    IndicatorSetDouble(INDICATOR_LEVELVALUE,1,40);
    

 なお、レベル番号が不正確に設定された場合は、意図したのとは異なった表示がなされます。

具体例

 サブウィンドウにRSI、RSIの値が「20」と「40」の位置にレベルラインを表示させたい場合は、以下のように記述します。


#property strict

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Aqua

input int RSI_Period = 14;

double RSI[];

int OnInit()
{
  SetIndexBuffer(0,RSI);
  
  SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);
  
  IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
  IndicatorSetDouble(INDICATOR_LEVELVALUE,1,40);
  
  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[])
{
  int limit = Bars - IndicatorCounted();
  
  for(int i = limit - 1; i >= 0; i--)
     {
       RSI[i] = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i);
     }
     
  return(rates_total);
}

IndicatorSetDouble

関連ツール

インジケーターつくーる
MQL言語の学習ができ、裁量トレーダーもインジケーター開発が可能に
MQL言語の学習ができ、裁量トレーダーもインジケーター開発が可能に?|?fx-on.com

GogoJungleで購入する

 プログラミングの知識がなくても、ほぼマウスで選ぶだけで独自のインジケーターを作成することができるツールです。

 以下は、「インジケーターつくーる」の紹介動画です。