下载MetaTrader 5
MQL5参考图表操作ChartIndicatorGet 

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()

注意

创建指标时,谨慎设置缩略名,它将使用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()