Thuộc tính của thiết bị đầu cuối máy khách
Thông tin về thiết bị đầu cuối khách hàng có thể được lấy thông qua hai hàm: TerminalInfoInteger() và TerminalInfoString(). Đối với các tham số, các hàm này chấp nhận giá trị từ ENUM_TERMINAL_INFO_INTEGER
và ENUM_TERMINAL_INFO_STRING
tương ứng.
ENUM_TERMINAL_INFO_INTEGER
Định danh | Mô tả | Loại |
---|---|---|
TERMINAL_BUILD | Số phiên bản của thiết bị đầu cuối khách hàng | int |
TERMINAL_COMMUNITY_ACCOUNT | Cờ cho biết sự hiện diện của dữ liệu ủy quyền MQL5.community trong thiết bị đầu cuối | bool |
TERMINAL_COMMUNITY_CONNECTION | Kết nối tới MQL5.community | bool |
TERMINAL_CONNECTED | Kết nối tới máy chủ giao dịch | bool |
TERMINAL_DLLS_ALLOWED | Cho phép sử dụng DLL | bool |
TERMINAL_TRADE_ALLOWED | Cho phép giao dịch | bool |
TERMINAL_EMAIL_ENABLED | Cho phép gửi email bằng SMTP-server và đăng nhập, được chỉ định trong cài đặt thiết bị đầu cuối | bool |
TERMINAL_FTP_ENABLED | Cho phép gửi báo cáo bằng FTP-server và đăng nhập, được chỉ định trong cài đặt thiết bị đầu cuối | bool |
TERMINAL_NOTIFICATIONS_ENABLED | Cho phép gửi thông báo tới điện thoại thông minh | bool |
TERMINAL_MAXBARS | Số lượng thanh tối đa trên biểu đồ | int |
TERMINAL_MQID | Cờ cho biết sự hiện diện của dữ liệu MetaQuotes ID cho thông báo Push | bool |
TERMINAL_CODEPAGE | Số của trang mã của ngôn ngữ được cài đặt trong thiết bị đầu cuối khách hàng | int |
TERMINAL_CPU_CORES | Số lượng lõi CPU trong hệ thống | int |
TERMINAL_DISK_SPACE | Dung lượng đĩa trống cho thư mục MQL5\Files của thiết bị đầu cuối (agent), MB | int |
TERMINAL_MEMORY_PHYSICAL | Bộ nhớ vật lý trong hệ thống, MB | int |
TERMINAL_MEMORY_TOTAL | Bộ nhớ khả dụng cho tiến trình của thiết bị đầu cuối (agent), MB | int |
TERMINAL_MEMORY_AVAILABLE | Bộ nhớ trống của tiến trình thiết bị đầu cuối (agent), MB | int |
TERMINAL_MEMORY_USED | Bộ nhớ được sử dụng bởi thiết bị đầu cuối (agent), MB | int |
TERMINAL_X64 | Chỉ báo của "thiết bị đầu cuối 64-bit" | bool |
TERMINAL_OPENCL_SUPPORT | Phiên bản OpenCL được hỗ trợ dưới định dạng 0x00010002 = 1.2. "0" nghĩa là OpenCL không được hỗ trợ | int |
TERMINAL_SCREEN_DPI | Độ phân giải của màn hình được đo bằng số điểm trên mỗi inch (DPI). Biết giá trị tham số này, bạn có thể đặt kích thước của các đối tượng đồ họa để chúng trông giống nhau trên các màn hình có đặc tính độ phân giải khác nhau. | int |
TERMINAL_SCREEN_LEFT | Tọa độ bên trái của màn hình ảo. Màn hình ảo là một hình chữ nhật bao phủ tất cả các màn hình. Nếu hệ thống có hai màn hình được sắp xếp từ phải sang trái, thì tọa độ bên trái của màn hình ảo có thể nằm trên ranh giới của hai màn hình. | int |
TERMINAL_SCREEN_TOP | Tọa độ trên cùng của màn hình ảo | int |
TERMINAL_SCREEN_WIDTH | Chiều rộng thiết bị đầu cuối | int |
TERMINAL_SCREEN_HEIGHT | Chiều cao thiết bị đầu cuối | int |
TERMINAL_LEFT | Tọa độ bên trái của thiết bị đầu cuối so với màn hình ảo | int |
TERMINAL_TOP | Tọa độ trên cùng của thiết bị đầu cuối so với màn hình ảo | int |
TERMINAL_RIGHT | Tọa độ bên phải của thiết bị đầu cuối so với màn hình ảo | int |
TERMINAL_BOTTOM | Tọa độ dưới cùng của thiết bị đầu cuối so với màn hình ảo | int |
TERMINAL_PING_LAST | Giá trị ping cuối cùng được biết đến tới máy chủ giao dịch tính bằng micro giây. Một giây bao gồm một triệu micro giây | int |
TERMINAL_VPS | Chỉ báo rằng thiết bị đầu cuối được khởi chạy trên máy chủ lưu trữ ảo MetaTrader (VPS) | bool |
Định danh phím | Mô tả | |
TERMINAL_KEYSTATE_LEFT | Trạng thái của phím "Mũi tên trái" | int |
TERMINAL_KEYSTATE_UP | Trạng thái của phím "Mũi tên lên" | int |
TERMINAL_KEYSTATE_RIGHT | Trạng thái của phím "Mũi tên phải" | int |
TERMINAL_KEYSTATE_DOWN | Trạng thái của phím "Mũi tên xuống" | int |
TERMINAL_KEYSTATE_SHIFT | Trạng thái của phím "Shift" | int |
TERMINAL_KEYSTATE_CONTROL | Trạng thái của phím "Ctrl" | int |
TERMINAL_KEYSTATE_MENU | Trạng thái của phím "Windows" | int |
TERMINAL_KEYSTATE_CAPSLOCK | Trạng thái của phím "CapsLock" | int |
TERMINAL_KEYSTATE_NUMLOCK | Trạng thái của phím "NumLock" | int |
TERMINAL_KEYSTATE_SCRLOCK | Trạng thái của phím "ScrollLock" | int |
TERMINAL_KEYSTATE_ENTER | Trạng thái của phím "Enter" | int |
TERMINAL_KEYSTATE_INSERT | Trạng thái của phím "Insert" | int |
TERMINAL_KEYSTATE_DELETE | Trạng thái của phím "Delete" | int |
TERMINAL_KEYSTATE_HOME | Trạng thái của phím "Home" | int |
TERMINAL_KEYSTATE_END | Trạng thái của phím "End" | int |
TERMINAL_KEYSTATE_TAB | Trạng thái của phím "Tab" | int |
TERMINAL_KEYSTATE_PAGEUP | Trạng thái của phím "PageUp" | int |
TERMINAL_KEYSTATE_PAGEDOWN | Trạng thái của phím "PageDown" | int |
TERMINAL_KEYSTATE_ESCAPE | Trạng thái của phím "Escape" | int |
Việc gọi TerminalInfoInteger(TERMINAL_KEYSTATE_XXX)
trả về mã trạng thái của phím giống như hàm GetKeyState() trong MSDN.
Ví dụ tính toán hệ số tỷ lệ:
//--- Tạo một nút rộng 1.5 inch trên màn hình
int screen_dpi = `TerminalInfoInteger`(`TERMINAL_SCREEN_DPI`); // Tìm DPI của màn hình người dùng
int base_width = 144; // Chiều rộng cơ bản tính bằng điểm màn hình cho màn hình tiêu chuẩn với DPI=96
int width = (button_width * screen_dpi) / 96; // Tính chiều rộng nút cho màn hình người dùng (cho DPI cụ thể)
...
//--- Tính toán hệ số tỷ lệ dưới dạng phần trăm
int scale_factor=(`TerminalInfoInteger`(`TERMINAL_SCREEN_DPI`) * 100) / 96;
//--- Sử dụng hệ số tỷ lệ
width=(base_width * scale_factor) / 100;
2
3
4
5
6
7
8
9
10
Trong ví dụ trên, tài nguyên đồ họa trông giống nhau trên các màn hình có đặc tính độ phân giải khác nhau. Kích thước của các phần tử điều khiển (nút, cửa sổ hội thoại, v.v.) tương ứng với cài đặt cá nhân hóa.
ENUM_TERMINAL_INFO_DOUBLE
Định danh | Mô tả | Loại |
---|---|---|
TERMINAL_COMMUNITY_BALANCE | Số dư trong MQL5.community | double |
TERMINAL_RETRANSMISSION | Phần trăm các gói mạng được gửi lại trong giao thức TCP/IP cho tất cả các ứng dụng và dịch vụ đang chạy trên máy tính. Mất gói xảy ra ngay cả trong các mạng nhanh nhất và được cấu hình chính xác. Trong trường hợp này, không có xác nhận giao gói giữa người nhận và người gửi, do đó các gói bị mất được gửi lại. Đây không phải là chỉ báo về chất lượng kết nối giữa một thiết bị đầu cuối cụ thể và máy chủ giao dịch, vì phần trăm được tính cho toàn bộ hoạt động mạng, bao gồm cả hoạt động hệ thống và nền. Giá trị TERMINAL_RETRANSMISSION được yêu cầu từ hệ điều hành mỗi phút một lần. Thiết bị đầu cuối không tự tính toán giá trị này. | double |
Thao tác tệp chỉ có thể được thực hiện trong hai thư mục; các đường dẫn tương ứng có thể được lấy bằng cách yêu cầu các thuộc tính TERMINAL_DATA_PATH
và TERMINAL_COMMONDATA_PATH
.
ENUM_TERMINAL_INFO_STRING
Định danh | Mô tả | Loại |
---|---|---|
TERMINAL_LANGUAGE | Ngôn ngữ của thiết bị đầu cuối | string |
TERMINAL_COMPANY | Tên công ty | string |
TERMINAL_NAME | Tên thiết bị đầu cuối | string |
TERMINAL_PATH | Thư mục mà thiết bị đầu cuối được khởi động | string |
TERMINAL_DATA_PATH | Thư mục lưu trữ dữ liệu thiết bị đầu cuối | string |
TERMINAL_COMMONDATA_PATH | Đường dẫn chung cho tất cả các thiết bị đầu cuối được cài đặt trên máy tính | string |
TERMINAL_CPU_NAME | Tên CPU | string |
TERMINAL_CPU_ARCHITECTURE | Kiến trúc CPU | string |
TERMINAL_OS_VERSION | Tên hệ điều hành của người dùng | string |
Để hiểu rõ hơn về các đường dẫn được lưu trữ trong các thuộc tính của các tham số TERMINAL_PATH
, TERMINAL_DATA_PATH
và TERMINAL_COMMONDATA_PATH
, nên thực thi script sau, script này sẽ trả về các giá trị này cho bản sao hiện tại của thiết bị đầu cuối khách hàng được cài đặt trên máy tính của bạn.
Ví dụ: Script trả về thông tin về các đường dẫn của thiết bị đầu cuối khách hàng
//+------------------------------------------------------------------+
//| Check_TerminalPaths.mq5 |
//| Copyright 2009, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
`Print`("TERMINAL_PATH = ",`TerminalInfoString`(`TERMINAL_PATH`));
`Print`("TERMINAL_DATA_PATH = ",`TerminalInfoString`(`TERMINAL_DATA_PATH`));
`Print`("TERMINAL_COMMONDATA_PATH = ",`TerminalInfoString`(`TERMINAL_COMMONDATA_PATH`));
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Kết quả của việc thực thi script trong Nhật ký Chuyên gia, bạn sẽ thấy các thông báo như sau: