Điều khiển bằng chuột và bàn phím
Trong phần này, chúng ta sẽ làm quen với một nhóm thuộc tính ảnh hưởng đến cách biểu đồ phản ứng với một số thao tác chuột và bàn phím, vốn được coi là hành động điều khiển mặc định. Đặc biệt, người dùng MetaTrader 5 biết rõ rằng biểu đồ có thể được cuộn bằng chuột, và menu ngữ cảnh có thể được gọi để thực hiện các lệnh được yêu cầu nhiều nhất. MQL5 cho phép tắt hoàn toàn hoặc một phần hành vi này của biểu đồ. Điều quan trọng cần lưu ý là điều này chỉ có thể được thực hiện bằng lập trình: không có tùy chọn tương tự trong giao diện người dùng của terminal.
Ngoại lệ duy nhất là tùy chọn CHART_DRAG_TRADE_LEVELS
(xem trong bảng dưới đây): cài đặt terminal cung cấp tab Charts
với một danh sách thả xuống kiểm soát quyền kéo các mức giao dịch bằng chuột.
Tất cả các thuộc tính của nhóm này đều có kiểu boolean (true
cho phép và false
cho tắt) và chúng nằm trong liệt kê ENUM_CHART_PROPERTY_INTEGER
.
Định danh | Mô tả |
---|---|
CHART_CONTEXT_MENU | Bật/tắt truy cập menu ngữ cảnh bằng cách nhấn nút chuột phải. Giá trị false chỉ tắt menu ngữ cảnh của biểu đồ, trong khi menu ngữ cảnh cho các đối tượng trên biểu đồ vẫn khả dụng. Giá trị mặc định là true . |
CHART_CROSSHAIR_TOOL | Bật/tắt truy cập công cụ Crosshair bằng cách nhấn nút chuột giữa. Giá trị mặc định là true . |
CHART_MOUSE_SCROLL | Cuộn biểu đồ bằng nút chuột trái hoặc bánh xe. Khi cuộn được bật, điều này áp dụng không chỉ cho cuộn ngang mà còn cuộn dọc, nhưng cuộn dọc chỉ khả dụng khi thang cố định được đặt: một trong các thuộc tính CHART_SCALEFIX , CHART_SCALEFIX_11 , hoặc CHART_SCALE_PT_PER_BAR . Giá trị mặc định là true . |
CHART_KEYBOARD_CONTROL | Khả năng quản lý biểu đồ từ bàn phím (các nút Home , End , PageUp/PageDown , +/-, mũi tên lên/xuống, v.v.). Đặt thành false cho phép tắt cuộn và thay đổi tỷ lệ biểu đồ, nhưng đồng thời vẫn có thể nhận sự kiện nhấn phím cho các phím này trong OnChartEvent . Giá trị mặc định là true . |
CHART_QUICK_NAVIGATION | Bật thanh điều hướng nhanh trong biểu đồ, tự động xuất hiện ở góc trái của dòng thời gian khi nhấp đúp chuột hoặc nhấn phím Space hoặc Input . Sử dụng thanh này, bạn có thể nhanh chóng thay đổi biểu tượng, khung thời gian hoặc ngày của thanh đầu tiên hiển thị. Mặc định, thuộc tính được đặt thành true và điều hướng nhanh được bật. |
CHART_DRAG_TRADE_LEVELS | Quyền kéo các mức giao dịch trên biểu đồ bằng chuột. Chế độ kéo được bật mặc định (true ). |
Trong script thử nghiệm ChartInputControl.mq5
, chúng ta sẽ thiết lập bộ giám sát cho tất cả các thuộc tính trên, và ngoài ra, cung cấp các biến đầu vào để người dùng tùy ý thiết lập giá trị. Script của chúng ta lưu một bản sao lưu của các cài đặt khi khởi động, vì vậy tất cả các thuộc tính đã thay đổi sẽ được khôi phục khi script kết thúc.
#property script_show_inputs
#include <MQL5Book/ChartModeMonitor.mqh>
input bool ContextMenu = true; // CHART_CONTEXT_MENU
input bool CrossHairTool = true; // CHART_CROSSHAIR_TOOL
input bool MouseScroll = true; // CHART_MOUSE_SCROLL
input bool KeyboardControl = true; // CHART_KEYBOARD_CONTROL
input bool QuickNavigation = true; // CHART_QUICK_NAVIGATION
input bool DragTradeLevels = true; // CHART_DRAG_TRADE_LEVELS
void OnStart()
{
const bool Inputs[] =
{
ContextMenu, CrossHairTool, MouseScroll,
KeyboardControl, QuickNavigation, DragTradeLevels
};
const int flags[] =
{
CHART_CONTEXT_MENU, CHART_CROSSHAIR_TOOL, CHART_MOUSE_SCROLL,
CHART_KEYBOARD_CONTROL, CHART_QUICK_NAVIGATION, CHART_DRAG_TRADE_LEVELS
};
ChartModeMonitor m(flags);
Print("Initial state:");
m.print();
m.backup();
for(int i = 0; i < ArraySize(flags); ++i)
{
ChartSetInteger(0, (ENUM_CHART_PROPERTY_INTEGER)flags[i], Inputs[i]);
}
while(!IsStopped())
{
m.snapshot();
Sleep(500);
}
m.restore();
}
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
35
36
37
38
39
40
Ví dụ, khi chúng ta chạy script, chúng ta có thể đặt lại quyền cho menu ngữ cảnh, công cụ crosshair, điều khiển chuột và bàn phím thành false
. Kết quả nằm trong nhật ký sau.
Initial state:
[key] [value]
[0] 50 1
[1] 49 1
[2] 42 1
[3] 47 1
[4] 45 1
[5] 43 1
CHART_CONTEXT_MENU 1 -> 0
CHART_CROSSHAIR_TOOL 1 -> 0
CHART_MOUSE_SCROLL 1 -> 0
CHART_KEYBOARD_CONTROL 1 -> 0
2
3
4
5
6
7
8
9
10
11
12
Trong trường hợp này, bạn sẽ không thể di chuyển biểu đồ bằng chuột hoặc bàn phím, thậm chí không thể gọi menu ngữ cảnh. Do đó, để khôi phục hoạt động của nó, bạn sẽ phải thả cùng một script hoặc một script khác lên biểu đồ (nhớ rằng chỉ có thể có một script trên biểu đồ, và khi một script mới được áp dụng, script trước đó sẽ bị gỡ bỏ). Chỉ cần thả một phiên bản mới của script, nhưng không chạy nó (nhấn Cancel
trong hộp thoại nhập biến đầu vào).