MQL4参考 标准常量,列举和架构 对象常量 对象属性

Object Properties

Graphical objects can have various properties depending on the object type. All objects used in technical analysis are bound to the time and price coordinates: trendline, channels, Fibonacci tools, etc. But there is a number of auxiliary objects intended to improve the user interface that are bound to the always visible part of a chart (main chart windows or indicator subwindows):

Object

ID

X/Y

Width/Height

Date/Price

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

Text

OBJ_TEXT

Yes

Yes

Yes

Label

OBJ_LABEL

Yes

Yes (read only)

Yes

Yes

Yes

Button

OBJ_BUTTON

Yes

Yes

Yes

Bitmap

OBJ_BITMAP

Yes (read only)

Yes

Yes

Bitmap Label

OBJ_BITMAP_LABEL

Yes

Yes (read only)

Yes

Yes

Edit

OBJ_EDIT

Yes

Yes

Yes

Rectangle Label

OBJ_RECTANGLE_LABEL

Yes

Yes

Yes

The following designations are used in the table:

  • X/Y - coordinates of anchor points specified in pixels relative to a chart corner;
  • Width/Height - objects have width and height. For "read only", the width and height values are calculated only once the object is rendered on chart;
  • Date/Price - anchor point coordinates are specified using the date and price values;
  • OBJPROP_CORNER - defines the chart corner relative to which the anchor point coordinates are specified. Can be one of the 4 values of the ENUM_BASE_CORNER enumeration;
  • OBJPROP_ANCHOR - defines the anchor point in object itself and can be one of the 9 values of the ENUM_ANCHOR_POINT enumeration. Coordinates in pixels are specified from this very point to selected chart corner;
  • OBJPROP_ANGLE - defines the object rotation angle counterclockwise.

 

Object value index used with ObjectGet() and ObjectSet() functions. It can be any of the following values:

ID

Value

Type

Description

OBJPROP_TIME1

0

datetime

Datetime value to set/get first coordinate time part

OBJPROP_PRICE1

1

double

Double value to set/get first coordinate price part

OBJPROP_TIME2

2

datetime

Datetime value to set/get second coordinate time part

OBJPROP_PRICE2

3

double

Double value to set/get second coordinate price part

OBJPROP_TIME3

4

datetime

Datetime value to set/get third coordinate time part

OBJPROP_PRICE3

5

double

Double value to set/get third coordinate price part

OBJPROP_COLOR

6

color

Color value to set/get object color

OBJPROP_STYLE

7

int

Value is one of STYLE_SOLID, STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT constants to set/get object line style

OBJPROP_WIDTH

8

int

Integer value to set/get object line width. Can be from 1 to 5

OBJPROP_BACK

9

bool

Boolean value to set/get background drawing flag for object

OBJPROP_RAY

10

bool

Boolean value to set/get ray flag of object.

OBJPROP_ELLIPSE

11

bool

Boolean value to set/get ellipse flag for fibo arcs

OBJPROP_SCALE

12

double

Double value to set/get scale object property

OBJPROP_ANGLE

13

double

Double value to set/get angle object property in degrees

OBJPROP_ARROWCODE

14

uchar

Integer value or arrow enumeration to set/get arrow code object property

OBJPROP_TIMEFRAMES

15

int

Value can be one or combination (bitwise addition) of object visibility constants to set/get timeframe object property

OBJPROP_DEVIATION

16

double

Double value to set/get deviation property for Standard deviation objects

OBJPROP_FONTSIZE

100

int

Integer value to set/get font size for text objects

OBJPROP_CORNER

101

int

Integer value to set/get anchor corner property for label objects. Must be from 0-3.

OBJPROP_XDISTANCE

102

int

Integer value to set/get anchor X distance object property in pixels (see note)

OBJPROP_YDISTANCE

103

int

Integer value is to set/get anchor Y distance object property in pixels (see note)

OBJPROP_FIBOLEVELS

200

int

Integer value to set/get Fibonacci object level count. Can be from 0 to 32

OBJPROP_LEVELCOLOR

201

color

Color value to set/get object level line color

