ChartWindowFind
ChartWindowFind
函数返回画指标的子窗口数。该函数有两个变体。
- 函数在指定图表中搜索带有指定的指标“缩写名”子窗口(缩写名在子窗口的左上部显示),成功的话返回子窗口数。
int ChartWindowFind(
long chart_id, // 图表标识符
string indicator_shortname // 短指标名, 见 INDICATOR_SHORTNAME
- 函数必须从自定义指标中调用。返回指标工作的子窗口数。
int ChartWindowFind();参量
- chart_id
[in] 图表 ID. 0 表示当前图表。
- indicator_shortname
[in] 指标缩写名。
返回值
成功的话返回子窗口数。失败,函数返回-1。
注释
如果函数第二变体(无参量)是从脚本或者EA交易调用,则返回-1。
不要将指标的缩略名和文件名称弄混,这是使用iCustom()和IndicatorCreate()函数创建指标时指定的名称。如果指标的缩略名未明确设置,那么包含指标源代码的文件名称,编译期间会被指明。
正确地形成指标缩略名非常重要,它使用IndicatorSetString()函数记录在INDICATOR_SHORTNAME属性。建议缩略名包含指标输入参数的值,因为ChartIndicatorDelete()函数中从图表删除的指标通过缩略名识别。
示例:
#property script_show_inputs
//--- 输入参量
input string shortname="MACD(12,26,9)";
//+------------------------------------------------------------------+
//| 返回带有这个指标的图表窗口号 |
//+------------------------------------------------------------------+
int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
{
int window=-1;
//---
if((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR)
{
//--- 函数从指标调用,名称不需要
window=ChartWindowFind();
}
else
{
//--- 函数从EA交易或者脚本调用
window=ChartWindowFind(0,short_name);
if(window==-1) Print(__FUNCTION__+"(): Error = ",GetLastError());
}
//---
return(window);
}
//+------------------------------------------------------------------+
//| 脚本程序启动函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//---
int window=GetIndicatorSubWindowNumber(0,shortname);
if(window!=-1)
Print("Indicator "+shortname+" is in the window #"+(string)window);
else
Print("Indicator "+shortname+" is not found. window = "+(string)window);
}