- Типы объектов и особенности указания их координат
- Объекты с привязкой ко времени и цене
- Объекты с привязкой к экранным координатам
- Создание объектов
- Удаление объектов
- Поиск объектов
- Обзор функций доступа к свойствам объектов
- Основные свойства объектов
- Координаты времени и цены
- Угол окна привязки и экранные координаты
- Определение точки привязки на объекте
- Управление состоянием объекта
- Приоритет объектов (Z-порядок)
- Настройка отображения объекта: цвет, стиль и рамка
- Настройки шрифта
- Поворот текста на произвольный угол
- Определение ширины и высоты объектов
- Видимость объектов в разрезе таймфреймов
- Назначение кода символа для метки
- Свойства лучей для объектов c прямыми линиями
- Управление нажатым состоянием объекта
- Настройка изображений в объектах-картинках
- Кадрирование (вывод части) изображения
- Свойства поля ввода: выравнивание и "только чтение"
- Ширина канала стандартного отклонения
- Настройка уровней в объектах с их поддержкой
- Дополнительные свойства Ганна, Фибоначчи и Эллиота
- Объект-график
- Перемещение объектов
- Получение времени или цены в заданных точках линий
Перемещение объектов
Для перемещения объектов в координатах время/цена можно использовать не только ObjectSet-функции изменения свойств, но и специальную функцию ObjectMove — она изменяет координаты указанной точки привязки объекта.
bool ObjectMove(long chartId, const string name, int index, datetime time, double price)
Параметр chartId задает идентификатор графика (0 — текущий график). Имя объекта передается в параметре name. Номер точки привязки и координаты указываются в параметрах index, time и price, соответственно.
Функция использует асинхронный вызов, то есть отправляет команду в очередь событий графика и не дожидается самого перемещения.
Функция возвращает признак того, была ли команда успешно поставлена в очередь (в этом случае результат равен true). О фактическом положении объекта следует узнавать с помощью вызовов ObjectGet-функций.
Модифицируем в индикаторе ObjectHighLowFibo.mq5 функцию DrawFibo таким образом, чтобы задействовать ObjectMove. Вместо двух вызовов ObjectSet-функций в цикле по точкам привязки теперь будет один вызов ObjectMove:
bool DrawFibo(const string name, const datetime &t[], const double &p[],
|
Функцию ObjectMove имеет смысл применять, где меняются обе координаты точки привязки. В некоторых случаях эффект имеет лишь одна координата (например, в каналах стандартного отклонения и линейной регрессии в точках привязки важны только начальная и конечная даты/время, а значение цен в этих точках каналы рассчитывают автоматически) — тогда единственный вызов ObjectSet-функции более уместен, чем ObjectMove.