#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//--- 图表 ID
long chart_id=ChartID();
//---获取图表子窗口包括主窗口的数量
long wnd=0;
ResetLastError();
if(!ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL, 0, wnd))
{
Print("ChartGetInteger() failed. Error ", GetLastError());
return;
}
//--- 按图表子窗口(包括主窗口)的数量循环
for(int sub_wnd=0; sub_wnd<(int)wnd; sub_wnd++)
{
//--- 在日志中显示图表标题
string wnd_name=(sub_wnd==0 ? "Main window:" : StringFormat("Subwindow %d:", sub_wnd));
Print(wnd_name);
//--- 获取当前子窗口中的图形对象数量
//--- 并在全部子窗口对象的循环中输出每个对象的名称
int objects=ObjectsTotal(chart_id, sub_wnd);
for(int obj_index=0; obj_index<objects; obj_index++)
{
//--- 循环中当前对象的名称
string obj_name=ObjectName(chart_id, obj_index, sub_wnd);
//--- 如果这是一个交易标签 (自动交易), 则不在日志中显示该对象名称
if(sub_wnd==0 && StringFind(obj_name, "autotrade")==0)
continue;
PrintFormat(" [%d] Graphic object name: \"%s\"", obj_index, obj_name);
}
}
/*
具有两个子窗口的主窗口的结果,
其中主窗口包含两个图形对象和交易标签(跳过),
在每个图表子窗口中构造两个图形对象:
Main window:
[0] Graphic object name: "M30 Fibo 29182"
[1] Graphic object name: "M30 Vertical Line 13600"
Subwindow 1:
[0] Graphic object name: "M30 Cycle Lines 63004"
[1] Graphic object name: "M30 Trendline 40731"
Subwindow 2:
[0] Graphic object name: "M30 Equidistant Channel 58930"
[1] Graphic object name: "M30 Rectangle 5636"
*/
}
|