Графические объекты

Группа функций, предназначенных для работы с графическими объектами, относящимися к любому указанному графику.

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

По этой причине не следует ожидать немедленного визуального обновления графических объектов после вызова данных функций. В общем случае обновление графических объектов на чарте производится терминалом автоматически по событиям изменения — поступление новой котировки, изменения размера окна графика и т.д. Для принудительного обновления графических объектов используйте команду на перерисовку графика ChartRedraw().

Функция

Действие

ObjectCreate

Создает объект заданного типа на указанном графике

ObjectName

Возвращает имя объекта соответствующего типа в указанном графике (указанном подокне графика)

ObjectDelete

Удаляет объект с указанным именем с указанного графика (с указанного подокна графика)

ObjectsDeleteAll

Удаляет все объекты указанного типа с указанного графика (с указанного подокна графика)

ObjectFind

Ищет по имени объект с указанным идентификатором

ObjectGetTimeByValue

Возвращает значение времени для указанного значения цены объекта

ObjectGetValueByTime

Возвращает ценовое значение объекта для указанного времени

ObjectMove

Изменяет координаты указанной точки привязки объекта

ObjectsTotal

Возвращает количество объектов указанного типа в указанном графике (указанном подокне графика)

ObjectGetDouble

Возвращает значение типа double соответствующего свойства объекта

ObjectGetInteger

Возвращает целочисленное значение соответствующего свойства объекта

ObjectGetString

Возвращает значение типа string соответствующего свойства объекта

ObjectSetDouble

Устанавливает значение соответствующего свойства объекта

ObjectSetInteger

Устанавливает значение соответствующего свойства объекта

ObjectSetString

Устанавливает значение соответствующего свойства объекта

TextSetFont

Устанавливает шрифт для вывода текста методами рисования (по умолчанию используется шрифт Arial 20)

TextOut

Выводит текст в пользовательский массив (буфер), предназначенный для создания графического ресурса

TextGetSize

Возвращает ширину и высоту строки при текущих настройках шрифта

Каждый графический объект должен иметь имя, уникальное в пределах одного графика, включая его подокна. Изменение имени графического объекта формирует два события: первое — это событие удаления объекта со старым именем, и второе – событие  создания графического объекта с новым именем.

После создания объекта или модификации свойств объекта  рекомендуется вызывать функцию ChartRedraw(), которая отдает терминалу команду на принудительную отрисовку графика (и всех видимых на нем объектов).

 

ObjectCreate

Создает объект с указанным именем, типом и начальными координатами в указанном подокне графика. При создании можно указать до 30 координат.

