Lấy danh sách biến toàn cục
Thông thường, một chương trình MQL cần xem qua các biến toàn cục hiện có và chọn những biến đáp ứng một số tiêu chí. Ví dụ, nếu một chương trình sử dụng một phần của tên biến để lưu trữ thông tin văn bản, thì chỉ tiền tố được biết trước. Mục đích của tiền tố này là để xác định biến "của riêng nó", và "dữ liệu tải" gắn vào tiền tố không cho phép tìm kiếm biến bằng tên chính xác.
API MQL5 có hai hàm cho phép liệt kê các biến toàn cục.
int GlobalVariablesTotal()
Hàm này trả về tổng số biến toàn cục.
string GlobalVariableName(int index)
Hàm này trả về tên của biến toàn cục theo số chỉ mục của nó trong danh sách các biến toàn cục. Tham số index
với số của biến được yêu cầu phải nằm trong khoảng từ 0 đến GlobalVariablesTotal() - 1
.
Trong trường hợp có lỗi, hàm sẽ trả về NULL
, và mã lỗi có thể được lấy từ biến dịch vụ _LastError
hoặc hàm GetLastError
.
Hãy kiểm tra cặp hàm này bằng script GlobalsList.mq5
.
void OnStart()
{
PRTF(GlobalVariableName(1000000));
int n = PRTF(GlobalVariablesTotal());
for(int i = 0; i < n; ++i)
{
const string name = GlobalVariableName(i);
PrintFormat("%d %s=%f", i, name, GlobalVariableGet(name));
}
}
2
3
4
5
6
7
8
9
10
Dòng đầu tiên cố ý yêu cầu tên của một biến với số lớn, mà rất có thể không tồn tại, và điều đó sẽ gây ra lỗi. Tiếp theo, một yêu cầu được thực hiện để lấy số lượng biến thực tế và một vòng lặp qua tất cả chúng, với việc xuất ra tên và giá trị. Nhật ký dưới đây bao gồm các biến được tạo bởi các script thử nghiệm trước đó và một biến bên thứ ba.
GlobalVariableName(1000000)= / GLOBALVARIABLE_NOT_FOUND(4501)
GlobalVariablesTotal()=3 / ok
0 GlobalsRunCheck.mq5=3.000000
1 GlobalsRunCount.mq5=4.000000
2 abracadabra=0.000000
2
3
4
5
Thứ tự mà terminal trả về các biến theo chỉ mục không được xác định.