ObjectGetInteger

函数返回类似物件属性值,物件属性必须是日期时间,整型,颜色,布尔或者字符 类型。有2个变量函数可以使用。

1.即时返回属性值。

long  ObjectGetInteger(
   long                             chart_id,          // 图表标识符
   string                           name,              // 物件名称
   ENUM_OBJECT_PROPERTY_INTEGER     prop_id,           // 属性标识符
   int                              prop_modifier=0    // 属性修饰符, 如果需要的话
   );

2. 返回 true 或者 false, 取决于函数是否成功。 如果成功,属性值通过上一参量以引用的方式传递安置接收变量。

bool  ObjectGetInteger(
   long                             chart_id,          // 图表标识符
   string                           name,              // 物件名称
   int                              prop_id,           // 属性标识符
   ENUM_OBJECT_PROPERTY_INTEGER     prop_modifier,     // 属性修饰符
   long&                            long_var           // 这里接受属性值
   );

参量

chart_id

[in]  图表标识符。0代表当前图表。

name

[in]  物件名称。

prop_id

[in] 物件属性ID。值可以是 ENUM_OBJECT_PROPERTY_INTEGER 值中的一个。

prop_modifier

[in]  指定属性修饰语,第一变体,默认修饰语的值是0,。大多属性不要求修饰语。表示斐波纳契工具 水平线数量和安德鲁分叉图解物件,水平线编号从0开始。

long_var

[out]  长型变量接收要求属性值。

返回值

第一次调用变体的长类型返回值。

第二变体的函数返回真值,如果该属性是被维护的并且值可以放置到long_var 中,否则返回错误值。为了阅读更多关于 错误 ,调用 GetLastError()

注意

该函数使用同步调用,这意味着这个函数等待执行在调用之前已入列图表的所有命令,这就是该函数耗费时间的原因。当处理图表上的大量对象时应该考虑这个特性。

 

示例:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectGetInteger"  // 对象名称
 
//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 当前图表 ID
   long chart_id=ChartID();
 
//--- 在当前已知的服务器时间创建“垂直线”图形对象
   if(!ObjectCreate(chart_idOBJ_NAMEOBJ_VLINE0TimeCurrent(), 0))
     {
      Print("ObjectCreate() failed. Error "GetLastError());
      return;
     }
//--- 更新图表以立即反映变化
   ChartRedraw(chart_id);
   
//--- 获取对象创建时间
   long long_var=0;
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_CREATETIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- 对象创建时间的字符串表示
   string create_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- 获取对象中设置的时间
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- 对象位置时间的字符串表示
   string obj_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- 取得对象类型
   ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TYPE);
   
//--- 向日志输出对象的类型、创建时间以及图形对象所在的图表上的时间
   PrintFormat("%s object created at %s at chart point with time %s",EnumToString(object_type), create_timeobj_time);
   
//--- 等待两秒再删除所创建的对象
   Sleep(2000);
   ObjectDelete(chart_idOBJ_NAME);
   ChartRedraw(chart_id);
   /*
   结果:
   OBJ_VLINE object created at 2025.02.01 12:15:37 at chart point with time 2025.01.31 23:54:59
   */
  }