OBJPROP_LEVELSTYLE

202

int

Value is one of STYLE_SOLID, STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT constants to set/get object level line style

OBJPROP_LEVELWIDTH

203

int

Integer value to set/get object level line width. Can be from 1 to 5

OBJPROP_FIRSTLEVEL+n

210+n

int

Integer value to set/get the value of Fibonacci object level with index n. Index n can be from 0 (number of levels -1), but not larger than 31

 

Every graphical object in a price chart has a certain set of properties. Values of object properties are set up and received by corresponding functions for working with graphical objects. For each object type there is its own set of properties. Here all possible values from the ENUM_OBJECT_PROPERTY enumeration family are listed. Some properties require clarification, such as the level number for the Fibonacci extension object. In such cases it is necessary to specify the value of the modifier parameter in the functions of ObjectSet...() and ObjectGet...().

For functions ObjectSetInteger() and ObjectGetInteger()

ENUM_OBJECT_PROPERTY_INTEGER

Identifier

Description

Property Type

OBJPROP_COLOR

Color

color

OBJPROP_STYLE

Style

ENUM_LINE_STYLE

OBJPROP_WIDTH

Line thickness

int

OBJPROP_BACK

Object in the background

bool

OBJPROP_ZORDER

Priority of a graphical object for receiving events of clicking on a chart (CHARTEVENT_CLICK). The default zero value is set when creating an object; the priority can be increased if necessary. When objects are placed one atop another, only one of them with the highest priority will receive the CHARTEVENT_CLICK event.

long

OBJPROP_HIDDEN

Prohibit showing of the name of a graphical object in the list of objects from the terminal menu "Charts" - "Objects" - "List of objects". The true value allows to hide an object from the list. By default, true is set to the objects that display calendar events, trading history and to the objects created from MQL4 programs. To see such graphical objects and access their properties, click on the "All" button in the "List of objects" window.

bool

OBJPROP_SELECTED

Object is selected

bool

OBJPROP_READONLY

Ability to edit text in the Edit object

bool

OBJPROP_TYPE

Object type

ENUM_OBJECT   r/o

OBJPROP_TIME

Time coordinate

datetime   modifier=number of anchor point

OBJPROP_SELECTABLE

Object availability

bool

OBJPROP_CREATETIME

Time of object creation

datetime    r/o

OBJPROP_LEVELS

Number of levels

int

OBJPROP_LEVELCOLOR

Color of the line-level

color   modifier=level number

OBJPROP_LEVELSTYLE

Style of the line-level

ENUM_LINE_STYLE modifier=level number

OBJPROP_LEVELWIDTH

Thickness of the line-level

int      modifier=level number

OBJPROP_ALIGN

Horizontal text alignment in the "Edit" object (OBJ_EDIT)

ENUM_ALIGN_MODE

OBJPROP_FONTSIZE

Font size

int

OBJPROP_RAY_RIGHT

Ray goes to the right

bool

OBJPROP_ELLIPSE

Showing the full ellipse of the Fibonacci Arc object (OBJ_FIBOARC)

bool

OBJPROP_ARROWCODE

Arrow code for the Arrow object

uchar

OBJPROP_TIMEFRAMES

Visibility of an object at timeframes

set of flags flags

OBJPROP_ANCHOR

Location of the anchor point of a graphical object

ENUM_ARROW_ANCHOR (for OBJ_ARROW),

ENUM_ANCHOR_POINT (for OBJ_LABEL, OBJ_BITMAP_LABEL and OBJ_TEXT)

OBJPROP_XDISTANCE

The distance in pixels along the X axis from the binding corner (see note)

int

OBJPROP_YDISTANCE

The distance in pixels along the Y axis from the binding corner (see note)

int

OBJPROP_DRAWLINES

Displaying lines for marking the Elliott Wave

bool

OBJPROP_STATE

Button state (pressed / depressed)

bool

OBJPROP_XSIZE

The object's width along the X axis in pixels. Specified for  OBJ_LABEL (read only), OBJ_BUTTON, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL objects.

int

OBJPROP_YSIZE

