Свойства объектов
Графические объекты могут иметь множество свойств в зависимости от типа объекта. Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д. Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов):
В таблице использованы следующие обозначения:
- 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
|
uchar
|
Получает/устанавливает код стрелки объекта 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
|
Код стрелки для объекта "Стрелка"
|
uchar
|
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);
}
} |
|