获取窗口/子窗口的数量和可见性
使用 ChartGetInteger函数,MQL 程序可以查找图表上的窗口数量(包括子窗口)及其可见性状态。
标识符 |
说明 |
值类型 |
|---|---|---|
CHART_WINDOWS_TOTAL |
图表窗口的总数,包括指标子窗口(只读)。 |
int |
CHART_WINDOW_IS_VISIBLE |
子窗口可见性,'window’ 参数为子窗口编号(只读)。 |
bool |
如果某些指标在当前时间范围的“特性”对话框的“可视化”选项卡中被禁用,则对应的子窗口可能会被隐藏。无法重置所有标志:由于 tpl 模板的存储机制,这种状态会被解释为启用所有时间范围。因此,如果用户希望在某些时间段隐藏子窗口,必须在最不常用的时间范围上至少保留一个启用标志。

在不同时间范围上设置指标可见性
需要注意的是,MQL5 中未提供通过编程方式确定特定标志的状态和切换的标准工具。模拟这种控制的最简单方法是保存 tpl 模板并对其进行分析,后续可能进行编辑和加载(请参阅 处理 tpl 模板章节)。
在新版脚本 ChartList4.mq5中,我们输出以下内容:子窗口数量(始终存在一个主窗口)、图表活动状态标志、图表对象标志、Windows 句柄。
const int win = (int)ChartGetInteger(id, CHART_WINDOWS_TOTAL);
|
以下是可能的输出结果。
Chart List
|
在第一张图表(索引 0)上有一个子窗口(#1)。在最后一张图表上有两个子窗口(#2),并且第二个子窗口当前处于隐藏状态。稍后,在 管理图表上的指标章节中,我们将展示完整版的 ChartList.mq5脚本,其中报告内容将包含位于子窗口和主窗口中的指标信息。
注意!对于 图表对象 中的图表,其 CHART_WINDOW_IS_VISIBLE 特性始终为 true,即使该对象的可视化在当前时间范围或全部时间范围中已被禁用。