IndicatorCreate

この関数は iMqlParam 型のパラメータの配列に基づいて作成された特殊のテクニカル指標のハンドルを返します。

int  IndicatorCreate(
  string          symbol,                            // 銘柄名
  ENUM_TIMEFRAMES  period,                            // 時間軸
  ENUM_INDICATOR   indicator_type,                    // ENUM_INDICATOR 列挙からの指標の種類
  int              parameters_cnt=0,                  // パラメータ数
  const MqlParam& parameters_array[]=NULL,          // パラメータの配列
  );

パラメータ

symbol

[in] 指標計算が基づいているデータを持つシンボルの名称。NULL は現在のシンボルです。

period

[in]  時間軸。 ENUM_TIMEFRAMES 列挙のいずれかの値。0 は現在の時間軸。

indicator_type

[in]  指標の種類。ENUM_INDICATOR 列挙のいずれかの値。

parameters_cnt

[in] parameters_array[] 配列に渡されるパラメータ数。配列の要素は特殊な MqlParam 構造体型です。デフォルトではゼロで、パラメタ—が受け渡されません。 1 つ以上のパラメータが指定された場合 parameters_array は必須です。パラメータ数は 64 を超すことは出来ません。

parameters_array[]=NULL

[in]  MqlParam 型の配列。要素はテクニカル指標の入力パラメータの型と値を含みます。

戻り値

指定されたテクニカル指標のハンドル。失敗の場合 INVALID_HANDLE

注意事項

IND_CUSTOM 型の指標ハンドルが作成された場合、tparameters_array 入力パラメータ配列の初めの要素のtype フィールドは tENUM_DATATYPE 列挙の TYPE_STRING 値を持ち、string_value フィールドはカスタム指標の名称を含まなければいけません。カスタム指標は(EX5拡張子を持つファイルに)コンパイルし、クライアント端末の MQL5/Indicators ディレクトリまたはサブディレクトリ内に配置される必要があります。

テストが必要な指標は、パラメータが文字列定数で設定されていれば、iCustom() 関数の呼び出しから自動的に定義されています。他の全ての場合(IndicatorCreate() 関数の使用や指標名を設定するパラメータでの非定数文字列の使用)#property tester_indicator プロパティが必要です。

#property tester_indicator "indicator_name.ex5"

カスタム指標が最初の呼び出し形式を使用する場合、入力パラメータを受け渡す際に最後のパラメータで計算されるデータを示すことも出来ます。「適用価格」パラメータが明確に選択されていない場合、デフォルト計算は PRICE_CLOSE 値に基づきます。

例:

void OnStart()
 {
  MqlParam params[];
  int      h_MA,h_MACD;
//--- iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE); iを作成する
  ArrayResize(params,4);
//--- ma_period を設定する
  params[0].type         =TYPE_INT;
  params[0].integer_value=8;
//--- ma_shift を設定する
  params[1].type         =TYPE_INT;
  params[1].integer_value=0;
//--- ma_method を設定する
  params[2].type         =TYPE_INT;
  params[2].integer_value=MODE_EMA;
//--- applied_price を設定する
  params[3].type         =TYPE_INT;
  params[3].integer_value=PRICE_CLOSE;
//--- MA を作成する
  h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA); を作成する
  ArrayResize(params,4);
//--- 高速 ma_period を設定する
  params[0].type         =TYPE_INT;
  params[0].integer_value=12;
//--- 低速 ma_period を設定する
  params[1].type         =TYPE_INT;
  params[1].integer_value=26;
//--- 差の平滑期間を設定する
  params[2].type         =TYPE_INT;
  params[2].integer_value=9;
//--- 指標ハンドルを applied_price として設定する
  params[3].type         =TYPE_INT;
  params[3].integer_value=h_MA;
//--- 移動平均に基づいて MACD を作成する
  h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- 指標を使用する
//--- . にて。にて。
//--- 指標を解放する(初めの h_MACD)
  IndicatorRelease(h_MACD);
  IndicatorRelease(h_MA);
 }