Lấy danh sách biểu đồ
Một chương trình MQL có thể lấy danh sách các biểu đồ được mở trong terminal (cả cửa sổ và đối tượng biểu đồ) bằng cách sử dụng các hàm ChartFirst
và ChartNext
.
long ChartFirst()
long ChartNext(long chartId)
Hàm ChartFirst
trả về định danh của biểu đồ đầu tiên trong terminal khách. MetaTrader 5 duy trì một danh sách nội bộ của tất cả các biểu đồ, thứ tự có thể khác với những gì chúng ta thấy trên màn hình, ví dụ, trong các tab cửa sổ khi chúng được phóng to. Đặc biệt, thứ tự trong danh sách có thể thay đổi do kéo thả tab, tháo rời và gắn lại các cửa sổ. Sau khi tải terminal, thứ tự hiển thị của các bookmark giống với chế độ xem danh sách nội bộ.
Hàm ChartNext
trả về ID của biểu đồ tiếp theo sau biểu đồ với chartId
được chỉ định.
Không giống như các hàm khác để làm việc với biểu đồ, giá trị 0 trong tham số ChartId
không có nghĩa là biểu đồ hiện tại, mà là đầu danh sách. Nói cách khác, lời gọi ChartNext(0)
tương đương với ChartFirst
.
Nếu đã đến cuối danh sách, hàm trả về -1.
Script ChartList1.mq5
xuất danh sách biểu đồ vào nhật ký. Công việc chính được thực hiện bởi hàm ChartList
được gọi từ OnStart
. Ngay từ đầu hàm, chúng ta lấy định danh của biểu đồ hiện tại bằng ChartID
và sau đó đánh dấu nó bằng dấu sao trong danh sách. Cuối cùng, tổng số biểu đồ được xuất ra.
void OnStart()
{
ChartList();
}
void ChartList()
{
const long me = ChartID();
long id = ChartFirst();
// long id = ChartNext(0); - analogue of calling ChartFirst()
int count = 0, used = 0;
Print("Chart List\nN, ID, *active");
// keep iterating over charts until there are none left
while(id != -1)
{
const string header = StringFormat("%d %lld %s",
count, id, (id == me ? " *" : ""));
// fields: N, id, label of the current chart
Print(header);
count++;
id = ChartNext(id);
}
Print("Total chart number: ", count);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Một kết quả ví dụ được hiển thị dưới đây.
Chart List
N, ID, *active
0 132358585987782873
1 132360375330772909 *
2 132544239145024745
3 132544239145024732
4 132544239145024744
Total chart number: 5
2
3
4
5
6
7
8