Góc biểu đồ mà đối tượng được gắn vào
Có một số đối tượng đồ họa
mà bạn có thể thiết lập một góc biểu đồ, từ đó tọa độ được xác định bằng pixel. Đây là các loại đối tượng sau (trong ngoặc là định danh loại đối tượng):
- Label (
OBJ_LABEL
); - Button (
OBJ_BUTTON
); - Bitmap Label (
OBJ_BITMAP_LABEL
); - Edit (
OBJ_EDIT
); - Rectangle Label (
OBJ_RECTANGLE_LABEL
);
Đối tượng | ID | X/Y | Width/Height | Date/Price | OBJPROP_CORNER | OBJPROP_ANCHOR | OBJPROP_ANGLE |
---|---|---|---|---|---|---|---|
Text | OBJ_TEXT | — | — | Yes | — | Yes | Yes |
Label | OBJ_LABEL | Yes | Yes (read only) | — | Yes | Yes | Yes |
Button | OBJ_BUTTON | Yes | Yes | — | Yes | — | — |
Bitmap | OBJ_BITMAP | — | Yes (read only) | Yes | — | Yes | — |
Bitmap Label | OBJ_BITMAP_LABEL | Yes | Yes (read only) | — | Yes | Yes | — |
Edit | OBJ_EDIT | Yes | Yes | — | Yes | — | — |
Rectangle Label | OBJ_RECTANGLE_LABEL | Yes | Yes | — | Yes | — | — |
Các ký hiệu sau được sử dụng trong bảng:
X/Y
– tọa độ của các điểm neo được xác định bằng pixel so với góc của biểu đồ;Width/Height
– các đối tượng có chiều rộng và chiều cao. Đối với "read only", giá trị chiều rộng và chiều cao chỉ được tính một lần khi đối tượng được hiển thị trên biểu đồ;Date/Price
– tọa độ điểm neo được xác định bằng giá trị ngày và giá;OBJPROP_CORNER
– xác định góc của biểu đồ mà tọa độ điểm neo được xác định tương đối. Có thể là một trong 4 giá trị của liệt kêENUM_BASE_CORNER
;OBJPROP_ANCHOR
– xác định điểm neo trong chính đối tượng và có thể là một trong 9 giá trị của liệt kêENUM_ANCHOR_POINT
. Tọa độ bằng pixel được xác định từ điểm này đến góc biểu đồ được chọn;OBJPROP_ANGLE
– xác định góc xoay của đối tượng ngược chiều kim đồng hồ.
Để chỉ định góc biểu đồ, từ đó tọa độ X và Y sẽ được đo bằng pixel, sử dụng ObjectSetInteger
(chartID, name, OBJPROP_CORNER
, chart_corner
), trong đó:
- chartID - định danh biểu đồ;
- name – tên của một đối tượng đồ họa;
OBJPROP_CORNER
– ID thuộc tính để chỉ định góc liên kết;chart_corner
– góc biểu đồ mong muốn, có thể là một trong các giá trị của liệt kêENUM_BASE_CORNER
.
ENUM_BASE_CORNER
ID | Mô tả |
---|---|
CORNER_LEFT_UPPER | Trung tâm tọa độ ở góc trên bên trái của biểu đồ |
CORNER_LEFT_LOWER | Trung tâm tọa độ ở góc dưới bên trái của biểu đồ |
CORNER_RIGHT_LOWER | Trung tâm tọa độ ở góc dưới bên phải của biểu đồ |
CORNER_RIGHT_UPPER | Trung tâm tọa độ ở góc trên bên phải của biểu đồ |
Ví dụ:
cpp
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("Failed to create the object OBJ_LABEL ",name,", Error code = ", 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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34