カスタム指標プロパティ

カスタム指標で使用出来る指標バッファの数に制限はありません。しかし SetIndexBuffer() 関数を使用して、指標バッファとして指定される配列のそれぞれに格納されるデータ型を指定する必要があります。値は ENUM_INDEXBUFFER_TYPE 列挙体の値のうちのいずれかです。

ENUM_INDEXBUFFER_TYPE

ID

説明

INDICATOR_DATA

描画するデータ。

INDICATOR_COLOR_INDEX

色。

INDICATOR_CALCULATIONS

中間計算のための補助バッファ

カスタム指標には表示に活用できる多数の設定があります。これらの設定は、IndicatorSetDouble()IndicatorSetInteger() 及び IndicatorSetString() 関数を使用して対応する指標のプロパティに行われます。指標のプロパティの識別子は ENUM_CUSTOMIND_PROPERTY 列挙にリストされています。

ENUM_CUSTOMIND_PROPERTY_INTEGER

ID

説明

プロパティ型

INDICATOR_DIGITS

指標値描画の精度。

int

INDICATOR_HEIGHT

指標ウィンドウの固定された高さ(プリプロセッサコマンド #property indicator_height)。

int

INDICATOR_LEVELS

指標ウィンドウのレベル数。

int

INDICATOR_LEVELCOLOR

レベルの線の色。

color                      modifier = level number

INDICATOR_LEVELSTYLE

レベルの線のスタイル。

ENUM_LINE_STYLE  modifier = level number

INDICATOR_LEVELWIDTH

レベルの線の太さ。

int                        修飾子 = レベル番号

ENUM_CUSTOMIND_PROPERTY_DOUBLE

ID

説明

プロパティ型

INDICATOR_MINIMUM

指標ウィンドウの最小サイズ。

double

INDICATOR_MAXIMUM

指標ウィンドウの最大サイズ。

double

INDICATOR_LEVELVALUE

レベル値。

double                    修飾子 = レベル番号

ENUM_CUSTOMIND_PROPERTY_STRING

ID

説明

プロパティ型

INDICATOR_SHORTNAME

指標短縮名。

string

INDICATOR_LEVELTEXT

レベルの説明。

string                    modifier = level number

例:

//--- 指標の設定
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   2
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_color1 clrLightSeaGreen
#property indicator_color2 clrRed
//--- 入力パラメータ
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- 指標バッファ
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+------------------------------------------------------------------+
//| カスタム指標を初期化する関数                                            |
//+------------------------------------------------------------------+
void OnInit()
 {
//--- 指標バッファマッピング
  SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);
  SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
  SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);
  SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);
//--- 精度を設定
  IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- レベルを設定
  IndicatorSetInteger(INDICATOR_LEVELS,2);
  IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
  IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);
//--- サブウィンドウの最大値と最小値を設定する
  IndicatorSetDouble(INDICATOR_MINIMUM,0);
  IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- インデックスが描画される最初のバーを設定する
  PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);
  PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);
//--- 2 番目の線に STYLE_DOT スタイルを設定する
  PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);
//--- データウィンドウ の名称と指標サブウィンドウラベル
  IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
  PlotIndexSetString(0,PLOT_LABEL,"Main");
  PlotIndexSetString(1,PLOT_LABEL,"Signal");
//--- 線の描画を空の値に設定する
  PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
  PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//--- 初期化完了
 }