インジケータの設定の定数: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の数値が代入されます。





