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

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

ObjectCreate

bool ObjectCreate(string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0)

Создание объекта с указанным именем, тип и начальные координаты в указанном подокне графика. Число координат, связываемых с объектом, может быть от 1 до 3 в зависимости от типа. При успешном создании объекта функция возвращает TRUE, иначе FALSE. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().
Объекты с типом OBJ_LABEL игнорируют координаты. Используйте функцию ObjectSet() для установки свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.
Замечания: нумерация подокон графика (если на графике есть подокна с индикаторами) начинается с 1. Главное окно графика есть всегда и имеет индекс 0.
Координаты должны передаваться парами — время и цена. Для примера, объекту OBJ_VLINE требуется только время, но также нужно передать и цену (любое значение).

Параметры:

name — Уникальное имя объекта.
type — Тип объекта. Может быть любым из типов объектов.
window — Индекс окна, в которое будет добавлен объект. Индекс окна должен быть большим или равным 0 и меньшим, чем WindowsTotal().
time1 — Время первой координаты.
price1 — Цена первой координаты.
time2 — Время второй координаты.
price2 — Цена второй координаты.
time3 — Время третьей координаты.
price3 — Цена третьей координаты.

Пример:

// новый объект Text
if(!ObjectCreate("text_object", OBJ_TEXT, 0, D'2004.02.20 12:30', 1.0045))
{
   Print("error: can't create text_object! code #",GetLastError());
   return(0);
}

// новый объект TextLabel
if(!ObjectCreate("label_object", OBJ_LABEL, 0, 0, 0))
{
   Print("error: can't create label_object! code #",GetLastError());
   return(0);
}

ObjectSet("label_object", OBJPROP_XDISTANCE, 200);
ObjectSet("label_object", OBJPROP_YDISTANCE, 100);

 

ObjectDelete

bool ObjectDelete(string name)

Удаление объекта с указанным именем. При успешном удалении функция возвращает TRUE, иначе FALSE.
Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Параметры:

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

Пример:

ObjectDelete("text_object");

 

ObjectDescription

string ObjectDescription(string name)

Функция возвращает описание объекта. Для объектов типа OBJ_TEXT и OBJ_LABEL возвращается текст, отображаемый этими объектами.
Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
См. также ObjectSetText().

Параметры:

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

Пример:

// сохранение списка объектов графика в файл
int handle, total;
string obj_name,fname;

// имя файла
fname="objlist_"+Symbol();
handle=FileOpen(fname,FILE_CSV|FILE_WRITE);

if(handle>0)
{
   total=ObjectsTotal();
   for(int i=-;i<total;i++)
   {
      obj_name=ObjectName(i);
      FileWrite(handle,"Object "+obj_name+" описание= "+ObjectDescription(obj_name));
   }

   FileClose(handle);
}

 

ObjectFind

int ObjectFind(string name)

Поиск объекта с указанным именем. Функция возвращает индекс окна, которому принадлежит искомый объект. В случае неудачи функция вернет -1. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError(). Нумерация подокон графика (если на графике есть подокна с индикаторами) начинается с 1. Главное окно графика есть всегда и имеет индекс 0.

Параметры:

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

Пример:

if(ObjectFind("line_object2")!=win_idx)
  return(0);

 

ObjectGet

double ObjectGet(string name, int prop_id)

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

Параметры:

name — Имя объекта.
prop_id — Идентификатор свойства объекта. Может быть любым из значений списка свойств объекта.

Пример:

color oldColor = ObjectGet("hline12", OBJPROP_COLOR);

 

ObjectGetFiboDescription

string ObjectGetFiboDescription(string name, int index)

Функция возвращает описание уровня объекта Фибоначчи. Количество уровней зависит от типа объекта, принадлежащего к группе объектов Фибоначчи. Максимальное количество уровней — 32.
Для получения информации об ошибке необходимо вызвать функцию GetLastError().
См. также ObjectSetFiboDescription().

Параметры:

name — Имя объекта Фибоначчи.
index — Индекс уровня Фибоначчи (0-31).

Пример:

#include <stdlib.mqh>
...
string text;
for(int i=0;i<32;i++)
{
   text=ObjectGetFiboDescription(MyObjectName,i);
   //---- проверим, возможно уровней у объекта меньше, чем 32
   if(GetLastError()!=ERR_NO_ERROR) 
      break;

   Print(MyObjectName,"номер уровня: ",i," описание: ",text);
}

 

ObjectGetShiftByValue

int ObjectGetShiftByValue(string name, double value)

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

Параметры:

name — Имя объекта.
value — Значение цены.

Пример:

int shift=ObjectGetShiftByValue("MyTrendLine#123", 1.34);

 

ObjectGetValueByShift

double ObjectGetValueByShift(string name, int shift)

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

Параметры:

