Hàm xử lý sự kiện OnChartEvent
Một chỉ báo hoặc Cố vấn Chuyên gia có thể nhận các sự kiện tương tác từ thiết bị đầu cuối nếu mã chứa hàm OnChartEvent
với nguyên mẫu sau.
void OnChartEvent(const int event, const long &lparam, const double &dparam, const string &sparam)
Hàm này sẽ được thiết bị đầu cuối gọi để phản hồi các hành động của người dùng hoặc trong trường hợp tạo ra một "sự kiện người dùng" bằng cách sử dụng EventChartCustom
(xem thêm).
Trong tham số event
, định danh sự kiện (loại của nó) được truyền dưới dạng một trong những giá trị của liệt kê ENUM_CHART_EVENT (xem bảng).
Định danh | Mô tả |
---|---|
CHARTEVENT_KEYDOWN | Hành động bàn phím |
CHARTEVENT_MOUSE_MOVE | Di chuyển chuột và nhấp nút chuột (nếu thuộc tính CHART_EVENT_MOUSE_MOVE được đặt cho biểu đồ) |
CHARTEVENT_MOUSE_WHEEL | Nhấp hoặc cuộn bánh xe chuột (nếu thuộc tính CHART_EVENT_MOUSE_WHEEL được đặt cho biểu đồ) |
CHARTEVENT_CLICK | Nhấp chuột trên biểu đồ |
CHARTEVENT_OBJECT_CREATE | Tạo một đối tượng đồ họa (nếu thuộc tính CHART_EVENT_OBJECT_CREATE được đặt cho biểu đồ) |
CHARTEVENT_OBJECT_CHANGE | Sửa đổi một đối tượng đồ họa thông qua hộp thoại thuộc tính |
CHARTEVENT_OBJECT_DELETE | Xóa một đối tượng đồ họa (nếu thuộc tính CHART_EVENT_OBJECT_DELETE được đặt cho biểu đồ) |
CHARTEVENT_OBJECT_CLICK | Nhấp chuột trên một đối tượng đồ họa |
CHARTEVENT_OBJECT_DRAG | Kéo một đối tượng đồ họa |
CHARTEVENT_OBJECT_ENDEDIT | Hoàn tất chỉnh sửa văn bản trong đối tượng đồ họa "trường nhập" |
CHARTEVENT_CHART_CHANGE | Thay đổi kích thước hoặc thuộc tính biểu đồ (thông qua hộp thoại thuộc tính, thanh công cụ hoặc menu ngữ cảnh) |
CHARTEVENT_CUSTOM | Số bắt đầu của sự kiện từ phạm vi sự kiện tùy chỉnh |
CHARTEVENT_CUSTOM_LAST | Số kết thúc của sự kiện từ phạm vi sự kiện tùy chỉnh |
Các tham số lparam
, dparam
, và sparam
được sử dụng khác nhau tùy thuộc vào loại sự kiện. Nói chung, có thể nói rằng chúng chứa dữ liệu bổ sung cần thiết để xử lý một sự kiện cụ thể. Các phần sau sẽ cung cấp chi tiết cho từng loại.
Chú ý! Hàm
OnChartEvent
chỉ được gọi cho các chỉ báo và Cố vấn Chuyên gia được vẽ trực tiếp trên biểu đồ. Nếu bất kỳ chỉ báo nào được tạo bằng lập trình sử dụngiCustom
(xem thêm) hoặcIndicatorCreate
(xem thêm), các sự kiệnOnChartEvent
sẽ không được truyền đến nó.Ngoài ra, trình xử lý
OnChartEvent
không được gọi trong bộ kiểm tra, ngay cả trong chế độ trực quan.
Để minh họa đầu tiên về trình xử lý OnChartEvent
, hãy xem xét một chỉ báo không dùng bộ đệm EventAll.mq5
bắt và ghi lại tất cả các sự kiện.
void OnChartEvent(const int id,
const long &lparam, const double &dparam, const string &sparam)
{
ENUM_CHART_EVENT evt = (ENUM_CHART_EVENT)id;
PrintFormat("%s %lld %f '%s'", EnumToString(evt), lparam, dparam, sparam);
}
2
3
4
5
6
Theo mặc định, tất cả các loại sự kiện có thể được tạo trên biểu đồ, ngoại trừ bốn sự kiện lớn, như được chỉ ra trong bảng trên, được kích hoạt bởi các thuộc tính đặc biệt của biểu đồ. Trong phần tiếp theo, chúng ta sẽ bổ sung chỉ báo với các cài đặt để bao gồm các loại nhất định theo sở thích.
Chạy chỉ báo trên một biểu đồ có các đối tượng hiện có hoặc tạo các đối tượng trong khi chỉ báo đang chạy.
Thay đổi kích thước hoặc cài đặt của biểu đồ, thực hiện các lần nhấp chuột, và chỉnh sửa thuộc tính của các đối tượng. Các mục sau sẽ xuất hiện trong nhật ký.
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_CLICK 149 144.000000 ''
CHARTEVENT_OBJECT_CLICK 112 105.000000 'Daily Rectangle 53404'
CHARTEVENT_CLICK 112 105.000000 ''
CHARTEVENT_KEYDOWN 46 1.000000 '339'
CHARTEVENT_CLICK 13 252.000000 ''
CHARTEVENT_OBJECT_DRAG 0 0.000000 'Daily Button 61349'
CHARTEVENT_OBJECT_CLICK 145 104.000000 'Daily Button 61349'
CHARTEVENT_CLICK 145 104.000000 ''
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_OBJECT_DRAG 0 0.000000 'Daily Vertical Line 22641'
CHARTEVENT_OBJECT_DRAG 0 0.000000 'Daily Vertical Line 22641'
CHARTEVENT_OBJECT_CLICK 177 206.000000 'Daily Vertical Line 22641'
CHARTEVENT_CLICK 177 206.000000 ''
CHARTEVENT_OBJECT_CHANGE 0 0.000000 'Daily Rectangle 37930'
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_CLICK 152 118.000000 ''
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Ở đây chúng ta thấy các sự kiện thuộc nhiều loại khác nhau, ý nghĩa của các tham số của chúng sẽ trở nên rõ ràng sau khi đọc các phần tiếp theo.