主要对象特性
所有对象都有一些通用特性。主要特性如下表所示。我们将在后续内容中介绍其他通用的特殊用途特性(请参阅 对象状态管理、 Z 轴顺序和 时间范围上下文中的对象可见性 章节)。
标识符 |
说明 |
类型 |
---|---|---|
OBJPROP_NAME |
对象名称 |
string |
OBJPROP_TYPE |
对象类型(只读) |
ENUM_OBJECT |
OBJPROP_CREATETIME |
对象创建时间(只读) |
datetime |
OBJPROP_TEXT |
对象说明(对象中包含的文本) |
string |
OBJPROP_TOOLTIP |
鼠标悬停提示文本 |
string |
OBJPROP_NAME 特性是对象标识符。编辑该特性相当于删除旧对象并创建新对象。
对于某些能够显示文本的对象类型(例如标签或按钮),OBJPROP_TEXT 特性会直接显示在图表中的对象内部。对于其他对象(例如线条),该特性包含的描述信息仅在图表设置中启用“显示对象描述选项”时,才会显示在图表上对象的旁边。无论何种情况,OBJPROP_TEXT 都会显示在工具提示中。
OBJPROP_CREATETIME 特性仅在当前会话期间有效,不会写入 chr 文件。
可以通过编程或手动方式(在对象特性对话框中)更改对象名称,而其创建时间将保持不变。预先说明,编程重命名不会在图表上触发任何与对象相关的事件。正如我们将在 下一章中学到的,手动重命名会触发三个事件:
- 删除旧名称的对象 (CHARTEVENT_OBJECT_DELETE)
- 创建新名称的对象 (CHARTEVENT_OBJECT_CREATE)
- 修改新对象 (CHARTEVENT_OBJECT_CHANGE)
如果未设置 OBJPROP_TOOLTIP 特性,终端会自动为对象生成工具提示。要禁用工具提示,将其值设置为 "\n"(换行符)。
我们将对 查找对象 章节中的ObjectFinder.mq5脚本进行调整,用于记录当前图表中所有对象的上述特性。我们将新脚本命名为 ObjectListing.mq5。
在OnStart的起始阶段,我们将创建或修改一条位于最后一根柱线(即脚本启动时)的垂直直线。如果图表设置中启用了显示对象描述的选项,则我们将在右侧垂直线旁看到“当前最新柱线”文本。
void OnStart()
|
接下来,通过遍历子窗口的循环,我们将查询最多 ObjectsTotal个对象及其主要特性。
int count = 0;
|
日志中会生成以下条目。
Window 0
|
OBJPROP_CREATETIME 值为零(1970.01.01 00:00)表示该对象并非在当前会话期间创建,而是在更早时间创建的。