bool ObjectCreate(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 ENUM_OBJECT type, // тип объекта
 int sub_window, // индекс окна
 datetime time1, // время первой точки привязки
 double price1, // цена первой точки привязки
 ...
 datetime timeN=0, // время N-ой точки привязки
 double priceN=0, // цена N-ой точки привязки
 ...
 datetime time30=0, // время 30-й точки привязки
 double price30=0 // цена 30-точки привязки
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта. Имя должно быть уникальным в пределах одного графика, включая его подокна.

type — [in] Тип объекта. Значение может быть одним из значений перечисления ENUM_OBJECT.

sub_window — [in] Номер подокна графика. 0 означает главное окно графика. Указанное подокно должно существовать, в противном случае функция возвращает false.

time1 — [in] ВременнАя координата первой привязки.

price1 — [in] Ценовая координата первой точки привязки.

timeN=0 — [in] ВременнАя координата N-ой точки привязки.

priceN=0 — [in] Ценовая координата N-ой точки привязки.

time30=0 — [in] ВременнАя координата тридцатой точки привязки.

price30=0 — [in] Ценовая координата тридцатой точки привязки.

Возвращаемое значение

Возвращает true при успешной постановке команды в очередь указанного графика, иначе false. Если объект был уже создан ранее, то производится попытка изменить его координаты.

Примечание

При вызове ObjectCreate() всегда используется асинхронный вызов, поэтому функция возвращает только результат постановки команды в очередь графика. В этом случае true означает только то, что команда успешно поставлена в очередь, сам результат её выполнения неизвестен.

Для проверки результата выполнения можно использовать функцию ObjectFind() или любые функции, запрашивающие свойства объекта, например вида ObjectGetXXX. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд графика и дожидаются результата выполнения (так как являются синхронными вызовами), то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

Имя графического объекта не должно превышать 63 символа.

Нумерация подокон графика (если на графике есть подокна с индикаторами) начинается с 1. Главное окно графика есть всегда и имеет индекс 0.

Большое количество точек привязки (до 30-ти) предусмотрено для будущего использования. В то же время ограничение только 30-тью возможными точками привязки для графических объектов обусловлено тем, что при вызове функции количество параметров не должно превышать 64.

При переименовании графического объекта одновременно формируются два события, которые можно обработать в эксперте или индикаторе функцией OnChartEvent():

событие удаления объекта со старым именем;
событие создания графического объекта с новым именем.

Для создания каждого из типов объектов требуется задать определенное количество точек привязки:

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

Описание

Точки привязки

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

Объект «Текстовая метка»

Положение задается при помощи свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.

OBJ_BUTTON

Объект «Кнопка»

Положение задается при помощи свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.

OBJ_CHART

Объект «График»

Положение задается при помощи свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.

OBJ_BITMAP

Объект «Рисунок»

Одна точка привязки.

OBJ_BITMAP_LABEL

Объект «Графическая метка»

Положение задается при помощи свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.

OBJ_EDIT

Объект «Поле ввода»

Положение задается при помощи свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.

OBJ_EVENT

Объект «Событие», соответствующий событию в экономическом календаре

Одна точка привязки. Фактически используется только координата по оси времени.

OBJ_RECTANGLE_LABEL

Объект «Прямоугольная метка»для создания и оформления пользовательского графического интерфейса.

Положение задается при помощи свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.

 

ObjectName

Возвращает имя соответствующего объекта в указанном чарте, указанном подокне указанного чарта, указанного типа.

string ObjectName(
 long chart_id, // идентификатор графика
 int pos, // номер в списке объектов
 int sub_window=-1, // номер окна
 int type=-1 // тип объекта
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

pos — [in] Порядковый номер объекта согласно указанного фильтра по номеру подокна и типу.

sub_window=-1 — [in] Номер подокна графика. 0 означает главное окно графика, -1 означает все подокна графика, включая главное окно.

type=-1 — [in] Тип объекта. Значение может быть одним из значений перечисления ENUM_OBJECT. -1 означает все типы.

Возвращаемое значение

Имя объекта в случае успеха.

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

При переименовании графического объекта одновременно формируются два события, которые можно обработать в эксперте или индикаторе функцией OnChartEvent():

  • событие удаления объекта со старым именем;
  • событие создания графического объекта с новым именем.

 

ObjectDelete

Удаляет объект с указанным именем с указанного графика.

bool ObjectDelete(
 long chart_id, // идентификатор графика
 string name // имя объекта
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя удаляемого объекта.

Возвращаемое значение

Возвращает true при успешной постановке команды в очередь указанного графика, иначе false.

Примечание

При вызове ObjectDelete() всегда используется асинхронный вызов, поэтому функция возвращает только результат постановки команды в очередь графика. В этом случае true означает только то, что команда успешно поставлена в очередь, сам результат её выполнения неизвестен.

Для проверки результата выполнения можно использовать функцию ObjectFind() или любые функции, запрашивающие свойства объекта, например вида ObjectGetXXX. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд графика и дожидаются результата выполнения (так как являются синхронными вызовами), то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

При переименовании графического объекта одновременно формируются два события, которые можно обработать в эксперте или индикаторе функцией OnChartEvent():

  • событие удаления объекта со старым именем;
  • событие создания графического объекта с новым именем.

 

ObjectsDeleteAll

Удаляет все объекты в указанном графике, указанном подокне указанного графика, указанного типа. Существует два варианта функции:

int ObjectsDeleteAll(
 long chart_id, // идентификатор графика
 int sub_window=-1, // индекс окна
 int type=-1 // тип объекта для удаления
 );

Удаляет по префиксу имени в подокне графика все объекты указанного типа.

int ObjectsDeleteAll(
 long chart_id, // идентификатор графика
 const string prefix, // префикс имени объекта
 int sub_window=-1, // индекс окна
 int object_type=-1 // тип объекта для удаления
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

prefix — [in] Префикс, по которому будут удалены все объекты, чьи имена начинаются с данного набора символов. Префикс можно указывать как ‘name’ или ‘name*’ – оба варианта работают одинаково. Если в качестве префикса указана пустая строка, то будут удалены объекты с любым именем.

sub_window=-1 — [in] Номер подокна графика. 0 означает главное окно графика, -1 означает все подокна графика, включая главное окно.

type=-1 — [in] Тип объекта. Значение может быть одним из значений перечисления ENUM_OBJECT. -1 означает все типы.

Возвращаемое значение

Возвращает количество удаленных объектов. Для получения дополнительной информации об ошибке необходимо вызвать функцию функцию GetLastError().

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

 

ObjectFind

Ищет объект с указанным именем на графике с указанным идентификатором.

int ObjectFind(
long chart_id, // идентификатор графика
string name // имя объекта
);

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя искомого объекта.

Возвращаемое значение

В случае удачи функция возвращает номер подокна (0 означает главное окно графика), в котором находится найденный объект. Если объект не найден, то функция возвращает отрицательное число. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

При переименовании графического объекта одновременно формируются два события, которые можно обработать в эксперте или индикаторе функцией OnChartEvent():

  • событие удаления объекта со старым именем;
  • событие создания графического объекта с новым именем.

 

ObjectGetTimeByValue

Возвращает значение времени для указанного значения цены указанного объекта.

datetime ObjectGetTimeByValue(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 double value, // цена
 int line_id // номер линии
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

value — [in] Значение цены.

line_id — [in] Идентификатор линии.

Возвращаемое значение

Значение времени для указанного значения цены указанного объекта.

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

Так как объект в одной координате цены может иметь несколько значений, то необходимо указать номер линии. Эта функция применима только для следующих объектов:

  • Трендовая линия (OBJ_TREND)
  • Трендовая линия по углу (OBJ_TRENDBYANGLE)
  • Линия Ганна (OBJ_GANNLINE)
  • Равноудаленный канал (OBJ_CHANNEL) — 2 линии
  • Канал на линейной регрессии (OBJ_REGRESSION) — 3 линии
  • Канал стандартного отклонения (OBJ_STDDEVCHANNEL) — 3 линии
  • Линия со стрелкой (OBJ_ARROWED_LINE)

 

ObjectGetValueByTime

Возвращает значение цены для указанного времени указанного объекта.

double ObjectGetValueByTime(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 datetime time, // время
 int line_id // номер линии
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

time — [in] Значение времени.

line_id — [in] Идентификатор линии.

Возвращаемое значение

Значение цены для указанного времени указанного объекта.

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

Так как объект в одной координате цены может иметь несколько значений, то необходимо указать номер линии. Эта функция применима только для следующих объектов:

  • Трендовая линия (OBJ_TREND)
  • Трендовая линия по углу (OBJ_TRENDBYANGLE)
  • Линия Ганна (OBJ_GANNLINE)
  • Равноудаленный канал (OBJ_CHANNEL) — 2 линии
  • Канал на линейной регрессии (OBJ_REGRESSION) — 3 линии
  • Канал стандартного отклонения (OBJ_STDDEVCHANNEL) — 3 линии
  • Линия со стрелкой (OBJ_ARROWED_LINE)

 

ObjectMove

Изменяет координаты указанной точки привязки объекта.

bool ObjectMove(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 int point_index, // номер привязки
 datetime time, // время
 double price // цена
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

point_index — [in] Номер точки привязки. Количество точек привязки зависит от типа объекта.

time — [in] ВременнАя координата указанной точки привязки.

price — [in] Ценовая координата указанной точки привязки.

Возвращаемое значение

Возвращает true при успешной постановке команды в очередь указанного графика, иначе false.

Примечание

При вызове ObjectMove() всегда используется асинхронный вызов, поэтому функция возвращает только результат постановки команды в очередь графика. В этом случае true означает только то, что команда успешно поставлена в очередь, сам результат её выполнения неизвестен.

Для проверки результата выполнения можно использовать функцию, запрашивающую свойства объекта, например вида ObjectGetXXX. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд графика и дожидаются результата выполнения (так как являются синхронными вызовами), то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

 

ObjectsTotal

Возвращает количество объектов в указанном чарте, указанном подокне указанного чарта, указанного типа.

int ObjectsTotal(
 long chart_id, // идентификатор графика
 int sub_window=-1, // индекс окна
 int type=-1 // тип объекта 
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

nwin=-1 — [in] Номер подокна графика. 0 означает главное окно графика, -1 означает все подокна графика, включая главное окно.

type=-1 — [in] Тип объекта. Значение может быть одним из значений перечисления ENUM_OBJECT. -1 означает все типы.

Возвращаемое значение

Количество объектов.

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

 

ObjectSetDouble

Задает значение соответствующего свойства объекта. Свойство объекта должно быть типа double. Существует 2 варианта функции.

Установка значения свойства, не имеющего модификатора

bool ObjectSetDouble(
 long chart_id, // идентификатор графика
 string name, // имя
 ENUM_OBJECT_PROPERTY_DOUBLE prop_id, // свойство
 double prop_value // значение
 );

Установка значения свойства с указанием модификатора

bool ObjectSetDouble(
 long chart_id, // идентификатор графика
 string name, // имя
 ENUM_OBJECT_PROPERTY_DOUBLE prop_id, // свойство
 int prop_modifier, // модификатор
 double prop_value // значение
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

prop_id — [in] Идентификатор свойства объекта. Значение может быть одним из значений перечисления ENUM_OBJECT_PROPERTY_DOUBLE.

prop_modifier — [in] Модификатор указанного свойства. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

prop_value — [in] Значение свойства.

Возвращаемое значение

Возвращает true только в том случае, если команда на изменение свойств графического объекта успешно отправлена графику, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует асинхронный вызов – это означает, что функция не дожидается выполнения команды, успешно поставленной в очередь указанного графика, а сразу же возвращает управление.

Для проверки результата выполнения на чужом графике можно использовать функцию, запрашивающую указанное свойство объекта. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд чужого графика и дожидаются результата выполнения, то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

 

ObjectSetInteger

Задает значение соответствующего свойства объекта. Свойство объекта должно быть типов datetime, int, color, bool или char. Существует 2 варианта функции.

Установка значения свойства, не имеющего модификатора

bool ObjectSetInteger(
 long chart_id, // идентификатор графика
 string name, // имя
 ENUM_OBJECT_PROPERTY_INTEGER prop_id, // свойство
 long prop_value // значение
 );

Установка значения свойства с указанием модификатора

bool ObjectSetInteger(
 long chart_id, // идентификатор графика
 string name, // имя
 ENUM_OBJECT_PROPERTY_INTEGER prop_id, // свойство
 int prop_modifier, // модификатор
 long prop_value // значение
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

prop_id — [in] Идентификатор свойства объекта. Значение может быть одним из значений перечисления ENUM_OBJECT_PROPERTY_INTEGER.

prop_modifier — [in] Модификатор указанного свойства. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

prop_value — [in] Значение свойства.

Возвращаемое значение

Возвращает true только в том случае, если команда на изменение свойств графического объекта успешно отправлена графику, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует асинхронный вызов – это означает, что функция не дожидается выполнения команды, успешно поставленной в очередь указанного графика, а сразу же возвращает управление.

Для проверки результата выполнения на чужом графике можно использовать функцию, запрашивающую указанное свойство объекта. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд чужого графика и дожидаются результата выполнения, то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

 

ObjectSetString

Задает значение соответствующего свойства объекта. Свойство объекта должно быть типа string. Существует 2 варианта функции.

Установка значения свойства, не имеющего модификатора

bool ObjectSetString(
 long chart_id, // идентификатор графика
 string name, // имя
 ENUM_OBJECT_PROPERTY_STRING prop_id, // свойство
 string prop_value // значение
 );

Установка значения свойства с указанием модификатора

bool ObjectSetString(
 long chart_id, // идентификатор графика
 string name, // имя
 ENUM_OBJECT_PROPERTY_STRING prop_id, // свойство
 int prop_modifier, // модификатор
 string prop_value // значение
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

prop_id — [in] Идентификатор свойства объекта. Значение может быть одним из значений перечисления ENUM_OBJECT_PROPERTY_STRING.

prop_modifier — [in] Модификатор указанного свойства. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

prop_value — [in] Значение свойства.

Возвращаемое значение

Возвращает true только в том случае, если команда на изменение свойств графического объекта успешно отправлена графику, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует асинхронный вызов – это означает, что функция не дожидается выполнения команды, успешно поставленной в очередь указанного графика, а сразу же возвращает управление.

Для проверки результата выполнения на чужом графике можно использовать функцию, запрашивающую указанное свойство объекта. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд чужого графика и дожидаются результата выполнения, то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

При переименовании графического объекта одновременно формируются два события, которые можно обработать в эксперте или индикаторе функцией OnChartEvent():

  • событие удаления объекта со старым именем;
  • событие создания графического объекта с новым именем.

 

ObjectGetDouble

Возвращает значение соответствующего свойства объекта. Свойство объекта должно быть типа double. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

double ObjectGetDouble(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 ENUM_OBJECT_PROPERTY_DOUBLE prop_id, // идентификатор свойства
 int prop_modifier=0 // модификатор свойства, если требуется
 );

2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool ObjectGetDouble(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 ENUM_OBJECT_PROPERTY_DOUBLE prop_id, // идентификатор свойства
 int prop_modifier, // модификатор свойства
 double& double_var // сюда примем значение свойства
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

prop_id — [in] Идентификатор свойства объекта. Значение может быть одним из значений перечисления ENUM_OBJECT_PROPERTY_DOUBLE.

prop_modifier — [in] Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

double_var — [out] Переменная типа double, принимающая значение запрашиваемого свойства.

Возвращаемое значение

Значение типа double для первого варианта вызова.

Для второго варианта вызова возвращает true, если данное свойство поддерживается и значение было помещено в переменную double_var, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

 

ObjectGetInteger

Возвращает значение соответствующего свойства объекта. Свойство объекта должно быть типов datetime, int, color, bool или char. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

long ObjectGetInteger(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 ENUM_OBJECT_PROPERTY_INTEGER prop_id, // идентификатор свойства
 int prop_modifier=0 // модификатор свойства, если требуется
 );

2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool ObjectGetInteger(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 ENUM_OBJECT_PROPERTY_INTEGER prop_id, // идентификатор свойства
 int prop_modifier, // модификатор свойства
 long& long_var // сюда примем значение свойства
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

prop_id — [in] Идентификатор свойства объекта. Значение может быть одним из значений перечисления ENUM_OBJECT_PROPERTY_INTEGER.

prop_modifier — [in] Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

long_var — [out] Переменная типа long, принимающая значение запрашиваемого свойства.

Возвращаемое значение

Значение типа long для первого варианта вызова.

Для второго варианта вызова возвращает true, если данное свойство поддерживается и значение было помещено в переменную long_var, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

 

ObjectGetString

Возвращает значение соответствующего свойства объекта. Свойство объекта должно быть типа string. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

string ObjectGetString(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 ENUM_OBJECT_PROPERTY_STRING prop_id, // идентификатор свойства
 int prop_modifier=0 // модификатор свойства, если требуется
 );

2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool ObjectGetString(
 long chart_id, // идентификатор графика
 string name, // имя объекта
 ENUM_OBJECT_PROPERTY_STRING prop_id, // идентификатор свойства
 int prop_modifier, // модификатор свойства
 string& string_var // сюда примем значение свойства
 );

Параметры

chart_id — [in] Идентификатор графика. 0 означает текущий график.

name — [in] Имя объекта.

prop_id — [in] Идентификатор свойства объекта. Значение может быть одним из значений перечисления ENUM_OBJECT_PROPERTY_STRING.

prop_modifier — [in] Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

string_var — [out] Переменная типа string, принимающая значение запрашиваемого свойства.

Возвращаемое значение

Значение типа string для первого варианта вызова.

Для второго варианта вызова возвращает true, если данное свойство поддерживается и значение было помещено в переменную string_var, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

При переименовании графического объекта одновременно формируются два события, которые можно обработать в эксперте или индикаторе функцией OnChartEvent():

  • событие удаления объекта со старым именем;
  • событие создания графического объекта с новым именем.

 

TextSetFont

Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt).

bool TextSetFont(
 const string name, // имя шрифта или путь к файлу шрифта на диске
 int size, // размер шрифта
 uint flags, // комбинация флагов
 int orientation=0 // угол наклона текста
 );

Параметры

name — [in] Имя шрифта в системе, или имя ресурса, содержащего шрифт, или путь к файлу шрифта на диске.

size — [in] Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров шрифтов в операционной системе. При отрицательных значениях значение задается в десятых долях пункта и размер текста будет зависеть от настроек системы («стандартный масштаб» или «крупный масштаб»). Более подробно о разнице в режимах смотрите в Примечании.

flags — [in] Комбинация флагов, описывающих стиль шрифт.

orientation — [in] Угол наклона текста по горизонтали к оси X, единица измерения равна 0.1 градуса. То есть orientation=450 означает наклон в 45 градусов.

Возвращаемое значение

Возвращает true в случае успешной установки текущего шрифта, иначе false. Возможные коды ошибок:

  • ERR_INVALID_PARAMETER(4003) — name представляет NULL или «» (пустая строка),
  • ERR_INTERNAL_ERROR(4001) — ошибка операционной системы (например, попытка создания несуществующего шрифта).

Примечание

Если в имени шрифта используется «::», то шрифт загружается из ресурса EX5. Если имя шрифта name указано с расширением, то шрифт загружается из файла, при этом – если путь начинается с «\» или «/», то файл ищется относительно каталога MQL5, иначе ищется относительно пути EX5-файла, вызвавшего функцию TextSetFont().

Размер шрифта задается положительными или отрицательными значениями, знак определяет зависимость размера текста от настроек операционной системы (масштаба шрифта).

Если размер задается положительным числом, то при отображении логического шрифта в физический происходит преобразование размера в физические единицы измерения устройства (пиксели) и этот размер соответствует высоте ячеек символов из доступных шрифтов. Не рекомендуется в тех случаях, когда предполагается совместное использование на графике текстов, выведенных функцией TextOut(), и текстов, отображаемых с помощью графического объекта OBJ_LABEL («Текстовая метка»).
Если размер задается отрицательным числом, то указанный размер предполагается заданным в десятых долях логического пункта (значение -350 равно 35 логических пунктов) и делится на 10, а затем полученное значение преобразуется в физические единицы измерения устройства (пиксели) и соответствует абсолютному значению высоты символа из доступных шрифтов. Чтобы получить на экране текст такого же размера, как и в объекте OBJ_LABEL, возьмите указанный в свойствах объекта размер шрифта и умножьте на -10.

Флаги могут использоваться в виде комбинации флагов стиля с одним из флагов, задающем толщину шрифта. Наименования флагов приведены ниже.

Флаги для задания стиля начертания шрифта

Флаг

Описание

FONT_ITALIC

Курсив

FONT_UNDERLINE

Подчёркивание

FONT_STRIKEOUT

Перечёркивание

 

Флаги для задания толщины шрифта

Флаг

FW_DONTCARE

FW_THIN

FW_EXTRALIGHT

FW_ULTRALIGHT

FW_LIGHT

FW_NORMAL

FW_REGULAR

FW_MEDIUM

FW_SEMIBOLD

FW_DEMIBOLD

FW_BOLD

FW_EXTRABOLD

FW_ULTRABOLD

FW_HEAVY

FW_BLACK

 

TextOut

Выводит текст в пользовательский массив (буфер) и возвращает результат успешности этой операции. Данный массив предназначается для создания графического ресурса.

bool TextOut(
 const string text, // выводимый текст
 int x, // координатa X 
 int y, // координатa Y 
 uint anchor, // способ привязки
 uint &data[], // буфер для вывода
 uint width, // ширина буфера в точках
 uint height, // высота буфера в точках
 uint color, // цвет текста
 ENUM_COLOR_FORMAT color_format // формат цвета для вывода
 );

Параметры

text — [in] Выводимый текст, который будет записан в буфер. Осуществляется только однострочный вывод текста.

x — [in] Координатa X точки привязки для выводимого текста.

y — [in] Координатa Y точки привязки для выводимого текста.

anchor — [in] Значение из набора 9 предопределенных способов расположения точки привязки выводимого текста. Задаётся комбинацией двух флагов – флага выравнивания текста по горизонтали и флага выравнивания текста по вертикали. Наименования флагов приведены в Примечании.

data[] — [in] Буфер, в который выводится текст. Данный буфер используется для создания графического ресурса.

width — [in] Ширина буфера в точках (пикселях).

height — [in] Высота буфера в точках (пикселях).

color — [in] Цвет текста.

color_format — [in] Формат цвета, задаётся значением из перечисления ENUM_COLOR_FORMAT.

Возвращаемое значение

Возвращает true в случае успешного выполнения, иначе false.

Примечание

Способ привязки, задаваемый параметром anchor, является комбинацией двух флагов выравнивания текста по вертикали и горизонтали. Флаги выравнивания текста по горизонтали:

  • TA_LEFT – точка привязки на левой стороне ограничивающего прямоугольника
  • TA_CENTER – точка привязки по горизонтали находится в середине ограничивающего прямоугольника
  • TA_RIGHT – точка привязки на правой стороне ограничивающего прямоугольника

Флаги выравнивания текста по вертикали:

  • TA_TOP – точка привязки на верхней стороне ограничивающего прямоугольника
  • TA_VCENTER – точка привязки по вертикали находится в середине ограничивающего прямоугольника
  • TA_BOTTOM – точка привязки на нижней стороне ограничивающего прямоугольника

 

TextGetSize

Возвращает ширину и высоту строки при текущих настройках шрифта.

bool TextGetSize(
 const string text, // строка текста
 uint& width, // ширина буфера в точках
 uint& height // высота буфера в точках
 );

Параметры

text — [in] Строка для которой получаем длину и ширину.

width — [out] Входной параметр для получения ширины.

height — [out] Входной параметр для получения высоты.

Возвращаемое значение

Возвращает true в случае успешного выполнения, иначе false. Возможные коды ошибок:

  • ERR_INTERNAL_ERROR(4001) — в случае ошибки операционной системы.