Thang dọc (theo giá và giá trị chỉ báo)
Các thuộc tính liên quan đến thang dọc được thiết lập và phân tích bằng các phần tử của hai liệt kê: ENUM_CHART_PROPERTY_INTEGER
và ENUM_CHART_PROPERTY_DOUBLE
. Trong bảng sau, các thuộc tính được liệt kê cùng với kiểu giá trị của chúng.
Một số thuộc tính cho phép truy cập không chỉ vào cửa sổ chính mà còn vào cửa sổ phụ, đối với điều này các hàm ChartSet
và ChartGet
nên sử dụng tham số window
(0 nghĩa là cửa sổ chính và là giá trị mặc định cho dạng ngắn của ChartGet
).
Định danh | Mô tả | Kiểu giá trị |
---|---|---|
CHART_SCALEFIX | Chế độ thang cố định | bool |
CHART_FIXED_MAX | Giá trị tối đa cố định của cửa sổ phụ window hoặc giá trị tối đa ban đầu của cửa sổ chính | double |
CHART_FIXED_MIN | Giá trị tối thiểu cố định của cửa sổ phụ window hoặc giá trị tối thiểu ban đầu của cửa sổ chính | double |
CHART_SCALEFIX_11 | Chế độ thang 1:1 | bool |
CHART_SCALE_PT_PER_BAR | Chế độ chỉ định thang theo điểm trên mỗi thanh | bool |
CHART_POINTS_PER_BAR | Giá trị thang tính bằng điểm trên mỗi thanh | double |
CHART_PRICE_MIN | Giá trị tối thiểu trong cửa sổ hoặc cửa sổ phụ window (chỉ đọc) | double |
CHART_PRICE_MAX | Giá trị tối đa trong cửa sổ hoặc cửa sổ phụ window (chỉ đọc) | double |
CHART_HEIGHT_IN_PIXELS | Chiều cao cố định của cửa sổ hoặc cửa sổ phụ tính bằng pixel, yêu cầu tham số window | int |
CHART_WINDOW_YDISTANCE | Khoảng cách tính bằng pixel dọc theo trục Y giữa khung trên của cửa sổ phụ window và khung trên của cửa sổ biểu đồ chính (chỉ đọc) | int |
Mặc định, các biểu đồ hỗ trợ thang thích ứng để các báo giá hoặc đường chỉ báo vừa hoàn toàn theo chiều dọc trên một khoảng thời gian hiển thị. Đối với một số ứng dụng, việc cố định thang là mong muốn, và terminal cung cấp một số chế độ cho việc này. Trong các chế độ đó, biểu đồ có thể được cuộn bằng chuột hoặc phím (Shift + mũi tên) không chỉ trái/phải mà còn lên/xuống, và một thanh trượt xuất hiện ở thang bên phải, sử dụng nó bạn có thể nhanh chóng cuộn biểu đồ bằng chuột.
Chế độ cố định được thiết lập bằng cách bật cờ CHART_SCALEFIX
và chỉ định tối đa và tối thiểu cần thiết trong các trường CHART_FIXED_MAX
và CHART_FIXED_MIN
(trong cửa sổ chính, người dùng sẽ có thể di chuyển biểu đồ lên hoặc xuống, do đó các giá trị CHART_FIXED_MAX
và CHART_FIXED_MIN
sẽ thay đổi đồng bộ, nhưng thang dọc sẽ giữ nguyên). Người dùng cũng sẽ có thể thay đổi thang dọc bằng cách nhấn nút chuột trên thang giá và, không thả nó, di chuyển lên hoặc xuống. Các cửa sổ phụ không cung cấp chỉnh sửa tương tác thang dọc. Về vấn đề này, chúng ta sẽ trình bày sau một chỉ báo SubScaler.mq5
(xem phần sự kiện bàn phím), cho phép người dùng kiểm soát phạm vi giá trị trong cửa sổ phụ bằng bàn phím, thay vì từ hộp thoại cài đặt, sử dụng các trường trên tab Scale
.
Chế độ CHART_SCALEFIX_11
cung cấp sự tương đương trực quan gần đúng của các cạnh của hình vuông trên màn hình: X thanh tính bằng pixel (ngang) sẽ bằng X điểm tính bằng pixel (dọc). Sự tương đương là gần đúng, vì kích thước của các pixel, theo quy tắc, không giống nhau theo chiều dọc và ngang.
Cuối cùng, có một chế độ để cố định tỷ lệ số điểm trên mỗi thanh, được bật bằng tùy chọn CHART_SCALE_PT_PER_BAR
, và tỷ lệ cần thiết được thiết lập bằng thuộc tính CHART_POINTS_PER_BAR
. Không giống như chế độ CHART_SCALEFIX
, người dùng sẽ không thể thay đổi thang tương tác bằng chuột trên biểu đồ. Trong chế độ này, khoảng cách ngang của một thanh sẽ được hiển thị trên màn hình theo cùng tỷ lệ với số điểm dọc được chỉ định như tỷ lệ khung hình của biểu đồ (tính bằng pixel). Nếu khung thời gian và kích thước của hai biểu đồ bằng nhau, một biểu đồ sẽ trông bị nén theo giá so với biểu đồ kia theo tỷ lệ của các giá trị CHART_POINTS_PER_BAR
của chúng. Rõ ràng, khung thời gian càng nhỏ, phạm vi thanh càng nhỏ, và do đó, với cùng thang, các khung thời gian nhỏ trông "phẳng" hơn.
Việc thiết lập thuộc tính CHART_HEIGHT_IN_PIXELS
bằng lập trình khiến người dùng không thể chỉnh sửa kích thước cửa sổ/cửa sổ phụ. Điều này thường được sử dụng cho các cửa sổ lưu trữ bảng giao dịch với một tập hợp các điều khiển được xác định trước (nút, trường nhập, v.v.). Để bỏ cố định kích thước, hãy đặt giá trị của thuộc tính thành -1.
Giá trị CHART_WINDOW_YDISTANCE
là cần thiết để chuyển đổi tọa độ tuyệt đối của biểu đồ chính thành tọa độ cục bộ của cửa sổ phụ để làm việc chính xác với các đối tượng đồ họa. Vấn đề là khi sự kiện chuột xảy ra, tọa độ con trỏ được truyền tương đối so với cửa sổ biểu đồ chính, trong khi tọa độ của các đối tượng đồ họa trong cửa sổ phụ của chỉ báo được thiết lập tương đối so với góc trên bên trái của cửa sổ phụ.
Hãy chuẩn bị script ChartScalePrice.mq5
để phân tích các thay đổi trong thang dọc và kích thước.
void OnStart()
{
int flags[] =
{
CHART_SCALEFIX, CHART_SCALEFIX_11,
CHART_SCALE_PT_PER_BAR, CHART_POINTS_PER_BAR,
CHART_FIXED_MAX, CHART_FIXED_MIN,
CHART_PRICE_MIN, CHART_PRICE_MAX,
CHART_HEIGHT_IN_PIXELS, CHART_WINDOW_YDISTANCE
};
ChartModeMonitor m(flags);
...
}
2
3
4
5
6
7
8
9
10
11
12
13
Nó phản ứng với việc thao tác biểu đồ theo cách sau:
Initial state:
[key] [value] // ENUM_CHART_PROPERTY_INTEGER
[0] 6 0
[1] 7 0
[2] 10 0
[3] 107 357
[4] 110 0
[key] [value] // ENUM_CHART_PROPERTY_DOUBLE
[0] 11 10.00000
[1] 8 1.13880
[2] 9 1.12330
[3] 108 1.12330
[4] 109 1.13880
// giảm kích thước dọc của cửa sổ
CHART_HEIGHT_IN_PIXELS 357 -> 370
CHART_HEIGHT_IN_PIXELS 370 -> 408
CHART_FIXED_MAX 1.1389 -> 1.1388
CHART_FIXED_MIN 1.1232 -> 1.1233
CHART_PRICE_MIN 1.1232 -> 1.1233
CHART_PRICE_MAX 1.1389 -> 1.1388
// giảm thang ngang, làm tăng phạm vi giá
CHART_FIXED_MAX 1.1388 -> 1.139
CHART_FIXED_MIN 1.1233 -> 1.1183
CHART_PRICE_MIN 1.1233 -> 1.1183
CHART_PRICE_MAX 1.1388 -> 1.139
CHART_FIXED_MAX 1.139 -> 1.1406
CHART_FIXED_MIN 1.1183 -> 1.1167
CHART_PRICE_MIN 1.1183 -> 1.1167
CHART_PRICE_MAX 1.139 -> 1.1406
// mở rộng phạm vi giá bằng chuột (báo giá "co lại" theo chiều dọc)
CHART_FIXED_MAX 1.1406 -> 1.1454
CHART_FIXED_MIN 1.1167 -> 1.1119
CHART_PRICE_MIN 1.1167 -> 1.1119
CHART_PRICE_MAX 1.1406 -> 1.1454
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