跳至内容

Object Properties

图形对象的属性

根据对象类型的不同,图形对象可以具有多种属性。所有用于技术分析的对象都绑定到时间和价格坐标:趋势线、通道、斐波那契工具等。但是,还有一些辅助对象旨在改进用户界面,这些对象绑定到图表中始终可见的部分(主图表窗口或指标子窗口):

对象IDX/Y宽度/高度日期/价格OBJPROP_CORNEROBJPROP_ANCHOROBJPROP_ANGLE
文本OBJ_TEXT
标签OBJ_LABEL是(只读)
按钮OBJ_BUTTON
位图OBJ_BITMAP是(只读)
位图标签OBJ_BITMAP_LABEL是(只读)
编辑OBJ_EDIT
矩形标签OBJ_RECTANGLE_LABEL

表中使用的以下术语:

  • X/Y – 相对于图表角落的锚点坐标,以像素为单位;
  • 宽度/高度 – 对象具有宽度和高度。对于“只读”,宽度和高度值仅在对象在图表上渲染时计算;
  • 日期/价格 – 锚点坐标使用日期和价格值指定;
  • OBJPROP_CORNER – 定义指定锚点坐标的图表角落。可以是ENUM_BASE_CORNER枚举中的4个值之一;
  • OBJPROP_ANCHOR – 定义对象本身中的锚点,可以是ENUM_ANCHOR_POINT枚举中的9个值之一。坐标以像素为单位,从这一点到选定的图表角落指定;
  • OBJPROP_ANGLE – 定义对象逆时针方向的旋转角度。

ObjectGet()ObjectSet()函数一起使用的对象值索引。它可以是以下值之一:

