图形对象

MetaTrader 5 用户都很熟悉图形对象的概念:趋势线、价格标签、通道、Fibonacci 水平线、几何形状以及许多其他用于分析图表标记的可视化元素。MQL5 语言允许通过编程方式创建、编辑和删除图形对象。该功能可能非常实用,例如,当需要在指标子窗口和主窗口中同时显示特定数据时。由于平台仅支持在一个窗口中输出指标缓冲区,我们可以在另一个窗口中生成对象。借助图形对象创建的标记,使用 EA 交易可轻松实现半自动化交易。此外,对象常被用于为 MQL 程序构建自定义图形界面,例如按钮、输入字段和标志。这些程序无需打开特性对话框即可进行控制,且 MQL 创建的面板比标准输入变量具有更高的灵活性。

每个对象都存在于特定图表的上下文中。因此,本章将讨论的函数有一个共同特征:第一个参数用于指定。 图表 ID。此外,每个图形对象都有一个在单个图表(包括所有子窗口)中唯一的名称。更改图形对象名称将导致旧名称对象被删除,并创建同名新对象。不能创建两个同名对象。

用于定义图形对象特性的函数,以及在图表上创建 (ObjectCreate) 和移动 (ObjectMove) 对象的操作,本质上都是向图表发送异步命令。如果这些函数执行成功,命令将进入图表的共享事件队列。图形对象特性的可视化修改发生在处理该特定图表的事件队列期间。因此,在函数调用后,图表的外观可能会延迟反映对象状态的变化。

通常,图表上图形对象的更新由终端自动完成,以响应接收新报价、调整窗口大小等与图表相关的事件。要强制更新图形对象,可使用请求重绘图表的函数 (ChartRedraw)。这在批量创建或修改对象后尤为重要。

对象可作为编程事件的来源,例如创建、删除、修改其特性以及鼠标点击等事件。所有有关事件触发和处理的细节将在单独的 章节中,与常规窗口上下文中的事件一起讨论。

我们将从理论基础开始,逐步过渡到实践应用。