Skip to content

Object Properties

Object Properties

Graphical objects can have various properties depending on the object type. Values of object properties are set up and received by corresponding functions for working with graphical objects.

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):

ObjectIDX/YWidth/HeightDate/PriceOBJPROP_CORNEROBJPROP_ANCHOROBJPROP_ANGLE
TextOBJ_TEXTYesYesYes
LabelOBJ_LABELYesYes (read only)YesYesYes
ButtonOBJ_BUTTONYesYesYes
BitmapOBJ_BITMAPYes (read only)YesYes
Bitmap LabelOBJ_BITMAP_LABELYesYes (read only)YesYes
EditOBJ_EDITYesYesYes
Rectangle LabelOBJ_RECTANGLE_LABELYesYesYes

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.

The functions defining the properties of graphical objects, as well as ObjectCreate() and ObjectMove() operations for creating and moving objects along the chart are actually used for sending commands to the chart. If these functions are executed successfully, the command is included in the common queue of the chart events. Visual changes in the properties of graphical objects are implemented when handling the queue of the chart events.

Thus, do not expect an immediate visual update of graphical objects after calling these functions. Generally, the graphical objects on the chart are updated automatically by the terminal following the change events - a new quote arrival, resizing the chart window, etc. Use ChartRedraw() function to forcefully update the graphical objects.

For functions ObjectSetInteger() and ObjectGetInteger()

ENUM_OBJECT_PROPERTY_INTEGER

IdentifierDescriptionProperty Type
OBJPROP_COLORColorcolor
OBJPROP_STYLEStyleENUM_LINE_STYLE
OBJPROP_WIDTHLine thicknessint
OBJPROP_BACKObject in the backgroundbool
OBJPROP_ZORDERPriority 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_FILLFill an object with color (for OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL, OBJ_REGRESSION)bool
OBJPROP_HIDDENProhibit 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 MQL5 programs. To see such graphical objects and access their properties, click on the “All” button in the “List of objects” window.bool
OBJPROP_SELECTEDObject is selectedbool
OBJPROP_READONLYAbility to edit text in the Edit objectbool
OBJPROP_TYPEObject typeENUM_OBJECT r/o
OBJPROP_TIMETime coordinatedatetime modifier=number of anchor point
OBJPROP_SELECTABLEObject availabilitybool
OBJPROP_CREATETIMETime of object creationdatetime r/o
OBJPROP_LEVELSNumber of levelsint
OBJPROP_LEVELCOLORColor of the line-levelcolor modifier=level number
OBJPROP_LEVELSTYLEStyle of the line-levelENUM_LINE_STYLE modifier=level number
OBJPROP_LEVELWIDTHThickness of the line-levelint modifier=level number
OBJPROP_ALIGNHorizontal text alignment in the “Edit” object (OBJ_EDIT)ENUM_ALIGN_MODE
OBJPROP_FONTSIZEFont sizeint
OBJPROP_RAY_LEFTRay goes to the leftbool
OBJPROP_RAY_RIGHTRay goes to the rightbool
OBJPROP_RAYA vertical line goes through all the windows of a chartbool
OBJPROP_ELLIPSEShowing the full ellipse of the Fibonacci Arc object (OBJ_FIBOARC)bool
OBJPROP_ARROWCODEArrow code for the Arrow objectuchar
OBJPROP_TIMEFRAMESVisibility of an object at timeframesset of flags flags
OBJPROP_ANCHORLocation of the anchor point of a graphical objectENUM_ARROW_ANCHOR (for OBJ_ARROW),

ENUM_ANCHOR_POINT (for OBJ_LABEL, OBJ_BITMAP_LABEL and OBJ_TEXT)
OBJPROP_XDISTANCEThe distance in pixels along the X axis from the binding corner (see note)int
OBJPROP_YDISTANCEThe distance in pixels along the Y axis from the binding corner (see note)int
OBJPROP_DIRECTIONTrend of the Gann objectENUM_GANN_DIRECTION
OBJPROP_DEGREELevel of the Elliott Wave MarkingENUM_ELLIOT_WAVE_DEGREE
OBJPROP_DRAWLINESDisplaying lines for marking the Elliott Wavebool
OBJPROP_STATEButton state (pressed / depressed)bool
OBJPROP_CHART_IDID of the “Chart” object (OBJ_CHART). It allows working with the properties of this object like with a normal chart using the functions described in Chart Operations, but there some exceptions.long r/o
OBJPROP_XSIZEThe object’s width along the X axis in pixels. Specified for OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL objects.int
OBJPROP_YSIZEThe object’s height along the Y axis in pixels. Specified for OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL objects.int
OBJPROP_XOFFSETThe 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_YOFFSETThe 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_PERIODTimeframe for the Chart objectENUM_TIMEFRAMES
OBJPROP_DATE_SCALEDisplaying the time scale for the Chart objectbool
OBJPROP_PRICE_SCALEDisplaying the price scale for the Chart objectbool
OBJPROP_CHART_SCALEThe scale for the Chart objectint value in the range 0–5
OBJPROP_BGCOLORThe background color for OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABELcolor
OBJPROP_CORNERThe corner of the chart to link a graphical objectENUM_BASE_CORNER
OBJPROP_BORDER_TYPEBorder type for the “Rectangle label” objectENUM_BORDER_TYPE
OBJPROP_BORDER_COLORBorder color for the OBJ_EDIT and OBJ_BUTTON objectscolor

When using chart operations for the “Chart” object (OBJ_CHART), the following limitations are imposed:

You can set a special mode of image display for OBJ_BITMAP_LABEL and OBJ_BITMAPobjects. 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, OBJ_EDIT and OBJ_CHART, 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

IdentifierDescriptionProperty Type
OBJPROP_PRICEPrice coordinatedouble modifier=number of anchor point
OBJPROP_LEVELVALUELevel valuedouble modifier=level number
OBJPROP_SCALEScale (properties of Gann objects and Fibonacci Arcs)double
OBJPROP_ANGLEAngle. For the objects with no angle specified, created from a program, the value is equal to EMPTY_VALUEdouble
OBJPROP_DEVIATIONDeviation for the Standard Deviation Channeldouble

For functions ObjectSetString() and ObjectGetString()

ENUM_OBJECT_PROPERTY_STRING

IdentifierDescriptionProperty Type
OBJPROP_NAMEObject namestring
OBJPROP_TEXTDescription of the object (the text contained in the object)string
OBJPROP_TOOLTIPThe 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 itstring
OBJPROP_LEVELTEXTLevel descriptionstring modifier=level number
OBJPROP_FONTFontstring
OBJPROP_BMPFILEThe name of BMP-file for Bitmap Label. See also Resourcesstring modifier: 0-state ON, 1-state OFF
OBJPROP_SYMBOLSymbol for the Chart objectstring

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

IdentifierDescription
BORDER_FLATFlat form
BORDER_RAISEDProminent form
BORDER_SUNKENConcave 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

IdentifierDescription
ALIGN_LEFTLeft alignment
ALIGN_CENTERCentered (only for the Edit object)
ALIGN_RIGHTRight 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);
     }
  }
Last updated on