IndicatorParameters
IndicatorParameters
基于指定句柄,返回指标输入参数的数量,以及参数的值和类型。
int IndicatorParameters(
int indicator_handle, // 指标处理
ENUM_INDICATOR& indicator_type, // 接收指标类型的变量
MqlParam& parameters[] // 接收参数的数组
);参数
- indicator_handle
[in] 指标处理,您需要知道计算的参数数量。
- indicator_type
[out] 变量,如果ENUM_INDICATOR 类型是指标类型将被写入的类型。
- parameters[]
[out] 接收MqlParam类型值的动态数组,在这里写入指标参数列表。数组大小通过IndicatorParameters()函数返回。
返回值
指定句柄的指标输入参数数量。如果错误则返回-1。要了解有关错误的更多信息,请访问GetLastError()函数。
例如:
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
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, indicator #%d, handle=%d",w,i,handle);
//---
MqlParam parameters[];
ENUM_INDICATOR indicator_type;
int params=IndicatorParameters(handle,indicator_type,parameters);
//--- 信息的标头
string par_info="Short name "+name+", type "
+EnumToString(ENUM_INDICATOR(indicator_type))+"\r\n";
//---
for(int p=0;p<params;p++)
{
par_info+=StringFormat("parameter %d: type=%s, long_value=%d, double_value=%G,string_value=%s\r\n",
p,
EnumToString((ENUM_DATATYPE)parameters[p].type),
parameters[p].integer_value,
parameters[p].double_value,
parameters[p].string_value
);
}
Print(par_info);
}
//--- 完成窗口的所有指标
}
//---
}