Thuộc tính của đối tượng
Các đối tượng đồ họa có thể có nhiều thuộc tính khác nhau tùy thuộc vào loại đối tượng. Giá trị của các thuộc tính đối tượng được thiết lập và nhận thông qua các hàm làm việc với đối tượng đồ họa tương ứng.
Tất cả các đối tượng được sử dụng trong phân tích kỹ thuật đều được gắn với tọa độ thời gian và giá: đường xu hướng, kênh, công cụ Fibonacci, v.v. Nhưng cũng có một số đối tượng phụ trợ nhằm cải thiện giao diện người dùng, được gắn với phần luôn hiển thị của biểu đồ (cửa sổ biểu đồ chính hoặc cửa sổ phụ của chỉ báo):
Đố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ồ.
Các hàm xác định thuộc tính của đối tượng đồ họa, cũng như các thao tác ObjectCreate() và ObjectMove() để tạo và di chuyển đối tượng trên biểu đồ thực chất được sử dụng để gửi lệnh đến biểu đồ. Nếu các hàm này được thực thi thành công, lệnh sẽ được đưa vào hàng đợi chung của các sự kiện biểu đồ. Những thay đổi trực quan trong thuộc tính của các đối tượng đồ họa được thực hiện khi xử lý hàng đợi sự kiện của biểu đồ.
Do đó, không nên mong đợi cập nhật trực quan ngay lập tức của các đối tượng đồ họa sau khi gọi các hàm này. Nói chung, các đối tượng đồ họa trên biểu đồ được cập nhật tự động bởi terminal sau các sự kiện thay đổi - sự xuất hiện của báo giá mới, thay đổi kích thước cửa sổ biểu đồ, v.v. Sử dụng hàm ChartRedraw() để buộc cập nhật các đối tượng đồ họa.
Đối với các hàm ObjectSetInteger() và ObjectGetInteger()
ENUM_OBJECT_PROPERTY_INTEGER
Định danh | Mô tả | Kiểu thuộc tính |
---|---|---|
OBJPROP_COLOR | Màu sắc | color |
OBJPROP_STYLE | Kiểu dáng | ENUM_LINE_STYLE |
OBJPROP_WIDTH | Độ dày đường kẻ | int |
OBJPROP_BACK | Đối tượng ở nền | bool |
OBJPROP_ZORDER | Độ ưu tiên của đối tượng đồ họa để nhận sự kiện nhấp chuột trên biểu đồ (CHARTEVENT_CLICK). Giá trị mặc định là 0 khi tạo đối tượng; độ ưu tiên có thể được tăng nếu cần. Khi các đối tượng được đặt chồng lên nhau, chỉ một trong số chúng có độ ưu tiên cao nhất sẽ nhận sự kiện CHARTEVENT_CLICK . | long |
OBJPROP_FILL | Tô màu đối tượng (cho OBJ_RECTANGLE , OBJ_TRIANGLE , OBJ_ELLIPSE , OBJ_CHANNEL , OBJ_STDDEVCHANNEL , OBJ_REGRESSION ) | bool |
OBJPROP_HIDDEN | Cấm hiển thị tên của đối tượng đồ họa trong danh sách đối tượng từ menu terminal "Biểu đồ" - "Đối tượng" - "Danh sách đối tượng". Giá trị true cho phép ẩn đối tượng khỏi danh sách. Theo mặc định, true được đặt cho các đối tượng hiển thị sự kiện lịch, lịch sử giao dịch và các đối tượng tạo từ chương trình MQL5. Để xem các đối tượng đồ họa như vậy và truy cập thuộc tính của chúng, nhấp vào nút "Tất cả" trong cửa sổ "Danh sách đối tượng". | bool |
OBJPROP_SELECTED | Đối tượng được chọn | bool |
OBJPROP_READONLY | Khả năng chỉnh sửa văn bản trong đối tượng Edit | bool |
OBJPROP_TYPE | Loại đối tượng | ENUM_OBJECT r/o |
OBJPROP_TIME | Tọa độ thời gian | datetime modifier=số điểm neo |
OBJPROP_SELECTABLE | Khả năng chọn đối tượng | bool |
OBJPROP_CREATETIME | Thời gian tạo đối tượng | datetime r/o |
OBJPROP_LEVELS | Số lượng mức | int |
OBJPROP_LEVELCOLOR | Màu của đường mức | color modifier=số mức |
OBJPROP_LEVELSTYLE | Kiểu của đường mức | ENUM_LINE_STYLE modifier=số mức |
OBJPROP_LEVELWIDTH | Độ dày của đường mức | int modifier=số mức |
OBJPROP_ALIGN | Căn chỉnh ngang văn bản trong đối tượng "Edit" (OBJ_EDIT ) | ENUM_ALIGN_MODE |
OBJPROP_FONTSIZE | Kích thước phông chữ | int |
OBJPROP_RAY_LEFT | Tia đi sang trái | bool |
OBJPROP_RAY_RIGHT | Tia đi sang phải | bool |
OBJPROP_RAY | Đường thẳng đứng đi qua tất cả các cửa sổ của biểu đồ | bool |
OBJPROP_ELLIPSE | Hiển thị toàn bộ elip của đối tượng Fibonacci Arc (OBJ_FIBOARC) | bool |
OBJPROP_ARROWCODE | Mã mũi tên cho đối tượng Arrow | uchar |
OBJPROP_TIMEFRAMES | Khả năng hiển thị của đối tượng tại các khung thời gian | tập hợp các cờ flags |
OBJPROP_ANCHOR | Vị trí của điểm neo của đối tượng đồ họa | ENUM_ARROW_ANCHOR (cho OBJ_ARROW ), ENUM_ANCHOR_POINT (cho OBJ_LABEL , OBJ_BITMAP_LABEL và OBJ_TEXT ) |
OBJPROP_XDISTANCE | Khoảng cách tính bằng pixel dọc theo trục X từ góc gắn kết (xem ghi chú) | int |
OBJPROP_YDISTANCE | Khoảng cách tính bằng pixel dọc theo trục Y từ góc gắn kết (xem ghi chú) | int |
OBJPROP_DIRECTION | Xu hướng của đối tượng Gann | ENUM_GANN_DIRECTION |
OBJPROP_DEGREE | Mức độ của Đánh dấu Sóng Elliott | ENUM_ELLIOT_WAVE_DEGREE |
OBJPROP_DRAWLINES | Hiển thị các đường để đánh dấu Sóng Elliott | bool |
OBJPROP_STATE | Trạng thái nút (nhấn / thả) | bool |
OBJPROP_CHART_ID | ID của đối tượng "Chart" (OBJ_CHART). Cho phép làm việc với các thuộc tính của đối tượng này như với biểu đồ bình thường bằng các hàm được mô tả trong Thao tác Biểu đồ, nhưng có một số ngoại lệ. | long r/o |
OBJPROP_XSIZE | Chiều rộng của đối tượng dọc theo trục X tính bằng pixel. Được chỉ định cho các đối tượng OBJ_LABEL (read only), OBJ_BUTTON , OBJ_CHART , OBJ_BITMAP , OBJ_BITMAP_LABEL , OBJ_EDIT , OBJ_RECTANGLE_LABEL . | int |
OBJPROP_YSIZE | Chiều cao của đối tượng dọc theo trục Y tính bằng pixel. Được chỉ định cho các đối tượng OBJ_LABEL (read only), OBJ_BUTTON , OBJ_CHART , OBJ_BITMAP , OBJ_BITMAP_LABEL , OBJ_EDIT , OBJ_RECTANGLE_LABEL . | int |
OBJPROP_XOFFSET | Tọa độ X của góc trên bên trái của khu vực hiển thị hình chữ nhật trong các đối tượng đồ họa "Bitmap Label" và "Bitmap" (OBJ_BITMAP_LABEL và OBJ_BITMAP ). Giá trị được đặt bằng pixel so với góc trên bên trái của hình ảnh gốc. | int |
OBJPROP_YOFFSET | Tọa độ Y của góc trên bên trái của khu vực hiển thị hình chữ nhật trong các đối tượng đồ họa "Bitmap Label" và "Bitmap" (OBJ_BITMAP_LABEL và OBJ_BITMAP ). Giá trị được đặt bằng pixel so với góc trên bên trái của hình ảnh gốc. | int |
OBJPROP_PERIOD | Khung thời gian cho đối tượng Chart | ENUM_TIMEFRAMES |
OBJPROP_DATE_SCALE | Hiển thị thang thời gian cho đối tượng Chart | bool |
OBJPROP_PRICE_SCALE | Hiển thị thang giá cho đối tượng Chart | bool |
OBJPROP_CHART_SCALE | Tỷ lệ cho đối tượng Chart | int giá trị trong khoảng 0–5 |
OBJPROP_BGCOLOR | Màu nền cho OBJ_EDIT , OBJ_BUTTON , OBJ_RECTANGLE_LABEL | color |
OBJPROP_CORNER | Góc của biểu đồ để liên kết đối tượng đồ họa | ENUM_BASE_CORNER |
OBJPROP_BORDER_TYPE | Loại viền cho đối tượng "Rectangle label" | ENUM_BORDER_TYPE |
OBJPROP_BORDER_COLOR | Màu viền cho các đối tượng OBJ_EDIT và OBJ_BUTTON | color |
Khi sử dụng thao tác biểu đồ cho đối tượng "Chart" (OBJ_CHART), các giới hạn sau được áp dụng:
- Không thể đóng nó bằng ChartClose();
- Không thể thay đổi ký hiệu/kỳ bằng hàm ChartSetSymbolPeriod();
- Các thuộc tính sau không có hiệu lực:
CHART_SCALE
,CHART_BRING_TO_TOP
,CHART_SHOW_DATE_SCALE
vàCHART_SHOW_PRICE_SCALE
(ENUM_CHART_PROPERTY_INTEGER).
Bạn có thể đặt chế độ hiển thị hình ảnh đặc biệt cho các đối tượng OBJ_BITMAP_LABEL và OBJ_BITMAP. Trong chế độ này, chỉ một phần của hình ảnh gốc (nơi áp dụng khu vực hiển thị hình chữ nhật) được hiển thị, trong khi phần còn lại của hình ảnh trở nên vô hình. Kích thước của khu vực này nên được đặt bằng các thuộc tính OBJPROP_XSIZE
và OBJPROP_YSIZE
. Khu vực hiển thị có thể được "di chuyển" chỉ trong phạm vi hình ảnh gốc bằng các thuộc tính OBJPROP_XOFFSET
và OBJPROP_YOFFSET
.
Đối với các đối tượng có kích thước cố định: OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT và OBJ_CHART, các thuộc tính OBJPROP_XDISTANCE
và OBJPROP_YDISTANCE
đặt vị trí của điểm trên cùng bên trái của đối tượng so với góc biểu đồ (OBJPROP_CORNER
), từ đó tọa độ X và Y sẽ được tính bằng pixel.
Đối với các hàm ObjectSetDouble() và ObjectGetDouble()
ENUM_OBJECT_PROPERTY_DOUBLE
Định danh | Mô tả | Kiểu thuộc tính |
---|---|---|
OBJPROP_PRICE | Tọa độ giá | double modifier=số điểm neo |
OBJPROP_LEVELVALUE | Giá trị mức | double modifier=số mức |
OBJPROP_SCALE | Tỷ lệ (thuộc tính của các đối tượng Gann và Fibonacci Arcs) | double |
OBJPROP_ANGLE | Góc. Đối với các đối tượng không có góc được chỉ định, được tạo từ chương trình, giá trị bằng EMPTY_VALUE | double |
OBJPROP_DEVIATION | Độ lệch cho Kênh Độ lệch Chuẩn | double |
Đối với các hàm ObjectSetString() và ObjectGetString()
ENUM_OBJECT_PROPERTY_STRING
Định danh | Mô tả | Kiểu thuộc tính |
---|---|---|
OBJPROP_NAME | Tên đối tượng | string |
OBJPROP_TEXT | Mô tả của đối tượng (văn bản chứa trong đối tượng) | string |
OBJPROP_TOOLTIP | Văn bản của tooltip. Nếu thuộc tính không được đặt, tooltip được tạo tự động bởi terminal sẽ được hiển thị. Tooltip có thể bị vô hiệu hóa bằng cách đặt giá trị "\n" (xuống dòng) cho nó | string |
OBJPROP_LEVELTEXT | Mô tả mức | string modifier=số mức |
OBJPROP_FONT | Phông chữ | string |
OBJPROP_BMPFILE | Tên tệp BMP cho Bitmap Label. Xem thêm Tài nguyên | string modifier: 0-trạng thái ON, 1-trạng thái OFF |
OBJPROP_SYMBOL | Ký hiệu cho đối tượng Chart | string |
Đối với đối tượng OBJ_RECTANGLE_LABEL
("Rectangle label"), một trong ba chế độ thiết kế có thể được đặt, tương ứng với các giá trị sau của ENUM_BORDER_TYPE
.
ENUM_BORDER_TYPE
Định danh | Mô tả |
---|---|
BORDER_FLAT | Dạng phẳng |
BORDER_RAISED | Dạng nổi |
BORDER_SUNKEN | Dạng lõm |
Đối với đối tượng OBJ_EDIT
("Edit") và hàm ChartScreenShot(), bạn có thể chỉ định kiểu căn chỉnh ngang bằng các giá trị của liệt kê ENUM_ALIGN_MODE
.
ENUM_ALIGN_MODE
Định danh | Mô tả |
---|---|
ALIGN_LEFT | Căn trái |
ALIGN_CENTER | Căn giữa (chỉ cho đối tượng Edit) |
ALIGN_RIGHT | Căn phải |
Ví dụ:
#define UP "\x0431"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
string label_name="my_OBJ_LABEL_object";
if(ObjectFind(0,label_name)<0)
{
Print("Object ",label_name," not found. Error code = ",GetLastError());
//--- create Label object
ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);
//--- set X coordinate
ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
//--- set Y coordinate
ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
//--- define text color
ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
//--- define text for object Label
ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
//--- define font
ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
//--- define font size
ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
//--- 45 degrees rotation clockwise
ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
//--- disable for mouse selecting
ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
//--- draw it on the chart
ChartRedraw(0);
}
}
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