ChartIndicatorGet

指定されたチャート]ウィンドウで指定された短縮名を持つ指標ハンドルを返します。

int  ChartIndicatorGet(
  long          chart_id,              // チャート識別子
  int            sub_window             // サブウィンドウ番号
  const string  indicator_shortname   // 指標短縮名
  );

パラメータ

chart_id

[in]  チャート識別子。( 0 は現在のチャート)

sub_window

[in]  チャートサブウィンドウの番号( 0 はメインチャートウィンドウ)

const indicator_shortname

[in] IndicatorSetString() 関数を使用して INDICATOR_SHORTNAME プロパティに設定された指標の短縮名指標の短縮名を取得するには ChartIndicatorName() 関数が使用されます。

戻り値

成功した場合は指標ハンドル、そうでない場合は INVALID_HANDLEを返します。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

ChartIndicatorGet()関数を使用して取得した指標ハンドルは、内部指標使用カウンターを増やします。カウンターがゼロより大きいすべての指標は、ターミナルランタイムシステムに読み込まれたままになります。したがって、以下の例に示すように、不要になった指標ハンドルは、IndicatorRelease()を使用して、それを受け取ったのと同じプログラムですぐに明示的に解放する必要があります。別のプログラムから「放棄された」ハンドルを見つけて正しく解放することはできません。

指標を作成する場合はIndicatorSetString() 関数を使用して INDICATOR_SHORTNAME プロパティに書かれる短縮名を形成するようお気をつけください。指標は ChartIndicatorGet() 関数で短縮名によって識別されるので、.短縮名に指標の全ての入力パラメータの値を含むようお勧めします。

指標を識別するためのあと 1 つの方法は、IndicatorParameters() 関数を使用して、指定されたハンドルのパラメータリストを取得し、その後、取得された値を分析することです。

例:

//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
  //--- チャート上のウィンドウの数(少なくとも1つのメインウィンドウは常に存在する)
  int windows=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
  //--- 全てのウィンドウをチェックする
  for(int w=0;w<windows;w++)
    {
    //--- このウィンドウ/サブウィンドウ内の指標の数
    int total=ChartIndicatorsTotal(0,w);
    //--- ウィンドウ内の全ての指標をみる
    for(int i=0;i<total;i++)
       {
        //--- 指標の短縮名を取得する
        string name=ChartIndicatorName(0,w,i);
        //--- 指標ハンドルを取得する
        int handle=ChartIndicatorGet(0,w,name);
        //--- ログに加える
        PrintFormat("Window=%d,  index=%d,  name=%s,  handle=%d",w,i,name,handle);
        //--- 不要になった指標ハンドルは解放するべき
        IndicatorRelease(handle);
       }
    }
 }

参照

ChartIndicatorAdd()ChartIndicatorName()ChartIndicatorsTotal()IndicatorParameters()