Lấy số lượng và khả năng hiển thị của các cửa sổ/cửa sổ phụ
Sử dụng hàm ChartGetInteger
, một chương trình MQL có thể tìm ra số lượng cửa sổ trên một biểu đồ (bao gồm cả cửa sổ phụ), cũng như khả năng hiển thị của chúng.
Định danh | Mô tả | Kiểu giá trị |
---|---|---|
CHART_WINDOWS_TOTAL | Tổng số cửa sổ biểu đồ, bao gồm các cửa sổ phụ của chỉ báo (r/o) | int |
CHART_WINDOW_IS_VISIBLE | Khả năng hiển thị của cửa sổ phụ, tham số window là số thứ tự cửa sổ phụ (r/o) | bool |
Một số cửa sổ phụ có thể bị ẩn nếu các chỉ báo đặt trong chúng bị vô hiệu hóa trên khung thời gian hiện tại trong hộp thoại Thuộc tính, trên tab Hiển thị. Không thể đặt lại tất cả các cờ: do bản chất lưu trữ của mẫu tpl, trạng thái như vậy được hiểu là bật tất cả các khung thời gian. Vì vậy, nếu người dùng muốn ẩn cửa sổ phụ trong một khoảng thời gian, cần để lại ít nhất một cờ được bật trên khung thời gian ít sử dụng nhất.
Thiết lập khả năng hiển thị chỉ báo trên các khung thời gian khác nhau
Cần lưu ý rằng không có công cụ tiêu chuẩn nào trong MQL5 để xác định trạng thái và chuyển đổi các cờ cụ thể theo chương trình. Cách đơn giản nhất để mô phỏng điều khiển như vậy là lưu mẫu tpl và phân tích nó, với khả năng chỉnh sửa và tải lại sau đó (xem phần Làm việc với mẫu tpl).
Trong phiên bản mới của script ChartList4.mq5
, chúng ta xuất ra số lượng cửa sổ phụ (một cửa sổ, là cửa sổ chính, luôn có mặt), dấu hiệu hoạt động của biểu đồ, dấu hiệu của một đối tượng biểu đồ, và tay cầm Windows.
const int win = (int)ChartGetInteger(id, CHART_WINDOWS_TOTAL);
const string header = StringFormat("%d %lld %s %s %s %s %s %s %lld",
count, id, ChartSymbol(id), PeriodToString(ChartPeriod(id)),
(win > 1 ? "#" + (string)(win - 1) : ""), (id == me ? " *" : ""),
(ChartGetInteger(id, CHART_BRING_TO_TOP, 0) ? "active" : ""),
(ChartGetInteger(id, CHART_IS_OBJECT) ? "object" : ""),
ChartGetInteger(id, CHART_WINDOW_HANDLE));
...
for(int i = 0; i < win; i++)
{
const bool visible = ChartGetInteger(id, CHART_WINDOW_IS_VISIBLE, i);
if(!visible)
{
Print(" ", i, "/Hidden");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dưới đây là kết quả có thể trông như thế nào.
Chart List
N, ID, Symbol, TF, #subwindows, *active, Windows handle
0 132358585987782873 EURUSD M15 #1 68030
1 132360375330772909 EURUSD H1 * active 68048
[S] ChartList4
2 132544239145024745 XAUUSD H1 395756
3 132544239145024732 USDRUB D1 395768
4 132544239145024744 EURUSD H1 #2 461286
2/Hidden
Total chart number: 5, with MQL-programs: 1
Experts: 0, Scripts: 1
2
3
4
5
6
7
8
9
10
11
Trên biểu đồ đầu tiên (chỉ số 0) có một cửa sổ phụ (#1
). Có hai cửa sổ phụ (#2
) trên biểu đồ cuối cùng, và cái thứ hai hiện đang bị ẩn. Sau này, trong phần Quản lý chỉ báo trên biểu đồ, chúng ta sẽ trình bày phiên bản đầy đủ của ChartList.mq5
, nơi chúng ta đưa vào báo cáo thông tin về các chỉ báo nằm trong cửa sổ phụ và cửa sổ chính.
Chú ý! Một biểu đồ bên trong một đối tượng biểu đồ luôn có thuộc tính
CHART_WINDOW_IS_VISIBLE
bằngtrue
, ngay cả khi khả năng hiển thị của đối tượng bị tắt trên khung thời gian hiện tại hoặc trên tất cả các khung thời gian.