name — Имя объекта.
shift — Номер бара.

Пример:

double price=ObjectGetValueByShift("MyTrendLine#123", 11);

 

ObjectMove

bool ObjectMove(string name, int point, datetime time1, double price1)

Изменение одной из координат объекта на графике. Объекты могут иметь от одной до трех точек привязки в зависимости от типа объекта. Функция возвращает TRUE в случае успеха, иначе FALSE. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().
Нумерация координат объекта начинается с 0.

Параметры:

name — Имя объекта.
point — Индекс координаты (0-2).
time1 — Новое значение времени.
price1 — Новое значение цены.

Пример:

ObjectMove("MyTrend", 1, D'2017.02.25 12:30', 1.2345);

 

ObjectName

string ObjectName(int index)

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

Параметры:

index — Порядковый номер в списке объектов. Должен быть большим или равным 0 и меньшим, чем ObjectsTotal().

Пример:

int obj_total=ObjectsTotal();
string name;

for(int i=0;i<obj_total;i++)
{
   name=ObjectName(i);
   Print(i,": Имя объекта - ", name);
}

 

ObjectsDeleteAll

int ObjectsDeleteAll(int window=EMPTY, int type=EMPTY)

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

Замечания: нумерация подокон графика (если на графике есть подокна с индикаторами) начинается с 1. Главное окно графика есть всегда и имеет индекс 0. Если индекс окна отсутствует или имеет значение -1, то объекты удаляются со всего графика.
Если значение параметра type равно -1 или этот параметр отсутствует, то удаляются все объекты из указанного подокна.

Параметры:

window — Необязательный параметр. Индекс окна, на котором будут удалены объекты. Должен быть большим или равным -1 (EMPTY, значение по умолчанию) и меньшим, чем WindowsTotal().
type — Необязательный параметр. Тип объекта для удаления. Это может быть любое из значений списка идентификаторов типов объектов или EMPTY (-1) для удаления всех объектов.

Пример:

ObjectsDeleteAll(2, OBJ_HLINE); // удаляются все горизонтальные линии из 2-го подокна.
ObjectsDeleteAll(2); // удаляются все объекты из 2-го подокна.
ObjectsDeleteAll(); // удаляются все объекты с графика.

 

ObjectSet

bool ObjectSet(string name, int prop_id, double value)

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

Параметры:

name — Имя объекта.
prop_id — Идентификатор свойства объекта. Может быть любым из списка свойств объекта.
value — Новое значение указанного свойства.

Пример:

// перемещение первой координаты в конец графика
ObjectSet("MyTrend", OBJPROP_TIME1, Time[0]);

// изменение значения второго уровеня объекта fibo
ObjectSet("MyFibo", OBJPROP_FIRSTLEVEL+1, 1.234);

// установка флага видимости объекта. Объект будет отрисован только на 15-минутном и 1-часовом периодах графика
ObjectSet("MyObject", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 | OBJ_PERIOD_H1);

 

ObjectSetFiboDescription

bool ObjectSetFiboDescription(string name, int index, string text)

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

Параметры:

name — Имя объекта.
index — Порядковый номер уровня объекта Фибоначчи (0-31).
text — Новое описание уровня.

Пример:

ObjectSetFiboDescription("MyFiboObject",2,"Second line");

 

ObjectSetText

bool ObjectSetText(string name, string text, int font_size, string font_name=NULL, color text_color=CLR_NONE)

Изменение описания объекта. Для объектов OBJ_TEXT и OBJ_LABEL это описание отображается на графике в виде текстовой строки. В случае успеха функция возвращает значение TRUE, иначе FALSE. Для получения дополнительной информации об ошибке необходимо вызвать функцию функцию GetLastError().
Параметры font_size, font_name и text_color используются только для объектов OBJ_TEXT и OBJ_LABEL. Для объектов других типов эти параметры игнорируются.
См. также ObjectDescription().

Параметры:

name — Имя объекта.
text — Текст описания обьекта.
font_size — Размер шрифта в пунктах.
font_name — Наименование шрифта.
text_color — Цвет текста.

Пример:

ObjectSetText("text_object", "Hello world!", 10, "Times New Roman", Green);

 

ObjectsTotal

int ObjectsTotal(int type=EMPTY)

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

Параметры:

type — Необязательный параметр. Тип объекта для подсчета количества объектов данного типа. Это может быть любое из значений списка идентификаторов типов объектов или EMPTY (-1) для подсчета всех объектов.

Пример:

int obj_total=ObjectsTotal();
string name;

for(int i=0;i<obj_total;i++)
{
   name = ObjectName(i);
   Print(i," - объект ",name);
}

 

ObjectType

int ObjectType(string name)

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

Параметры:

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

Пример:

if(ObjectType("line_object2")!=OBJ_HLINE)
   return(0);