Thuộc tính biểu đồ liên quan đến sự kiện
Bốn loại sự kiện có khả năng tạo ra nhiều thông điệp và do đó bị tắt theo mặc định. Để kích hoạt hoặc tắt chúng sau này, hãy đặt các thuộc tính biểu đồ phù hợp bằng hàm ChartSetInteger
(xem thêm). Tất cả các thuộc tính đều thuộc kiểu Boolean: true
có nghĩa là bật, và false
có nghĩa là tắt.
Định danh | Mô tả |
---|---|
CHART_EVENT_MOUSE_WHEEL | Gửi thông điệp CHARTEVENT_MOUSE_WHEEL về các sự kiện bánh xe chuột đến biểu đồ |
CHART_EVENT_MOUSE_MOVE | Gửi thông điệp CHARTEVENT_MOUSE_MOVE về các chuyển động chuột đến biểu đồ |
CHART_EVENT_OBJECT_CREATE | Gửi thông điệp CHARTEVENT_OBJECT_CREATE về việc tạo đối tượng đồ họa đến biểu đồ |
CHART_EVENT_OBJECT_DELETE | Gửi thông điệp CHARTEVENT_OBJECT_DELETE về việc xóa đối tượng đồ họa đến biểu đồ |
Nếu bất kỳ chương trình MQL nào thay đổi một trong những thuộc tính này, nó sẽ ảnh hưởng đến tất cả các chương trình khác chạy trên cùng biểu đồ và vẫn có hiệu lực ngay cả sau khi chương trình ban đầu kết thúc.
Theo mặc định, tất cả các thuộc tính có giá trị false
.
Hãy bổ sung chỉ báo EventAll.mq5
từ phần trước với bốn biến đầu vào cho phép bật bất kỳ loại sự kiện nào trong số này (ngoài các loại còn lại không thể tắt). Ngoài ra, chúng ta sẽ mô tả bốn biến phụ trợ để có thể khôi phục cài đặt biểu đồ sau khi xóa chỉ báo.
input bool ShowMouseMove = false;
input bool ShowMouseWheel = false;
input bool ShowObjectCreate = false;
input bool ShowObjectDelete = false;
bool mouseMove, mouseWheel, objectCreate, objectDelete;
2
3
4
5
6
Khi khởi động, ghi nhớ các giá trị hiện tại của các thuộc tính và sau đó áp dụng các cài đặt do người dùng chọn.
void OnInit()
{
mouseMove = PRTF(ChartGetInteger(0, CHART_EVENT_MOUSE_MOVE));
mouseWheel = PRTF(ChartGetInteger(0, CHART_EVENT_MOUSE_WHEEL));
objectCreate = PRTF(ChartGetInteger(0, CHART_EVENT_OBJECT_CREATE));
objectDelete = PRTF(ChartGetInteger(0, CHART_EVENT_OBJECT_DELETE));
ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, ShowMouseMove);
ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, ShowMouseWheel);
ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, ShowObjectCreate);
ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, ShowObjectDelete);
}
2
3
4
5
6
7
8
9
10
11
12
Các thuộc tính được khôi phục trong trình xử lý OnDeinit
.
void OnDeinit(const int)
{
ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, mouseMove);
ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, mouseWheel);
ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, objectCreate);
ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, objectDelete);
}
2
3
4
5
6
7
Chạy chỉ báo với các loại sự kiện mới được bật. Hãy chuẩn bị cho nhiều thông điệp chuyển động chuột. Dưới đây là một đoạn trích của nhật ký:
CHARTEVENT_MOUSE_WHEEL 5308557 -120.000000 ''
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_MOUSE_WHEEL 5308557 -120.000000 ''
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_MOUSE_MOVE 141 81.000000 '2'
CHARTEVENT_MOUSE_MOVE 141 81.000000 '0'
...
CHARTEVENT_OBJECT_CREATE 0 0.000000 'Daily Rectangle 37664'
CHARTEVENT_MOUSE_MOVE 323 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 322 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 321 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 320 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 318 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 316 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 314 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 314 145.000000 '0'
...
CHARTEVENT_OBJECT_DELETE 0 0.000000 'Daily Rectangle 37664'
CHARTEVENT_KEYDOWN 46 1.000000 '339'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Chúng ta sẽ tiết lộ các chi tiết của thông tin cho từng loại sự kiện trong các phần liên quan dưới đây.