Áp dụng các chỉ thị để tùy chỉnh biểu đồ
Cho đến nay, chúng ta đã tùy chỉnh các biểu đồ đồ họa bằng cách sử dụng các lời gọi hàm PlotIndexSetInteger
. MQL5 cho phép bạn thực hiện điều tương tự bằng cách sử dụng các chỉ thị tiền xử lý #property
. Sự khác biệt chính giữa hai phương pháp này là các chỉ thị được xử lý tại thời điểm biên dịch và các thuộc tính được mô tả bằng chúng sẽ được đọc từ tệp thực thi trong quá trình tải, thậm chí trước khi trình xử lý OnInit
được thực thi (nếu nó tồn tại). Nói cách khác, các chỉ thị cung cấp một số giá trị mặc định có thể được sử dụng nguyên trạng nếu bạn không cần thay đổi chúng.
Mặt khác, lời gọi hàm PlotIndexSetInteger
cho phép bạn thay đổi các thuộc tính ngay trong quá trình thực thi chương trình. Việc thay đổi thuộc tính một cách linh hoạt bằng các hàm cho phép bạn tạo ra các kịch bản linh hoạt hơn để sử dụng chỉ báo. Các chỉ thị và các lời gọi hàm PlotIndexSetInteger
liên quan được thể hiện trong bảng dưới đây.
Chỉ thị | Hàm | Mô tả |
---|---|---|
indicator_colorN | PlotIndexSetInteger(N-1, PLOT_LINE_COLOR, color) | Màu đường vẽ |
indicator_styleN | PlotIndexSetInteger(N-1, PLOT_LINE_STYLE, type) | Kiểu vẽ từ liệt kê ENUM_LINE_STYLE |
indicator_typeN | PlotIndexSetInteger(N-1, PLOT_DRAW_TYPE, type) | Loại vẽ từ liệt kê ENUM_DRAW_TYPE |
indicator_widthN | PlotIndexSetInteger(N-1, PLOT_LINE_WIDTH, width) | Độ dày đường vẽ tính bằng pixel (1 - 5) |
Lưu ý rằng việc đánh số các biểu đồ trong chỉ thị bắt đầu từ 1, trong khi trong các hàm thì bắt đầu từ 0. Ví dụ, chỉ thị #property indicator_type1 DRAW_ZIGZAG
tương đương với việc gọi PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ZIGZAG)
.
Cũng cần lưu ý rằng bằng cách sử dụng hàm, bạn có thể thiết lập nhiều thuộc tính hơn so với qua chỉ thị: liệt kê ENUM_PLOT_PROPERTY_INTEGER
cung cấp mười phần tử.
Các thuộc tính được mô tả bởi các chỉ thị sẽ hiển thị (có thể nhìn thấy và chỉnh sửa bởi người dùng) trong hộp thoại cài đặt chỉ báo ngay cả khi nó được đặt lên biểu đồ lần đầu tiên. Đặc biệt, điều này bao gồm độ dày, màu sắc và kiểu của các đường (tab
Colors
), số lượng và vị trí của các mức (tabLevels
). Các thuộc tính tương tự được thiết lập bằng hàm (và nếu chúng không có giá trị mặc định trong chỉ thị) chỉ xuất hiện trong hộp thoại từ lần thứ hai trở đi.
Hãy điều chỉnh chỉ báo IndHighLowClose.mq5
để sử dụng các chỉ thị. Phiên bản mới nằm trong tệp IndPropHighLowClose.mq5
. Việc sử dụng chỉ thị giúp đơn giản hóa trình xử lý OnInit
; còn OnCalculate
thì không thay đổi.
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots 2
// Cài đặt hiển thị biểu đồ cột High-Low (thay đổi chỉ số 0 thành 1 trong chỉ thị)
#property indicator_type1 DRAW_HISTOGRAM2
#property indicator_style1 STYLE_SOLID // mặc định, có thể bỏ qua
#property indicator_color1 clrBlue
#property indicator_width1 5
// Cài đặt vẽ đường close (thay đổi chỉ số 1 thành 2 trong chỉ thị)
#property indicator_type2 DRAW_LINE
#property indicator_style2 STYLE_SOLID // mặc định, có thể bỏ qua
#property indicator_color2 clrRed
#property indicator_width2 2
double highs[];
double lows[];
double closes[];
int OnInit()
{
// các mảng làm bộ đệm cho 3 loại giá
SetIndexBuffer(0, highs);
SetIndexBuffer(1, lows);
SetIndexBuffer(2, closes);
return INIT_SUCCEEDED;
}
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
Chỉ báo mới trông hoàn toàn giống với chỉ báo cũ.