Русский

Справочник MQL4 Стандартные константы, перечисления и структуры Константы объектов Свойства объектов

Свойства объектов

Графические объекты могут иметь множество свойств в зависимости от типа объекта. Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д.  Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов):

Объект

Идентификатор

X/Y

Width/Height

Date/Price

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

Text

OBJ_TEXT

Да

Да

Да

Label

OBJ_LABEL

Да

Да (только для чтения)

Да

Да

Да

Button

OBJ_BUTTON

Да

Да

Да

Bitmap

OBJ_BITMAP

Да (только для чтения)

Да

Да

Bitmap Label

OBJ_BITMAP_LABEL

Да

Да (только для чтения)

Да

Да

Edit

OBJ_EDIT

Да

Да

Да

Rectangle Label

OBJ_RECTANGLE_LABEL

Да

Да

Да

В таблице использованы следующие обозначения:

  • X/Y – координаты точки привязки задаются в пикселях относительно одного из углов графика;
  • Width/Height – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты вычисляются только после отрисовки объекта на графике;
  • Date/Price – координаты точки привязки задаются парой дата/цена;
  • OBJPROP_CORNER – задаёт угол графика, относительно которого указываются координаты точки привязки. Может быть одним из 4-х значений перечисления ENUM_BASE_CORNER;
  • OBJPROP_ANCHOR – задаёт положение точки привязки в самом объекте, и может быть одним из 9-ти значений перечисления ENUM_ANCHOR_POINT. Именно от этой точки до выбранного угла графика указываются координаты в пикселях;
  • OBJPROP_ANGLE – задаёт угол поворота объекта против часовой стрелки.

 

Идентификаторы свойств объекта используются в функциях ObjectGet() и ObjectSet(). Могут быть любыми из следующих величин.

Константа

Значение

Тип

Описание

OBJPROP_TIME1

0

datetime

Получает/устанавливает первую координату времени

OBJPROP_PRICE1

1

double

Получает/устанавливает первую координату цены

OBJPROP_TIME2

2

datetime

Получает/устанавливает вторую координату времени

OBJPROP_PRICE2

3

double

Получает/устанавливает вторую координату цены

OBJPROP_TIME3

4

datetime

Получает/устанавливает третью координату времени

OBJPROP_PRICE3

5

double

Получает/устанавливает третью координату цены

OBJPROP_COLOR

6

color

Получает/устанавливает цвет объекта

OBJPROP_STYLE

7

int

Получает/устанавливает стиль линии объекта

OBJPROP_WIDTH

8

int

Получает/устанавливает ширину линии объекта

OBJPROP_BACK

9

bool

Получает/устанавливает флаг фонового отображения объекта

OBJPROP_RAY

10

bool

Получает/устанавливает флаг свойства луч для объектов типа OBJ_TREND и ему подобных

OBJPROP_ELLIPSE

11

bool

Получает/устанавливает флаг отображения полного эллипса для объекта OBJ_FIBOARC

OBJPROP_SCALE

12

double

Получает/устанавливает значение масштаба объекта

OBJPROP_ANGLE

13

double

Получает/устанавливает значение угла в градусах объекта OBJ_TRENDBYANGLE

OBJPROP_ARROWCODE

14

int

Получает/устанавливает код стрелки объекта OBJ_ARROW. Может быть одним из символов wingdings или один из предопределенных кодов стрелок

OBJPROP_TIMEFRAMES

15

int

Получает/устанавливает свойство отображения объекта на различных периодах. Может быть одним или комбинацией нескольких из констант видимости объекта

OBJPROP_DEVIATION

16

double

Получает/устанавливает размер отклонения для объекта OBJ_STDDEVCHANNEL

OBJPROP_FONTSIZE

100

int

Получает/устанавливает размер шрифта для объектов OBJ_TEXT и OBJ_LABEL

OBJPROP_CORNER

101

int

Получает/устанавливает номер угла привязки для объекта OBJ_LABEL. Принимает значения 0-3

OBJPROP_XDISTANCE

102

int

Получает/устанавливает расстояние X-координаты в пикселях относительно угла привязки (см. примечание)

OBJPROP_YDISTANCE

103

int

Получает/устанавливает расстояние Y-координаты в пикселях относительно угла привязки (см. примечание)

OBJPROP_FIBOLEVELS

200

int

Получает/устанавливает число уровней объекта Fibonacci. Может быть от 1 до 32

OBJPROP_LEVELCOLOR

201

color

Получает/устанавливает цвет линии уровня объекта

OBJPROP_LEVELSTYLE

202

int

Получает/устанавливает стиль линии уровня объекта

OBJPROP_LEVELWIDTH

203

int

Получает/устанавливает ширину линии уровня объекта

OBJPROP_FIRSTLEVEL+n

210+n

int

Получает/устанавливает значения уровня объекта Fibonacci с индексом n. Индекс n может быть от 0 до (количество уровней -1), но не более 31

 

Каждый графический объект на графике цен имеет некоторый набор свойств. Установка и получение значений свойств объектов производится соответствующими функциями по работе с графическими объектами. Для каждого типа объекта есть свой набор свойств, здесь перечислены все возможные значения из семейства перечислений ENUM_OBJECT_PROPERTY. Некоторые свойства требуют уточнения, как например, номер уровня для объекта расширения Фибоначчи. В таких случаях необходимо в функциях ObjectSet...() и ObjectGet...() указывать значение параметра modifier.