ID类型描述
OBJPROP_TIME10datetime用于设置/获取第一个坐标时间部分的日期时间值
OBJPROP_PRICE11double用于设置/获取第一个坐标价格部分的双倍值
OBJPROP_TIME22datetime用于设置/获取第二个坐标时间部分的日期时间值
OBJPROP_PRICE23double用于设置/获取第二个坐标价格部分的双倍值
OBJPROP_TIME34datetime用于设置/获取第三个坐标时间部分的日期时间值
OBJPROP_PRICE35double用于设置/获取第三个坐标价格部分的双倍值
OBJPROP_COLOR6color用于设置/获取对象颜色的颜色值
OBJPROP_STYLE7int用于设置/获取对象线样式的常量,可以是STYLE_SOLID、STYLE_DASH、STYLE_DOT、STYLE_DASHDOT或STYLE_DASHDOTDOT
OBJPROP_WIDTH8int用于设置/获取对象线宽的整数值。可以是1到5之间
OBJPROP_BACK9bool用于设置/获取对象背景绘制的布尔值
OBJPROP_RAY10bool用于设置/获取对象射线标志的布尔值。
OBJPROP_ELLIPSE11bool用于设置/获取斐波那契弧的椭圆标志的布尔值
OBJPROP_SCALE12double用于设置/获取对象属性比例的双倍值
OBJPROP_ANGLE13double用于以度为单位设置/获取对象属性角度的双倍值
OBJPROP_ARROWCODE14uchar用于设置/获取对象属性箭头代码的整数值或箭头枚举
OBJPROP_TIMEFRAMES15int值可以是对象可见性常量的组合(按位加法),用于设置/获取时间框架对象属性
OBJPROP_DEVIATION16double用于设置/获取标准差对象的偏差属性的双倍值
OBJPROP_FONTSIZE100int用于设置/获取文本对象的字体大小的整数值
OBJPROP_CORNER101int用于设置/获取标签对象的锚点角落的属性整数值。必须是0到3之间。
OBJPROP_XDISTANCE102int用于设置/获取对象锚点X距离属性的值,以像素为单位(参见注释
OBJPROP_YDISTANCE103int用于设置/获取对象锚点Y距离属性的值,以像素为单位(参见注释
OBJPROP_FIBOLEVELS200int用于设置/获取斐波那契对象级别计数的整数值。可以是0到32之间
OBJPROP_LEVELCOLOR201color用于设置/获取对象级别线颜色的颜色值
OBJPROP_LEVELSTYLE202int用于设置/获取对象级别线样式的常量,可以是STYLE_SOLID、STYLE_DASH、STYLE_DOT、STYLE_DASHDOT或STYLE_DASHDOTDOT
OBJPROP_LEVELWIDTH203int用于设置/获取对象级别线宽的整数值。可以是1到5之间
OBJPROP_FIRSTLEVEL+n210+nint用于设置/获取带有索引n的斐波那契对象级别的值的整数值。索引n可以是0(级别数-1),但不超过31

价格图表中的每个图形对象都具有一组特定的属性。对象属性的值由相应的处理图形对象的函数设置和接收。每种对象类型都有自己的一组属性。这里列出了ENUM_OBJECT_PROPERTY枚举家族中所有可能的值。某些属性需要澄清,例如斐波那契扩展对象的级别数。在这种情况下,需要在ObjectSet…()和ObjectGet…()函数中指定修改器参数的值。

对于ObjectSetInteger()ObjectGetInteger()

ENUM_OBJECT_PROPERTY_INTEGER

标识符描述属性类型
OBJPROP_COLOR颜色color
OBJPROP_STYLE样式ENUM_LINE_STYLE
OBJPROP_WIDTH线宽int
OBJPROP_BACK对象在背景中的状态bool
OBJPROP_ZORDER图形对象接收图表点击事件的优先级(CHARTEVENT_CLICK)。创建对象时默认值为零;必要时可以提高优先级。当对象堆叠在一起时,只有优先级最高的一个会接收CHARTEVENT_CLICK事件。long
OBJPROP_HIDDEN禁止在终端菜单“图表”->“对象”->“对象列表”中显示图形对象的名称。真值允许从列表中隐藏对象。默认情况下,显示日历事件、交易历史和由MQL4程序创建的对象的对象的属性设置为真。要查看此类图形对象并访问其属性,请点击“对象列表”窗口中的“全部”按钮。bool
OBJPROP_SELECTED对象被选中bool
OBJPROP_READONLY编辑编辑对象中文本的能力bool
OBJPROP_TYPE对象类型ENUM_OBJECT 只读
OBJPROP_TIME时间坐标datetime 修饰符=锚点数量
OBJPROP_SELECTABLE对象的可用性bool
OBJPROP_CREATETIME对象创建时间datetime 只读
OBJPROP_LEVELS级别数量int
OBJPROP_LEVELCOLOR线级颜色color 修饰符=级别数
OBJPROP_LEVELSTYLE线级的样式ENUM_LINE_STYLE 修饰符=级别数
OBJPROP_LEVELWIDTH线级的厚度int 修饰符=级别数
OBJPROP_ALIGN“编辑”对象中的水平文本对齐方式(OBJ_EDIT)ENUM_ALIGN_MODE
OBJPROP_FONTSIZE字体大小int
OBJPROP_RAY_RIGHT射线向右延伸bool
OBJPROP_ELLIPSE显示斐波那契弧的完整椭圆(OBJ_FIBOARCbool
OBJPROP_ARROWCODE箭头对象的箭头代码uchar
OBJPROP_TIMEFRAMES对象在时间框架中的可见性一组标志flags
OBJPROP_ANCHOR图形对象的锚点位置ENUM_ARROW_ANCHOR(适用于OBJ_ARROW),

ENUM_ANCHOR_POINT(适用于OBJ_LABEL、OBJ_BITMAPLABEL和OBJ_TEXT)
OBJPROP_XDISTANCE从绑定角落沿X轴的距离(参见注释int
OBJPROP_YDISTANCE从绑定角落沿Y轴的距离(参见注释int
OBJPROP_DRAWLINES显示艾略特波浪线标记线bool
OBJPROP_STATE按钮状态(按下/压紧)bool
OBJPROP_XSIZE对象沿X轴的宽度,以像素为单位。适用于OBJ_LABEL(只读)、OBJ_BUTTON、OBJ_BITMAP、OBJ_BITMAPLABEL、OBJ_EDIT、OBJ_RECTANGLE_label对象。int
OBJPROP_YSIZE对象沿Y轴的高度,以像素为单位。适用于OBJ_label(只读)、OBJ_button、OBJ_bitmap、OBJ_bitmap_label、OBJ_EDIT、OBJ_rectangle_label对象。int
OBJPROP_XOFFSET图形对象“Bitmap Label”和“Bitmap”中矩形可见区域的左上角的X坐标(OBJ_BITMAPLABEL和OBJ_bitmap)。该值以像素为单位相对于原始图像的左上角设置。int
OBJPROP_YOFFSET图形对象“Bitmap Label”和“Bitmap”中矩形可见区域的左上角的Y坐标(OBJ_BITMAPLABEL和OBJ_bitmap)。该值以像素为单位相对于原始图像的左上角设置。int
OBJPROP_BGCOLOROBJ_EDIT、OBJ_button、OBJ_rectangle_label的背景颜色color
OBJPROP_CORNER链接图形对象的图表角落ENUM_BASE_CORNER
OBJPROP_BORDER_TYPE“矩形标签”对象的边框类型ENUM_BORDER_TYPE
OBJPROP_BORDER_COLOROBJ_EDIT和OBJ_button对象的边框颜色color

对于OBJ_BITMAPLABELOBJ_BITMAP对象,可以通过编程设置特殊的图像显示模式。在这种模式下,仅显示原始图像的一部分(应用了矩形可见区域),而其余图像变得不可见。使用属性OBJPROP_XSIZE和OBJPROP_YSIZE可以设置该区域的大小。只能使用属性OBJPROP_XOFFSET和OBJPROP_YOFFSET在原始图像内“移动”可见区域。

对于固定大小的对象:OBJ_BUTTONOBJ_RECTANGLE_LABELOBJ_EDIT,属性OBJPROP_XDISTANCE和OBJPROP_YDISTANCE设置对象左上角相对于图表角落的位置(OBJPROP_CORNER),从这一点开始以像素计算X和Y坐标。

对于ObjectSetDouble()ObjectGetDouble()

ENUM_OBJECT_PROPERTY_DOUBLE

标识符描述属性类型
OBJPROP_PRICE价格坐标double 修饰符=锚点数量
OBJPROP_LEVELVALUE级别值double 修饰符=级别数
OBJPROP_SCALE比例(Gann对象、斐波那契弧和椭圆的属性)double
OBJPROP_ANGLE角度。对于没有指定角度的由程序创建的对象,该值等于EMPTY_VALUEdouble
OBJPROP_DEVIATION标准差通道的偏差double

对于ObjectSetString()ObjectGetString()

ENUM_OBJECT_PROPERTY_STRING

标识符描述属性类型
OBJPROP_NAME对象名称string
OBJPROP_TEXT对象的描述(包含在对象中的文本)string
OBJPROP_TOOLTIP工具提示的文本。如果未设置此属性,则显示由终端自动生成的工具提示。可以通过将“\n”(换行符)值设置为该属性来禁用工具提示string
OBJPROP_LEVELTEXT级别描述string 修饰符=级别数
OBJPROP_FONT字体string
OBJPROP_BMPFILE位图标签的BMP文件名称。另请参阅Resourcesstring 修饰符:0状态为开,1状态为关
OBJPROP_SYMBOL图表对象的符号string

对于OBJ_RECTANGLE_label对象(“矩形标签”),可以设置三种设计模式之一,以下ENUM_BORDER_TYPE值对应于此。

ENUM_BORDER_TYPE

标识符描述
BORDER_FLAT扁平形式
BORDER_RAISED突出形式
BORDER_SUNKEN凹形形式

对于OBJ_EDIT对象(“编辑”)和ChartScreenShot()函数,可以使用ENUM_ALIGN_MODE枚举的值指定水平对齐类型。

ENUM_ALIGN_MODE

标识符描述
ALIGN_LEFT左对齐
ALIGN_CENTER居中(仅适用于编辑对象)
ALIGN_RIGHT右对齐

示例:

#define  UP          "\x0431"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string label_name="my_OBJ_LABEL_object";
   if(ObjectFind(0,label_name)<0)
     {
      Print("Object ",label_name," not found. Error code = ",GetLastError());
      //--- create Label object
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);
      //--- set X coordinate
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- set Y coordinate
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      //--- define text color
      ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
      //--- define text for object Label
      ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
      //--- define font
      ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
      //--- define font size
      ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
      //--- 45 degrees rotation clockwise
      ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
      //--- disable for mouse selecting
      ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
      //--- draw it on the chart
      ChartRedraw(0);
     }
  }
最后更新于