Предусмотрено 44 графических объекта, которые можно создавать и отображать на ценовом графике. Все константы для работы с объектами разбиты на 9 групп:
- Типы объектов – идентификаторы графических объектов;
- Свойства объектов – работа со свойствами графических объектов;
- Способы привязки объектов – константы позиционирования объектов на графике;
- Угол привязки – позволяет установить угла графика, относительно которого производится позиционирование объекта в пикселях;
- Видимость объектов – задание таймфреймов, на которых объект является видимым;
- Уровни волн Эллиотта – градация волновой разметки;
- Объекты Ганна – константы тренда для веера Ганна и сетки Ганна;
- Набор Web-цветов – константы предопределенных Web-цветов;
- Wingdings – коды символов шрифта Wingdings.
Типы объектов
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
ENUM_OBJECT
| Идентификатор |
| Описание |
| OBJ_VLINE |
| Вертикальная линия |
| OBJ_HLINE |
| Горизонтальная линия |
| OBJ_TREND |
| Трендовая линия |
| OBJ_TRENDBYANGLE |
| Трендовая линия по углу |
| OBJ_CYCLES |
| Циклические линии |
| OBJ_ARROWED_LINE |
| Объект «Линия со стрелкой» |
| OBJ_CHANNEL |
| Равноудаленный канал |
| OBJ_STDDEVCHANNEL |
| Канал стандартного отклонения |
| OBJ_REGRESSION |
| Канал на линейной регрессии |
| OBJ_PITCHFORK |
| Вилы Эндрюса |
| OBJ_GANNLINE |
| Линия Ганна |
| OBJ_GANNFAN |
| Веер Ганна |
| OBJ_GANNGRID |
| Сетка Ганна |
| OBJ_FIBO |
| Уровни Фибоначчи |
| OBJ_FIBOTIMES |
| Временные зоны Фибоначчи |
| OBJ_FIBOFAN |
| Веер Фибоначчи |
| OBJ_FIBOARC |
| Дуги Фибоначчи |
| OBJ_FIBOCHANNEL |
| Канал Фибоначчи |
| OBJ_EXPANSION |
| Расширение Фибоначчи |
| OBJ_ELLIOTWAVE5 |
| 5-волновка Эллиота |
| OBJ_ELLIOTWAVE3 |
| 3-волновка Эллиота |
| OBJ_RECTANGLE |
| Прямоугольник |
| OBJ_TRIANGLE |
| Треугольник |
| OBJ_ELLIPSE |
| Эллипс |
| OBJ_ARROW_THUMB_UP |
| Знак «Хорошо» (большой палец вверх) |
| OBJ_ARROW_THUMB_DOWN |
| Знак «Плохо» (большой палец вниз) |
| OBJ_ARROW_UP |
| Знак «Стрелка вверх» |
| OBJ_ARROW_DOWN |
| Знак «Стрелка вниз» |
| OBJ_ARROW_STOP |
| Знак «Стоп» |
| OBJ_ARROW_CHECK |
| Знак «Птичка» (галка) |
| OBJ_ARROW_LEFT_PRICE |
| Левая ценовая метка |
| OBJ_ARROW_RIGHT_PRICE |
| Правая ценовая метка |
| OBJ_ARROW_BUY |
| Знак «Buy» |
| OBJ_ARROW_SELL |
| Знак «Sell» |
| OBJ_ARROW |
| Объект «Стрелка» |
| OBJ_TEXT |
| Объект «Текст» |
| OBJ_LABEL |
| Объект «Текстовая метка» |
| OBJ_BUTTON |
| Объект «Кнопка» |
| OBJ_CHART |
| Объект «График» |
| OBJ_BITMAP |
| Объект «Рисунок» |
| OBJ_BITMAP_LABEL |
| Объект «Графическая метка» |
| OBJ_EDIT |
| Объект «Поле ввода» |
| OBJ_EVENT |
| Объект «Событие», соответствующий событию в экономическом календаре |
| OBJ_RECTANGLE_LABEL |
| Объект «Прямоугольная метка»для создания и оформления пользовательского графического интерфейса. |
Свойства объектов
Графические объекты могут иметь множество свойств в зависимости от типа объекта. Установка и получение значений свойств объектов производится соответствующими функциями по работе с графическими объектами.
Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д. Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов):
| Объект | Идентификатор | 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 – задаёт угол поворота объекта против часовой стрелки.
Функции, задающие свойства графических объектов, а также операции создания ObjectCreate() и перемещения ObjectMove() объектов на графике фактически служат для отправки команд графику. При успешном выполнении этих функций команда попадает в общую очередь событий графика. Визуальное изменение свойств графических объектов производится в процессе обработки очереди событий данного графика.
По этой причине не следует ожидать немедленного визуального обновления графических объектов после вызова данных функций. В общем случае обновление графических объектов на чарте производится терминалом автоматически по событиям изменения — поступление новой котировки, изменения размера окна графика и т.д. Для принудительного обновления графических объектов используйте команду на перерисовку графика ChartRedraw().
Для функций 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_FILL | Заливка объекта цветом (для OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL, OBJ_REGRESSION) | bool |
| 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_LEFT | Луч продолжается влево | bool |
| OBJPROP_RAY_RIGHT | Луч продолжается вправо | bool |
| OBJPROP_RAY | Вертикальная линия продолжается на все окна графика | 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_DIRECTION | Тренд объекта Ганна | ENUM_GANN_DIRECTION |
| OBJPROP_DEGREE | Уровень волновой разметки Эллиота | ENUM_ELLIOT_WAVE_DEGREE |
| OBJPROP_DRAWLINES | Отображение линий для волновой разметки Эллиота | bool |
| OBJPROP_STATE | Состояние кнопки (Нажата/Отжата) | bool |
| OBJPROP_CHART_ID | Идентификатор объекта «График» (OBJ_CHART). Позволяет работать со свойствами этого объекта как с обычным графиком с помощью функций из раздела Операции с графиками, но есть некоторые исключения. | long r/o |
| OBJPROP_XSIZE | Ширина объекта по оси X в пикселях. Задается для объектов OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL. | int |
| OBJPROP_YSIZE | Высота объекта по оси Y в пикселях. Задается для объектов OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, 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_PERIOD | Период для объекта «График» | ENUM_TIMEFRAMES |
| OBJPROP_DATE_SCALE | Признак отображения шкалы времени для объекта «График» | bool |
| OBJPROP_PRICE_SCALE | Признак отображения ценовой шкалы для объекта «График» | bool |
| OBJPROP_CHART_SCALE | Масштаб для объекта «График» | int значение в диапазоне 0–5 |
| 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_CHART) действуют следующие ограничения:
- нельзя закрыть с помощью ChartClose();
- нельзя поменять символ/период с помощью функции ChartSetSymbolPeriod();
- не работают свойства CHART_SCALE, CHART_BRING_TO_TOP, CHART_SHOW_DATE_SCALE и CHART_SHOW_PRICE_SCALE (ENUM_CHART_PROPERTY_INTEGER).
Для объектов OBJ_BITMAP_LABEL и OBJ_BITMAP программным путем можно установить специальный режим показа изображения. В этом режиме показывается только та часть исходного изображения, на которую накладывается прямоугольная область видимости, остальная часть картинки становится невидимой. Размеры области видимости необходимо установить с помощью свойств OBJPROP_XSIZE и OBJPROP_YSIZE. Область видимости можно «перемещать» только в пределах исходного изображения с помощью свойств OBJPROP_XOFFSET и OBJPROP_YOFFSET.
Для объектов с фиксированными размерами: OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT и OBJ_CHART свойства 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)
Способы привязки объектов
Графические объекты Text, Label, Bitmap и Bitmap Label (OBJ_TEXT, OBJ_LABEL, OBJ_BITMAP и OBJ_BITMAP_LABEL) могут иметь один из 9 различных способов привязки своих координат, задаваемых свойством OBJPROP_ANCHOR.
Объект
Идентификатор
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 – задаёт угол поворота объекта против часовой стрелки.
Указать нужный вариант можно с помощью функции ObjectSetInteger(handle_графика, имя_объекта, OBJPROP_ANCHOR, способ_привязки), где способ_привязки — одно из значений перечисления ENUM_ANCHOR_POINT.
| Идентификатор | Описание |
| ANCHOR_LEFT_UPPER | Точка привязки в левом верхнем углу |
| ANCHOR_LEFT | Точка привязки слева по центру |
| ANCHOR_LEFT_LOWER | Точка привязки в левом нижнем углу |
| ANCHOR_LOWER | Точка привязки снизу по центру |
| ANCHOR_RIGHT_LOWER | Точка привязки в правом нижнем углу |
| ANCHOR_RIGHT | Точка привязки справа по центру |
| ANCHOR_RIGHT_UPPER | Точка привязки в правом верхнем углу |
| ANCHOR_UPPER | Точка привязки сверху по центру |
| ANCHOR_CENTER | Точка привязки строго по центру объекта |
Объекты OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT и OBJ_CHART имеют фиксированную точку привязки в левом верхнем углу (ANCHOR_LEFT_UPPER).
Пример:
string text_name="my_OBJ_TEXT_object"; if(ObjectFind(0,text_name)Графические объекты Arrow (OBJ_ARROW) имеют только 2 способа привязки своих координат. Идентификаторы перечислены в ENUM_ARROW_ANCHOR.
ENUM_ARROW_ANCHOR
Идентификатор
Описание
ANCHOR_TOP
Точка привязки для стрелки находится сверху
ANCHOR_BOTTOM
Точка привязки для стрелки находится внизу
Пример:
void OnStart() { //--- служебные массивы double Ups[],Downs[]; datetime Time[]; //--- установим для массивов признак таймсерии ArraySetAsSeries(Ups,true); ArraySetAsSeries(Downs,true); ArraySetAsSeries(Time,true); //--- создадим хэндл индикатора Fractals int FractalsHandle=iFractals(NULL,0); Print("FractalsHandle = ",FractalsHandle); //--- сбросим код ошибки ResetLastError(); //--- попытаемся скопировать значения индикатора int copied=CopyBuffer(FractalsHandle,0,0,1000,Ups); if(copiedПосле выполнения скрипта график будет выглядеть примерно как на этом рисунке.
Угол графика, к которому привязан объект
Существует ряд графических объектов, для которых можно задавать угол графика, относительно которого указываются координаты в пикселях. Это следующие типы объектов (в скобках указаны идентификаторы типа объекта):
- Label (OBJ_LABEL); Текстовая метка
- Button (OBJ_BUTTON); Кнопка
- Bitmap Label (OBJ_BITMAP_LABEL); Графическая метка
- Edit (OBJ_EDIT); Поле ввода
- Rectangle Label (OBJ_RECTANGLE_LABEL). Прямоугольная метка
| Объект | Идентификатор | 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 – задаёт угол поворота объекта против часовой стрелки.
Для того чтобы указать угол графика, от которого будут отсчитываться координаты X и Y в пикселях, необходимо воспользоваться функцией ObjectSetInteger(chartID, name, OBJPROP_CORNER, chart_corner), где:
- chartID — идентификатор графика;
- name – имя графического объекта;
- OBJPROP_CORNER – идентификатор свойства для задания угла привязки;
- chart_corner – требуемый угол графика, может принимать одно из значений перечисления ENUM_BASE_CORNER.
ENUM_BASE_CORNER
| Идентификатор | Описание |
| CORNER_LEFT_UPPER | Центр координат в левом верхнем углу графика |
| CORNER_LEFT_LOWER | Центр координат в левом нижнем углу графика |
| CORNER_RIGHT_LOWER | Центр координат в правом нижнем углу графика |
| CORNER_RIGHT_UPPER | Центр координат в правом верхнем углу графика |
Пример:
void CreateLabel(long chart_id,
string name,
int chart_corner,
int anchor_point,
string text_label,
int x_ord,
int y_ord)
{
//---
if(ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0))
{
ObjectSetInteger(chart_id,name,OBJPROP_CORNER,chart_corner);
ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,anchor_point);
ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_ord);
ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_ord);
ObjectSetString(chart_id,name,OBJPROP_TEXT,text_label);
}
else
Print("Не удалось создать объект OBJ_LABEL ",name,", Код ошибки = ", GetLastError());
}
//+------------------------------------------------------------------+
//| Script program start function | //+------------------------------------------------------------------+
void OnStart()
{
//---
int height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);
int width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);
string arrows[4]={"LEFT_UPPER","RIGHT_UPPER","RIGHT_LOWER","LEFT_LOWER"};
CreateLabel(0,arrows[0],CORNER_LEFT_UPPER,ANCHOR_LEFT_UPPER,arrows[0],50,50);
CreateLabel(0,arrows[1],CORNER_RIGHT_UPPER,ANCHOR_RIGHT_UPPER,arrows[1],50,50);
CreateLabel(0,arrows[2],CORNER_RIGHT_LOWER,ANCHOR_RIGHT_LOWER,arrows[2],50,50);
CreateLabel(0,arrows[3],CORNER_LEFT_LOWER,ANCHOR_LEFT_LOWER,arrows[3],50,50);
} Видимость объектов
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger().
| Константа | Значение | Описание |
| OBJ_NO_PERIODS | 0 | Объект не показывается ни на одном таймфрейме |
| OBJ_PERIOD_M1 | 0x00000001 | Объект рисуется на 1-минутных графиках |
| OBJ_PERIOD_M2 | 0x00000002 | Объект рисуется на 2-минутных графиках |
| OBJ_PERIOD_M3 | 0x00000004 | Объект рисуется на 3-минутных графиках |
| OBJ_PERIOD_M4 | 0x00000008 | Объект рисуется на 4-минутных графиках |
| OBJ_PERIOD_M5 | 0x00000010 | Объект рисуется на 5-минутных графиках |
| OBJ_PERIOD_M6 | 0x00000020 | Объект рисуется на 6-минутных графиках |
| OBJ_PERIOD_M10 | 0x00000040 | Объект рисуется на 10-минутных графиках |
| OBJ_PERIOD_M12 | 0x00000080 | Объект рисуется на 12-минутных графиках |
| OBJ_PERIOD_M15 | 0x00000100 | Объект рисуется на 15-минутных графиках |
| OBJ_PERIOD_M20 | 0x00000200 | Объект рисуется на 20-минутных графиках |
| OBJ_PERIOD_M30 | 0x00000400 | Объект рисуется на 30-минутных графиках |
| OBJ_PERIOD_H1 | 0x00000800 | Объект рисуется на 1-часовых графиках |
| OBJ_PERIOD_H2 | 0x00001000 | Объект рисуется на 2-часовых графиках |
| OBJ_PERIOD_H3 | 0x00002000 | Объект рисуется на 3-часовых графиках |
| OBJ_PERIOD_H4 | 0x00004000 | Объект рисуется на 4-часовых графиках |
| OBJ_PERIOD_H6 | 0x00008000 | Объект рисуется на 6-часовых графиках |
| OBJ_PERIOD_H8 | 0x00010000 | Объект рисуется на 8-часовых графиках |
| OBJ_PERIOD_H12 | 0x00020000 | Объект рисуется на 12-часовых графиках |
| OBJ_PERIOD_D1 | 0x00040000 | Объект рисуется на дневных графиках |
| OBJ_PERIOD_W1 | 0x00080000 | Объект рисуется на недельных графиках |
| OBJ_PERIOD_MN1 | 0x00100000 | Объект рисуется на месячных графиках |
| OBJ_ALL_PERIODS | 0x001fffff | Объект рисуется на всех таймфреймах |
Флаги видимости можно комбинировать с помощью символа «|», например, комбинация флагов OBJ_PERIOD_M10|OBJ_PERIOD_H4 означает, что объект будет видим на 10-минутном и 4-часовом таймфреймах.
Пример:
void OnStart()
{
//---
string highlevel="PreviousDayHigh";
string lowlevel="PreviousDayLow";
double prevHigh; // High предыдущего дня
double prevLow; // Low предыдущего дня
double highs[],lows[]; // массивы для получения High и Low
//--- сбросим значение последней ошибки
ResetLastError();
//--- получим 2 последних значения High на дневном таймфрейме
int highsgot=CopyHigh(Symbol(),PERIOD_D1,0,2,highs);
if(highsgot>0) // если копирование прошло успешно
{
Print("Цены High за последние 2 дня получены успешно");
prevHigh=highs[0]; // High предыдущего дня
Print("prevHigh = ",prevHigh);
if(ObjectFind(0,highlevel)0) // если копирование прошло успешно
{
Print("Цены Low за последние 2 дня получены успешно");
prevLow=lows[0]; // Low предыдущего дня
Print("prevLow = ",prevLow);
if(ObjectFind(0,lowlevel)
Уровни волн Эллиотта
Волны Эллиотта представлены двумя графическими объектами типов OBJ_ELLIOTWAVE5 и OBJ_ELLIOTWAVE3. Для задания размера волны (способа маркировки волн) используется свойство OBJPROP_DEGREE, которому можно установить одно из значений перечисления ENUM_ELLIOT_WAVE_DEGREE.
ENUM_ELLIOT_WAVE_DEGREE
Константа
Описание
ELLIOTT_GRAND_SUPERCYCLE
Главный Суперцикл (Grand Supercycle)
ELLIOTT_SUPERCYCLE
Суперцикл (Supercycle)
ELLIOTT_CYCLE
Цикл (Cycle)
ELLIOTT_PRIMARY
Первичный цикл (Primary)
ELLIOTT_INTERMEDIATE
Промежуточное звено (Intermediate)
ELLIOTT_MINOR
Второстепенный цикл (Minor)
ELLIOTT_MINUTE
Минута (Minute)
ELLIOTT_MINUETTE
Секунда (Minuette)
ELLIOTT_SUBMINUETTE
Субсекунда (Subminuette)
Пример:
for(int i=0;i
Объекты Ганна
Для объектов веер Ганна (OBJ_GANNFAN) и сетка Ганна (OBJ_GANNGRID) можно указать одно из двух значений перечисления ENUM_GANN_DIRECTION, которое задает направление тренда.
ENUM_GANN_DIRECTION
Константа
Описание
GANN_UP_TREND
Линия соответствует восходящему тренду
GANN_DOWN_TREND
Линия соответствует нисходящему тренду
Для установки масштаба основной линии 1×1 используется функция ObjectSetDouble(chart_handle, gann_object_name, OBJPROP_SCALE, scale), где:
- chart_handle – окно графика, в котором находится объект;
- gann_object_name – имя объекта;
- OBJPROP_SCALE – идентификатор свойства «Scale»;
- scale – требуемый масштаб в единицах Pips/Bar.

Пример создания веера Ганна:
void OnStart()
{
//---
string my_gann="OBJ_GANNFAN object";
if(ObjectFind(0,my_gann)
Набор Web-цветов
Для типа color определены следующие цветовые константы:

Задавать цвет можно для объектов с помощью функции ObjectSetInteger() и для пользовательских индикаторов с помощью функции PlotIndexSetInteger(). Для получения значения цвета служат аналогичные функции ObjectGetInteger() и PlotIndexGetInteger().
Пример:
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots 3
#property indicator_type1 DRAW_LINE
#property indicator_type2 DRAW_LINE
#property indicator_type3 DRAW_LINE
#property indicator_color1 clrBlue
#property indicator_color2 clrRed
#property indicator_color3 clrLime
Wingdings
Символы шрифта Wingdings, используемые с объектом OBJ_ARROW:

Установка нужного символа производится с помощью функции ObjectSetInteger().
Пример:
void OnStart()
{
//---
string up_arrow="up_arrow";
datetime time=TimeCurrent();
double lastClose[1];
int close=CopyClose(Symbol(),Period(),0,1,lastClose); // получим цену Close
//--- если цена получена
if(close>0)
{
ObjectCreate(0,up_arrow,OBJ_ARROW,0,0,0,0,0); // создадим стрелку
ObjectSetInteger(0,up_arrow,OBJPROP_ARROWCODE,241); // установим код стрелки
ObjectSetInteger(0,up_arrow,OBJPROP_TIME,time); // зададим время
ObjectSetDouble(0,up_arrow,OBJPROP_PRICE,lastClose[0]);// зададим цену
ChartRedraw(0); // перерисуем окно
}
else
Print("Не удалось получить последнюю цену Close!");
}
