ChartIndicatorGet

在指定图表窗口返回指定缩略名的指标句柄。

int  ChartIndicatorGet(
   long           chart_id,              // 图表 ID
   int            sub_window             // 子窗口数量
   const string   indicator_shortname    // 指标的缩略名
   );

参数

chart_id

[in]  图表 ID。0 表示当前图表。

sub_window

[in]  图表子窗口的数量。0代表图表主窗口。

const indicator_shortname

[in]  使用IndicatorSetString() 函数在INDICATOR_SHORTNAME 属性设置的指标的缩略名。若要获得指标的缩略名,请使用ChartIndicatorName()函数。

返回值

如果成功返回指标句柄,否则返回 INVALID_HANDLE。 所有获得错误的信息,请调用GetLastError()

注意

ChartIndicatorGet()�v数を使用して取得した指�衰膝螗丧毪稀⒛诓恐�耸褂氓�ウンタ�`を��やします。カウンタ�`がゼロより大きいすべての指�摔稀�タ�`ミナルランタイムシステムに�iみ�zまれたままになります。したがって、以下の例に示すように、不要になった指�衰膝螗丧毪稀�IndicatorRelease()を使用して、それを受け取ったのと同じプログラムですぐに明示的に解放する必要があります。�eのプログラムから「放��された」ハンドルを�つけて正しく解放することはできません。

创建指标时,谨慎设置缩略名,它将使用IndicatorSetString()函数被写入INDICATOR_SHORTNAME属性。建议缩略名应该包含指标所有输入参数的 值,因为在ChartIndicatorGet()函数指标基于缩略名识别。

识别指标的另一种方式就是使用IndicatorParameters()函数获取给定句柄的参数列表,然后分析获得的值。

例如:

//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- 图表上的窗口数量(至少一个主窗口始终存在)
   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()