Для функций 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

Запрет на показ имени графического объекта в списке объектов из меню терминала "Графики" - "Объекты" - "Список объектов". Значение true позволяет скрыть ненужный для пользователя объект из списка. По умолчанию true устанавливается для объектов, которые отображают события календаря, историю торговли, а также для созданных из MQL5-программы. Для того чтобы увидеть такие графические объекты и получить доступ к их свойствам, нужно нажать кнопку "Все" в окне "Список объектов".

bool

OBJPROP_SELECTED

Выделенность объекта

bool

OBJPROP_READONLY

Возможность редактирования текста в объекте Edit

bool

OBJPROP_TYPE

Тип объекта

ENUM_OBJECT   r/o

OBJPROP_TIME

Координата времени

datetime   модификатор=номер точки привязки

OBJPROP_SELECTABLE

Доступность объекта

bool

OBJPROP_CREATETIME

Время создания объекта

datetime    r/o

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

bool

OBJPROP_ARROWCODE

Код стрелки для объекта "Стрелка"

char

OBJPROP_TIMEFRAMES

Видимость объекта на таймфреймах

набор флагов flags

OBJPROP_ANCHOR

Положение точки привязки графического объекта

ENUM_ARROW_ANCHOR (для OBJ_ARROW),

ENUM_ANCHOR_POINT (для OBJ_LABEL, OBJ_BITMAP_LABEL и OBJ_TEXT)

OBJPROP_XDISTANCE

Дистанция в пикселях по оси X от угла привязки (см. примечание)

int

OBJPROP_YDISTANCE

Дистанция в пикселях по оси Y от угла привязки (см. примечание)

int

OBJPROP_DRAWLINES

Отображение линий для волновой разметки Эллиота

bool

OBJPROP_STATE

Состояние кнопки (Нажата/Отжата)

bool

OBJPROP_XSIZE

Ширина объекта по оси X в пикселях. Задается для объектов OBJ_LABEL (read-only), OBJ_BUTTON, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_YSIZE

Высота объекта по оси Y в пикселях. Задается для объектов OBJ_LABEL (read-only), OBJ_BUTTON, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_XOFFSET

X-координата левого верхнего угла прямоугольной области видимости  в графических объектах "Графическая метка" и "Рисунок" (OBJ_BITMAP_LABEL и OBJ_BITMAP). Значение задается в пикселях относительного верхнего левого угла исходного изображения.

int

OBJPROP_YOFFSET

Y-координата левого верхнего угла прямоугольной области видимости  в графических объектах "Графическая метка" и "Рисунок" (OBJ_BITMAP_LABEL и OBJ_BITMAP). Значение задается в пикселях относительного верхнего левого угла исходного изображения.

int

OBJPROP_BGCOLOR

Цвет фона для OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL

color

OBJPROP_CORNER

Угол графика для привязки графического объекта

ENUM_BASE_CORNER

OBJPROP_BORDER_TYPE

Тип рамки для объекта "Прямоугольная рамка"

ENUM_BORDER_TYPE

OBJPROP_BORDER_COLOR

Цвет рамки для объекта OBJ_EDIT и OBJ_BUTTON

color

 

Для объектов OBJ_BITMAP_LABEL и OBJ_BITMAP программным путем можно установить специальный режим показа изображения. В этом режиме показывается только та часть исходного изображения, на которую накладывается прямоугольная область видимости, остальная часть картинки становится невидимой. Размеры области видимости необходимо установить с помощью свойств OBJPROP_XSIZE и OBJPROP_YSIZE. Область видимости можно "перемещать" только в пределах исходного изображения с помощью  свойств OBJPROP_XOFFSET и OBJPROP_YOFFSET.

 

Для объектов с фиксированными размерами: OBJ_BUTTON, OBJ_RECTANGLE_LABEL и OBJ_EDIT свойства OBJPROP_XDISTANCE и OBJPROP_YDISTANCE задают положение левой верхней точки объекта относительно угла графика (OBJPROP_CORNER), от которого будут отсчитываться координаты X и Y в пикселях.

 

Для функций ObjectSetDouble() и ObjectGetDouble()

ENUM_OBJECT_PROPERTY_DOUBLE

Идентификатор

Описание

Тип свойства

OBJPROP_PRICE

Координата цены

double    модификатор=номер точки привязки

OBJPROP_LEVELVALUE

Значение уровня

double    модификатор=номер уровня

OBJPROP_SCALE

Масштаб (свойство объектов Ганна, "Эллипс" и "Дуги Фибоначчи")

double

OBJPROP_ANGLE

Угол. Для объектов с еще не заданным углом, созданных из программы, значение равно EMPTY_VALUE

double

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-файла для объекта "Графическая метка". Смотри также Ресурсы

string   модификатор: 0-состояние ON, 1-состояние OFF

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());
      //--- создадим объект Label
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);           
      //--- установим координату X
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- установим координату Y
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      //--- зададим цвет текста
      ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
      //--- установим текст для объекта Label
      ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
      //--- установим шрифт надписи
      ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
      //--- установим размер шрифта
      ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
      //--- повернем на 45 градусов по часовой стрелке
      ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
      //--- запретим выделение объекта мышкой
      ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
      //--- отрисуем на графике
      ChartRedraw(0);                                      
     }
  }