Справочник MQL4

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

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

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);
  }