The object's height along the Y axis in pixels. Specified for  OBJ_LABEL (read only), OBJ_BUTTON, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL objects.

int

OBJPROP_XOFFSET

The X coordinate of the upper left corner of the rectangular visible area in the graphical objects "Bitmap Label" and "Bitmap" (OBJ_BITMAP_LABEL and OBJ_BITMAP). The value is set in pixels relative to the upper left corner of the original image.

int

OBJPROP_YOFFSET

The Y coordinate of the upper left corner of the rectangular visible area in the graphical objects "Bitmap Label" and "Bitmap" (OBJ_BITMAP_LABEL and OBJ_BITMAP). The value is set in pixels relative to the upper left corner of the original image.

int

OBJPROP_BGCOLOR

The background color for  OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL

color

OBJPROP_CORNER

The corner of the chart to link a graphical object

ENUM_BASE_CORNER

OBJPROP_BORDER_TYPE

Border type for the "Rectangle label" object

ENUM_BORDER_TYPE

OBJPROP_BORDER_COLOR

Border color for the OBJ_EDIT and OBJ_BUTTON objects

color

 

For objects OBJ_BITMAP_LABEL and OBJ_BITMAP, a special mode of image display can be set programmatically. In this mode, only part of an original image (at which a rectangular visible area is applied) is displayed, while the rest of the image becomes invisible. The size of this area should be set using the properties OBJPROP_XSIZE and OBJPROP_YSIZE. The visible area can be "moved" only within the original image using the properties OBJPROP_XOFFSET and OBJPROP_YOFFSET.

For the fixed-sized objects: OBJ_BUTTON, OBJ_RECTANGLE_LABEL and OBJ_EDIT, properties OBJPROP_XDISTANCE and OBJPROP_YDISTANCE set the position of the top left point of the object relative to the chart corner (OBJPROP_CORNER), from which the X and Y coordinates will be counted in pixels.

For functions ObjectSetDouble() and ObjectGetDouble()

ENUM_OBJECT_PROPERTY_DOUBLE

Identifier

Description

Property Type

OBJPROP_PRICE

Price coordinate

double    modifier=number of anchor point

OBJPROP_LEVELVALUE

Level value

double    modifier=level number

OBJPROP_SCALE

Scale (properties of Gann objects, Fibonacci Arcs and Ellipse)

double

OBJPROP_ANGLE

Angle.  For the objects with no angle specified, created from a program, the value is equal to EMPTY_VALUE

double

OBJPROP_DEVIATION

Deviation for the Standard Deviation Channel

double

 

For functions ObjectSetString() and ObjectGetString()

ENUM_OBJECT_PROPERTY_STRING

Identifier

Description

Property Type

OBJPROP_NAME

Object name

string

OBJPROP_TEXT

Description of the object (the text contained in the object)

string

OBJPROP_TOOLTIP

The text of a tooltip. If the property is not set, then the tooltip generated automatically by the terminal is shown. A tooltip can be disabled by setting the "\n" (line feed) value to it

string

OBJPROP_LEVELTEXT

Level description

string    modifier=level number

OBJPROP_FONT

Font

string

OBJPROP_BMPFILE

The name of BMP-file for Bitmap Label. See also Resources

string    modifier: 0-state ON, 1-state OFF

OBJPROP_SYMBOL

Symbol for the Chart object

string

 

For the OBJ_RECTANGLE_LABEL object ("Rectangle label") one of the three design modes can be set, to which the following values of ENUM_BORDER_TYPE correspond.

ENUM_BORDER_TYPE

Identifier

Description

BORDER_FLAT

Flat form

BORDER_RAISED

Prominent form

BORDER_SUNKEN

Concave form

 

For the OBJ_EDIT object ("Edit") and for the ChartScreenShot()function, you can specify the horizontal alignment type using the values of the ENUM_ALIGN_MODE enumeration.

ENUM_ALIGN_MODE

Identifier

Description

ALIGN_LEFT

Left alignment

ALIGN_CENTER

Centered (only for the Edit object)

ALIGN_RIGHT

Right alignment

Example:

#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);                                      
     }
  }