- Типы объектов и особенности указания их координат
- Объекты с привязкой ко времени и цене
- Объекты с привязкой к экранным координатам
- Создание объектов
- Удаление объектов
- Поиск объектов
- Обзор функций доступа к свойствам объектов
- Основные свойства объектов
- Координаты времени и цены
- Угол окна привязки и экранные координаты
- Определение точки привязки на объекте
- Управление состоянием объекта
- Приоритет объектов (Z-порядок)
- Настройка отображения объекта: цвет, стиль и рамка
- Настройки шрифта
- Поворот текста на произвольный угол
- Определение ширины и высоты объектов
- Видимость объектов в разрезе таймфреймов
- Назначение кода символа для метки
- Свойства лучей для объектов c прямыми линиями
- Управление нажатым состоянием объекта
- Настройка изображений в объектах-картинках
- Кадрирование (вывод части) изображения
- Свойства поля ввода: выравнивание и "только чтение"
- Ширина канала стандартного отклонения
- Настройка уровней в объектах с их поддержкой
- Дополнительные свойства Ганна, Фибоначчи и Эллиота
- Объект-график
- Перемещение объектов
- Получение времени или цены в заданных точках линий
Угол окна привязки и экранные координаты
Для объектов, которые используют систему координат в виде точек (пикселей) на графике, необходимо выбрать один из четырех углов окна, относительно которого будут отсчитываться значения по горизонтальной оси X и вертикальной оси Y до точки привязки на объекте. Этими аспектами управляют свойства из следующей таблицы.
Идентификатор |
Описание |
Тип |
---|---|---|
OBJPROP_CORNER |
Угол графика для привязки графического объекта |
ENUM_BASE_CORNER |
OBJPROP_XDISTANCE |
Дистанция в пикселях по оси X от угла привязки |
int |
OBJPROP_YDISTANCE |
Дистанция в пикселях по оси Y от угла привязки |
int |
Допустимые варианты для OBJPROP_CORNER сведены в перечисление ENUM_BASE_CORNER.
Идентификатор |
Расположение центра координат |
---|---|
CORNER_LEFT_UPPER |
Левый верхний угол окна |
CORNER_LEFT_LOWER |
Левый нижний угол окна |
CORNER_RIGHT_LOWER |
Правый нижний угол окна |
CORNER_RIGHT_UPPER |
Правый верхний угол окна |
По умолчанию используется левый верхний угол.
На следующем рисунке показаны четыре объекта "Кнопка" с одинаковыми размерами и дистанцией до угла привязки в окне. У каждого из этих объектов отличается только сам угол привязки. Напомним, что у кнопок точка привязки одна и всегда расположена в левом верхнем углу кнопки.
Расположение объектов с привязкой к разным углам основного окна
Все 4 объекта в данный момент выделены на графике, поэтому их точки привязки подсвечиваются контрастным цветом.
Когда мы говорим об углах окна, подразумевается конкретное окно или подокно, в котором расположен объект, а не весь график целиком. Иными словами, в объектах в подокнах координата Y отсчитывается от верхней или нижней границы этого подокна.
На следующем рисунке показаны аналогичные объекты в подокне, с привязкой к углам подокна.
Расположение объектов с привязкой к разным углам подокна
С помощью скрипта ObjectCornerLabel.mq5 пользователь может протестировать перемещение текстовой надписи, для которой угол привязки в окне задается во входном параметре Corner.
#property script_show_inputs
|
Координаты периодически изменяются и выводятся в тексте самой надписи. Таким образом, надпись перемещается в окне и при достижении границы отскакивает от неё. Объект создается в том окне или подокне, куда скрипт был брошен мышью.
void OnStart()
|
Для корректного позиционирования мы узнаем размеры окна (и далее проверяем, не изменились ли они) и находим середину для начального размещения объекта: переменные с координатами — x и y.
Далее мы создаем и настраиваем надпись, пока без координат. Важно отметить, что мы включаем возможность выделять объект (OBJPROP_SELECTABLE) и выделяем его (OBJPROP_SELECTED), так как это позволяет увидеть точку привязки на самом объекте, до которой и отсчитывается расстояние от угла окна (центра координат). Более подробно данные два свойства описаны в разделе Управление состоянием объекта.
ObjectCreate(0, name, OBJ_LABEL, t, 0, 0);
|
В переменных px и py будем записывать приращения координат для эмуляции движения. Сама модификации координат будет производиться в бесконечном цикле, пока его не прервет пользователь. Счетчик итераций позволит периодически, на каждой 50 итерации, случайным образом менять направление движения.
int px = 0, py = 0;
|
Попробуйте запустить скрипт несколько раз, указав различные углы привязки.
В следующем разделе мы дополним этот скрипт, управляя также и точкой привязки на объекте.