Thuộc tính của chỉ báo tùy chỉnh
Số lượng bộ đệm chỉ báo có thể sử dụng trong một chỉ báo tùy chỉnh là không giới hạn. Nhưng đối với mỗi mảng được chỉ định làm bộ đệm chỉ báo bằng hàm SetIndexBuffer(), cần phải chỉ định loại dữ liệu mà nó sẽ lưu trữ. Đây có thể là một trong những giá trị của liệt kê ENUM_INDEXBUFFER_TYPE
.
ENUM_INDEXBUFFER_TYPE
ID | Mô tả |
---|---|
INDICATOR_DATA | Dữ liệu để vẽ |
INDICATOR_COLOR_INDEX | Màu sắc |
INDICATOR_CALCULATIONS | Bộ đệm phụ trợ cho các tính toán trung gian |
Một chỉ báo tùy chỉnh có nhiều cài đặt để cung cấp khả năng hiển thị tiện lợi. Những cài đặt này được thực hiện thông qua việc gán các thuộc tính chỉ báo tương ứng bằng các hàm IndicatorSetDouble(), IndicatorSetInteger() và IndicatorSetString(). Các định danh của thuộc tính chỉ báo được liệt kê trong liệt kê ENUM_CUSTOMIND_PROPERTY
.
ENUM_CUSTOMIND_PROPERTY_INTEGER
ID | Mô tả | Loại thuộc tính |
---|---|---|
INDICATOR_DIGITS | Độ chính xác của việc vẽ giá trị chỉ báo | int |
INDICATOR_HEIGHT | Chiều cao cố định của cửa sổ chỉ báo (lệnh tiền xử lý #property indicator_height) | int |
INDICATOR_LEVELS | Số lượng mức trong cửa sổ chỉ báo | int |
INDICATOR_LEVELCOLOR | Màu của đường mức | color modifier = số thứ tự mức |
INDICATOR_LEVELSTYLE | Kiểu của đường mức | ENUM_LINE_STYLE modifier = số thứ tự mức |
INDICATOR_LEVELWIDTH | Độ dày của đường mức | int modifier = số thứ tự mức |
INDICATOR_FIXED_MINIMUM | Giá trị tối thiểu cố định cho cửa sổ chỉ báo. Thuộc tính này chỉ có thể được ghi bởi hàm IndicatorSetInteger() | bool |
INDICATOR_FIXED_MAXIMUM | Giá trị tối đa cố định cho cửa sổ chỉ báo. Thuộc tính này chỉ có thể được ghi bởi hàm IndicatorSetInteger() | bool |
ENUM_CUSTOMIND_PROPERTY_DOUBLE
ID | Mô tả | Loại thuộc tính |
---|---|---|
INDICATOR_MINIMUM | Giá trị tối thiểu của cửa sổ chỉ báo | double |
INDICATOR_MAXIMUM | Giá trị tối đa của cửa sổ chỉ báo | double |
INDICATOR_LEVELVALUE | Giá trị mức | double modifier = số thứ tự mức |
ENUM_CUSTOMIND_PROPERTY_STRING
ID | Mô tả | Loại thuộc tính |
---|---|---|
INDICATOR_SHORTNAME | Tên ngắn của chỉ báo | string |
INDICATOR_LEVELTEXT | Mô tả mức | string modifier = số thứ tự mức |
Ví dụ:
cpp
//--- cài đặt chỉ báo
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots 2
#property indicator_type1 `DRAW_LINE`
#property indicator_type2 `DRAW_LINE`
#property indicator_color1 `clrLightSeaGreen`
#property indicator_color2 `clrRed`
//--- tham số đầu vào
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- bộ đệm chỉ báo
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+------------------------------------------------------------------+
//| Hàm khởi tạo chỉ báo tùy chỉnh |
//+------------------------------------------------------------------+
void OnInit()
{
//--- ánh xạ bộ đệm chỉ báo
`SetIndexBuffer`(0,MainBuffer,`INDICATOR_DATA`);
`SetIndexBuffer`(1,SignalBuffer,`INDICATOR_DATA`);
`SetIndexBuffer`(2,HighesBuffer,`INDICATOR_CALCULATIONS`);
`SetIndexBuffer`(3,LowesBuffer,`INDICATOR_CALCULATIONS`);
//--- thiết lập độ chính xác
`IndicatorSetInteger`(`INDICATOR_DIGITS`,2);
//--- thiết lập các mức
`IndicatorSetInteger`(`INDICATOR_LEVELS`,2);
`IndicatorSetDouble`(`INDICATOR_LEVELVALUE`,0,20);
`IndicatorSetDouble`(`INDICATOR_LEVELVALUE`,1,80);
//--- thiết lập tối đa và tối thiểu cho cửa sổ phụ
`IndicatorSetDouble`(`INDICATOR_MINIMUM`,0);
`IndicatorSetDouble`(`INDICATOR_MAXIMUM`,100);
//--- thiết lập thanh đầu tiên mà chỉ số sẽ được vẽ từ đó
`PlotIndexSetInteger`(0,`PLOT_DRAW_BEGIN`,KPeriod+Slowing-2);
`PlotIndexSetInteger`(1,`PLOT_DRAW_BEGIN`,KPeriod+Slowing+DPeriod);
//--- thiết lập kiểu `STYLE_DOT` cho đường thứ hai
`PlotIndexSetInteger`(1,`PLOT_LINE_STYLE`,`STYLE_DOT`);
//--- tên cho DataWindow và nhãn cửa sổ phụ của chỉ báo
`IndicatorSetString`(`INDICATOR_SHORTNAME`,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
`PlotIndexSetString`(0,`PLOT_LABEL`,"Main");
`PlotIndexSetString`(1,`PLOT_LABEL`,"Signal");
//--- thiết lập đường vẽ thành giá trị trống
`PlotIndexSetDouble`(0,`PLOT_EMPTY_VALUE`,0.0);
`PlotIndexSetDouble`(1,`PLOT_EMPTY_VALUE`,0.0);
//--- hoàn tất khởi tạo
}
1
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50