Ví dụ làm việc với biểu đồ
Phần này chứa các ví dụ về làm việc với thuộc tính biểu đồ. Một hoặc hai hàm hoàn chỉnh được hiển thị cho mỗi thuộc tính. Các hàm này cho phép thiết lập/lấy giá trị của thuộc tính. Các hàm này có thể được sử dụng "nguyên trạng" trong các ứng dụng mql5 tùy chỉnh.
Ảnh chụp màn hình dưới đây thể hiện bảng điều khiển đồ họa minh họa cách thay đổi thuộc tính biểu đồ thay đổi giao diện của nó. Nhấp vào nút Next cho phép thiết lập giá trị mới của thuộc tính tương ứng và xem các thay đổi trong cửa sổ biểu đồ.
Mã nguồn của bảng điều khiển được đặt dưới đây.
Thuộc tính biểu đồ và các hàm mẫu để làm việc với chúng
- CHART_IS_OBJECT la thuộc tính bxác định xem một đối tượng có phải là biểu đồ thực hay đối tượng đồ họa.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem một đối tượng có phải là biểu đồ không. Nếu là đối |
//| tượng đồ họa, kết quả là true. Nếu là biểu đồ thực, biến kết quả |
//| có giá trị false. |
//+------------------------------------------------------------------+
bool ChartIsObject(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- lấy thuộc tính biểu đồ
if(!ChartGetInteger(chart_ID,CHART_IS_OBJECT,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
//--- trả về false
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- CHART_BRING_TO_TOP hiển thị biểu đồ lên trên tất cả các biểu đồ khác.
cpp
//+----------------------------------------------------------------------+
//| Gửi lệnh đến terminal để hiển thị biểu đồ lên trên tất cả các biểu đồ|
//+----------------------------------------------------------------------+
bool ChartBringToTop(const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- hiển thị biểu đồ lên trên tất cả các biểu đồ khác
if(!ChartSetInteger(chart_ID,CHART_BRING_TO_TOP,0,true))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- CHART_MOUSE_SCROLL là thuộc tính để cuộn biểu đồ bằng nút chuột trái.
cpp
//+--------------------------------------------------------------------------+
//| Kiểm tra xem việc cuộn biểu đồ bằng nút chuột trái có được bật không |
//+--------------------------------------------------------------------------+
bool ChartMouseScrollGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_MOUSE_SCROLL,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+--------------------------------------------------------------------+
//| Bật/tắt việc cuộn biểu đồ bằng nút chuột trái |
//+--------------------------------------------------------------------+
bool ChartMouseScrollSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_MOUSE_SCROLL,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_EVENT_MOUSE_MOVE là thuộc tính gửi thông báo liên quan đến sự kiện di chuyển và nhấp chuột đến các ứng dụng mql5 (CHARTEVENT_MOUSE_MOVE).
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem thông báo liên quan đến sự kiện di chuyển và nhấp |
//| chuột có được gửi đến tất cả ứng dụng MQL5 trên biểu đồ không |
//+------------------------------------------------------------------+
bool ChartEventMouseMoveGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_EVENT_MOUSE_MOVE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------------------+
//| Bật/tắt chế độ gửi thông báo liên quan đến sự kiện di chuyển và nhấp chuột |
//| đến các ứng dụng MQL5 trên biểu đồ |
//+------------------------------------------------------------------------------+
bool ChartEventMouseMoveSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_EVENT_MOUSE_MOVE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_EVENT_OBJECT_CREATE là thuộc tính gửi thông báo liên quan đến sự kiện tạo đối tượng đồ họa đến các ứng dụng mql5 (CHARTEVENT_OBJECT_CREATE).
cpp
//+---------------------------------------------------------------------+
//| Kiểm tra xem thông báo liên quan đến sự kiện tạo đối tượng đồ họa |
//| có được gửi đến tất cả ứng dụng MQL5 trên biểu đồ không |
//+---------------------------------------------------------------------+
bool ChartEventObjectCreateGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_EVENT_OBJECT_CREATE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+--------------------------------------------------------------------------+
//| Bật/tắt chế độ gửi thông báo liên quan đến sự kiện tạo đối tượng đồ họa |
//| đến tất cả ứng dụng mql5 trên biểu đồ |
//+--------------------------------------------------------------------------+
bool ChartEventObjectCreateSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_EVENT_OBJECT_CREATE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_EVENT_OBJECT_DELETE là thuộc tính gửi thông báo liên quan đến sự kiện xóa đối tượng đồ họa đến các ứng dụng mql5 (CHARTEVENT_OBJECT_DELETE).
cpp
//+---------------------------------------------------------------------+
//| Kiểm tra xem thông báo liên quan đến sự kiện xóa đối tượng đồ họa |
//| có được gửi đến tất cả ứng dụng mql5 trên biểu đồ không |
//+---------------------------------------------------------------------+
bool ChartEventObjectDeleteGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_EVENT_OBJECT_DELETE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+--------------------------------------------------------------------------+
//| Bật/tắt chế độ gửi thông báo liên quan đến sự kiện xóa đối tượng đồ họa |
//| đến tất cả ứng dụng mql5 trên biểu đồ |
//+--------------------------------------------------------------------------+
bool ChartEventObjectDeleteSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_EVENT_OBJECT_DELETE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_MODE – loại biểu đồ (nến, thanh hoặc đường).
cpp
//+------------------------------------------------------------------+
//| Lấy loại hiển thị biểu đồ (nến, thanh hoặc đường) |
//+------------------------------------------------------------------+
ENUM_CHART_MODE ChartModeGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=WRONG_VALUE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_MODE,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((ENUM_CHART_MODE)result);
}
//+------------------------------------------------------------------+
//| Thiết lập loại hiển thị biểu đồ (nến, thanh hoặc đường) |
//+------------------------------------------------------------------+
bool ChartModeSet(const long value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_MODE,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_FOREGROUND là thuộc tính hiển thị biểu đồ giá ở phía trước.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem biểu đồ giá có được hiển thị ở phía trước không |
//+------------------------------------------------------------------+
bool ChartForegroundGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_FOREGROUND,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị biểu đồ giá ở phía trước |
//+------------------------------------------------------------------+
bool ChartForegroundSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_FOREGROUND,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHIFT – chế độ dịch chuyển biểu đồ giá từ biên phải.
cpp
//+-------------------------------------------------------------------+
//| Kiểm tra xem việc dịch chuyển biểu đồ giá từ biên phải có được bật không |
//+-------------------------------------------------------------------+
bool ChartShiftGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHIFT,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+---------------------------------------------------------------------------------+
//| Bật/tắt hiển thị biểu đồ giá với sự dịch chuyển từ biên phải |
//+---------------------------------------------------------------------------------+
bool ChartShiftSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHIFT,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_AUTOSCROLL – chế độ tự động dịch chuyển đến biên phải của biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem việc tự động cuộn biểu đồ sang phải |
//| khi có tick mới đến có được bật không |
//+------------------------------------------------------------------+
bool ChartAutoscrollGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_AUTOSCROLL,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt tự động cuộn biểu đồ sang phải |
//| khi có tick mới đến |
//+------------------------------------------------------------------+
bool ChartAutoscrollSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_AUTOSCROLL,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SCALE – thuộc tính tỷ lệ biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy tỷ lệ biểu đồ (từ 0 đến 5) |
//+------------------------------------------------------------------+
int ChartScaleGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SCALE,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
//+------------------------------------------------------------------+
//| Thiết lập tỷ lệ biểu đồ (từ 0 đến 5) |
//+------------------------------------------------------------------+
bool ChartScaleSet(const long value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SCALE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SCALEFIX – chế độ tỷ lệ cố định của biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem chế độ tỷ lệ cố định có được bật không |
//+------------------------------------------------------------------+
bool ChartScaleFixGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SCALEFIX,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt chế độ tỷ lệ cố định |
//+------------------------------------------------------------------+
bool ChartScaleFixSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SCALEFIX,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SCALEFIX_11 – chế độ tỷ lệ biểu đồ 1:1.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem tỷ lệ "1:1" có được bật không |
//+------------------------------------------------------------------+
bool ChartScaleFix11Get(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SCALEFIX_11,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt chế độ tỷ lệ "1:1" |
//+------------------------------------------------------------------+
bool ChartScaleFix11Set(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SCALEFIX_11,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SCALE_PT_PER_BAR – chế độ chỉ định tỷ lệ biểu đồ theo điểm trên mỗi thanh.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem chế độ tỷ lệ biểu đồ "điểm trên mỗi thanh" có được bật không |
//+------------------------------------------------------------------+
bool ChartScalePerBarGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SCALE_PT_PER_BAR,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt chế độ tỷ lệ biểu đồ "điểm trên mỗi thanh" |
//+------------------------------------------------------------------+
bool ChartScalePerBarSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SCALE_PT_PER_BAR,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_OHLC – thuộc tính hiển thị các giá trị OHLC ở góc trên bên trái.
cpp
//+----------------------------------------------------------------------------------+
//| Kiểm tra xem việc hiển thị các giá trị OHLC ở góc trên bên trái biểu đồ có được bật không |
//+----------------------------------------------------------------------------------+
bool ChartShowOHLCGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_OHLC,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------------------+
//| Bật/tắt hiển thị các giá trị OHLC ở góc trên bên trái biểu đồ |
//+------------------------------------------------------------------------------+
bool ChartShowOHLCSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_OHLC,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_BID_LINE – thuộc tính hiển thị giá trị Bid dưới dạng đường ngang trên biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem việc hiển thị đường Bid trên biểu đồ có được bật không |
//+------------------------------------------------------------------+
bool ChartShowBidLineGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_BID_LINE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị đường Bid trên biểu đồ |
//+------------------------------------------------------------------+
bool ChartShowBidLineSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_BID_LINE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_ASK_LINE – thuộc tính hiển thị giá trị Ask dưới dạng đường ngang trên biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem việc hiển thị đường Ask trên biểu đồ có được bật không |
//+------------------------------------------------------------------+
bool ChartShowAskLineGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_ASK_LINE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị đường Ask trên biểu đồ |
//+------------------------------------------------------------------+
bool ChartShowAskLineSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_ASK_LINE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_LAST_LINE – thuộc tính hiển thị giá trị Last dưới dạng đường ngang trên biểu đồ.
cpp
//+-----------------------------------------------------------------------------+
//| Kiểm tra xem việc hiển thị đường giá của giao dịch cuối cùng có được bật không |
//+-----------------------------------------------------------------------------+
bool ChartShowLastLineGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_LAST_LINE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+-------------------------------------------------------------------------+
//| Bật/tắt hiển thị đường giá của giao dịch cuối cùng |
//+-------------------------------------------------------------------------+
bool ChartShowLastLineSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_LAST_LINE,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_PERIOD_SEP – thuộc tính hiển thị các đường phân cách dọc giữa các kỳ liền kề.
cpp
//+---------------------------------------------------------------------------------+
//| Kiểm tra xem việc hiển thị các đường phân cách dọc giữa các kỳ liền kề có được bật không |
//+---------------------------------------------------------------------------------+
bool ChartShowPeriodSeparatorGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_PERIOD_SEP,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+-----------------------------------------------------------------------------+
//| Bật/tắt hiển thị các đường phân cách dọc giữa các kỳ liền kề |
//+-----------------------------------------------------------------------------+
bool ChartShowPeriodSepapatorSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_PERIOD_SEP,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_GRID – thuộc tính hiển thị lưới biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem lưới biểu đồ có được hiển thị không |
//+------------------------------------------------------------------+
bool ChartShowGridGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_GRID,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị lưới trên biểu đồ |
//+------------------------------------------------------------------+
bool ChartShowGridSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_GRID,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_VOLUMES – thuộc tính hiển thị khối lượng trên biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem khối lượng có được hiển thị trên biểu đồ không |
//| Cờ này chỉ ra chế độ hiển thị khối lượng |
//+------------------------------------------------------------------+
ENUM_CHART_VOLUME_MODE ChartShowVolumesGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=WRONG_VALUE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_VOLUMES,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((ENUM_CHART_VOLUME_MODE)result);
}
//+------------------------------------------------------------------+
//| Thiết lập chế độ hiển thị khối lượng trên biểu đồ |
//+------------------------------------------------------------------+
bool ChartShowVolumesSet(const long value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_VOLUMES,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_OBJECT_DESCR – thuộc tính hiển thị mô tả bật lên của các đối tượng đồ họa.
cpp
//+-------------------------------------------------------------------+
//| Kiểm tra xem mô tả bật lên của các đối tượng đồ họa có được hiển thị không |
//| khi di chuột qua chúng |
//+-------------------------------------------------------------------+
bool ChartShowObjectDescriptionGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+-------------------------------------------------------------------------+
//| Bật/tắt hiển thị mô tả bật lên của các đối tượng đồ họa |
//| khi di chuột qua chúng |
//+-------------------------------------------------------------------------+
bool ChartShowObjectDescriptionSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_VISIBLE_BARS – thuộc tính xác định số lượng thanh trên biểu đồ có thể hiển thị.
cpp
//+----------------------------------------------------------------------+
//| Lấy số lượng thanh được hiển thị (có thể nhìn thấy) trong cửa sổ biểu đồ |
//+----------------------------------------------------------------------+
int ChartVisibleBars(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_VISIBLE_BARS,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- CHART_WINDOWS_TOTAL xác định tổng số lượng cửa sổ biểu đồ bao gồm các cửa sổ phụ của chỉ báo.
cpp
//+-----------------------------------------------------------------------+
//| Lấy tổng số lượng cửa sổ biểu đồ bao gồm các cửa sổ phụ của chỉ báo |
//+-----------------------------------------------------------------------+
int ChartWindowsTotal(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_WINDOWS_TOTAL,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- CHART_WINDOW_IS_VISIBLE xác định khả năng hiển thị của cửa sổ phụ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem cửa sổ biểu đồ hiện tại hoặc cửa sổ phụ có hiển thị không |
//+------------------------------------------------------------------+
bool ChartWindowsIsVisible(bool &result,const long chart_ID=0,const int sub_window=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_WINDOW_IS_VISIBLE,sub_window,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- CHART_WINDOW_HANDLE trả về tay cầm của biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy tay cầm của biểu đồ |
//+------------------------------------------------------------------+
int ChartWindowsHandle(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_WINDOW_HANDLE,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- CHART_WINDOW_YDISTANCE xác định khoảng cách tính bằng pixel giữa khung trên của cửa sổ phụ chỉ báo và khung trên của cửa sổ chính của biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy khoảng cách tính bằng pixel giữa đường viền trên của |
//| cửa sổ phụ và đường viền trên của cửa sổ chính của biểu đồ |
//+------------------------------------------------------------------+
int ChartWindowsYDistance(const long chart_ID=0,const int sub_window=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_WINDOW_YDISTANCE,sub_window,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- CHART_FIRST_VISIBLE_BAR trả về số thứ tự của thanh đầu tiên hiển thị trên biểu đồ (chỉ số thanh tương ứng với chuỗi thời gian).
cpp
//+------------------------------------------------------------------------------+
//| Lấy chỉ số của thanh đầu tiên hiển thị trên biểu đồ. |
//| Việc đánh chỉ số được thực hiện như trong chuỗi thời gian: các thanh mới nhất có chỉ số nhỏ nhất. |
//+------------------------------------------------------------------------------+
int ChartFirstVisibleBar(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_FIRST_VISIBLE_BAR,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- CHART_WIDTH_IN_BARS trả về chiều rộng biểu đồ tính bằng số thanh.
cpp
//+------------------------------------------------------------------+
//| Lấy chiều rộng của biểu đồ (tính bằng số thanh) |
//+------------------------------------------------------------------+
int ChartWidthInBars(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_WIDTH_IN_BARS,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- CHART_WIDTH_IN_PIXELS trả về chiều rộng biểu đồ tính bằng pixel.
cpp
//+------------------------------------------------------------------+
//| Lấy chiều rộng của biểu đồ (tính bằng pixel) |
//+------------------------------------------------------------------+
int ChartWidthInPixels(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_WIDTH_IN_PIXELS,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- CHART_HEIGHT_IN_PIXELS – thuộc tính chiều cao biểu đồ tính bằng pixel.
cpp
//+------------------------------------------------------------------+
//| Lấy chiều cao của biểu đồ (tính bằng pixel) |
//+------------------------------------------------------------------+
int ChartHeightInPixelsGet(const long chart_ID=0,const int sub_window=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long result=-1;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((int)result);
}
//+------------------------------------------------------------------+
//| Thiết lập chiều cao của biểu đồ (tính bằng pixel) |
//+------------------------------------------------------------------+
bool ChartHeightInPixelsSet(const int value,const long chart_ID=0,const int sub_window=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_BACKGROUND - màu nền của biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy màu nền của biểu đồ |
//+------------------------------------------------------------------+
color ChartBackColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu nền của biểu đồ
if(!ChartGetInteger(chart_ID,CHART_COLOR_BACKGROUND,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu nền của biểu đồ |
//+------------------------------------------------------------------+
bool ChartBackColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu nền của biểu đồ
if(!ChartSetInteger(chart_ID,CHART_COLOR_BACKGROUND,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_FOREGROUND – màu của trục, thang đo và đường OHLC.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của trục, thang đo và đường OHLC |
//+------------------------------------------------------------------+
color ChartForeColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của trục, thang đo và đường OHLC
if(!ChartGetInteger(chart_ID,CHART_COLOR_FOREGROUND,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của trục, thang đo và đường OHLC |
//+------------------------------------------------------------------+
bool ChartForeColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của trục, thang đo và đường OHLC
if(!ChartSetInteger(chart_ID,CHART_COLOR_FOREGROUND,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_GRID – màu của lưới biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của lưới biểu đồ |
//+------------------------------------------------------------------+
color ChartGridColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu lưới biểu đồ
if(!ChartGetInteger(chart_ID,CHART_COLOR_GRID,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của lưới biểu đồ |
//+------------------------------------------------------------------+
bool ChartGridColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu lưới biểu đồ
if(!ChartSetInteger(chart_ID,CHART_COLOR_GRID,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_VOLUME - màu của khối lượng và mức mở vị thế.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của khối lượng và mức vào thị trường |
//+------------------------------------------------------------------+
color ChartVolumeColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của khối lượng và mức vào thị trường
if(!ChartGetInteger(chart_ID,CHART_COLOR_VOLUME,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của khối lượng và mức vào thị trường |
//+------------------------------------------------------------------+
bool ChartVolumeColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của khối lượng và mức vào thị trường
if(!ChartSetInteger(chart_ID,CHART_COLOR_VOLUME,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_CHART_UP – màu của thanh tăng, bóng của nó và đường viền của thân nến tăng.
cpp
//+-----------------------------------------------------------------------------+
//| Lấy màu của thanh tăng, bóng và đường viền của thân nến tăng |
//+-----------------------------------------------------------------------------+
color ChartUpColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của thanh tăng, bóng của nó và đường viền của thân nến tăng
if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_UP,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của thanh tăng, bóng và đường viền của thân nến tăng |
//+------------------------------------------------------------------+
bool ChartUpColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của thanh tăng, bóng của nó và đường viền của thân nến tăng
if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_UP,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_CHART_DOWN – màu của thanh giảm, bóng của nó và đường viền của thân nến giảm.
cpp
//+-------------------------------------------------------------------------------+
//| Lấy màu của thanh giảm, bóng và đường viền của thân nến giảm |
//+-------------------------------------------------------------------------------+
color ChartDownColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của thanh giảm, bóng của nó và đường viền của thân nến giảm
if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_DOWN,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+-------------------------------------------------------------------------------+
//| Thiết lập màu của thanh giảm, bóng và đường viền của thân nến giảm |
//+-------------------------------------------------------------------------------+
bool ChartDownColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của thanh giảm, bóng của nó và đường viền của thân nến giảm
if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_DOWN,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_CHART_LINE – màu của đường biểu đồ và nến Doji.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của đường biểu đồ và nến Doji |
//+------------------------------------------------------------------+
color ChartLineColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của đường biểu đồ và nến Doji
if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_LINE,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của đường biểu đồ và nến Doji |
//+------------------------------------------------------------------+
bool ChartLineColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của đường biểu đồ và nến Doji
if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_LINE,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_CANDLE_BULL – màu của thân nến tăng.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của thân nến tăng |
//+------------------------------------------------------------------+
color ChartBullColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của thân nến tăng
if(!ChartGetInteger(chart_ID,CHART_COLOR_CANDLE_BULL,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của thân nến tăng |
//+------------------------------------------------------------------+
bool ChartBullColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của thân nến tăng
if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BULL,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_CANDLE_BEAR – màu của thân nến giảm.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của thân nến giảm |
//+------------------------------------------------------------------+
color ChartBearColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của thân nến giảm
if(!ChartGetInteger(chart_ID,CHART_COLOR_CANDLE_BEAR,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của thân nến giảm |
//+------------------------------------------------------------------+
bool ChartBearColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của thân nến giảm
if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BEAR,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_BID – màu của đường giá Bid.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của đường Bid |
//+------------------------------------------------------------------+
color ChartBidColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của đường giá Bid
if(!ChartGetInteger(chart_ID,CHART_COLOR_BID,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của đường Bid |
//+------------------------------------------------------------------+
bool ChartBidColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của đường giá Bid
if(!ChartSetInteger(chart_ID,CHART_COLOR_BID,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_ASK – màu của đường giá Ask.
cpp
//+------------------------------------------------------------------+
//| Lấy màu của đường Ask |
//+------------------------------------------------------------------+
color ChartAskColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của đường giá Ask
if(!ChartGetInteger(chart_ID,CHART_COLOR_ASK,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của đường Ask |
//+------------------------------------------------------------------+
bool ChartAskColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của đường giá Ask
if(!ChartSetInteger(chart_ID,CHART_COLOR_ASK,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_LAST – màu của đường giá giao dịch cuối cùng (Last).
cpp
//+------------------------------------------------------------------+
//| Lấy màu của đường giá giao dịch cuối cùng |
//+------------------------------------------------------------------+
color ChartLastColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của đường giá giao dịch cuối cùng (Last)
if(!ChartGetInteger(chart_ID,CHART_COLOR_LAST,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của đường giá giao dịch cuối cùng |
//+------------------------------------------------------------------+
bool ChartLastColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của đường giá giao dịch cuối cùng (Last)
if(!ChartSetInteger(chart_ID,CHART_COLOR_LAST,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_COLOR_STOP_LEVEL – màu của mức lệnh dừng (Stop Loss và Take Profit).
cpp
//+------------------------------------------------------------------+
//| Lấy màu của mức Stop Loss và Take Profit |
//+------------------------------------------------------------------+
color ChartStopLevelColorGet(const long chart_ID=0)
{
//--- chuẩn bị biến để nhận màu
long result=clrNONE;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận màu của mức lệnh dừng (Stop Loss và Take Profit)
if(!ChartGetInteger(chart_ID,CHART_COLOR_STOP_LEVEL,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return((color)result);
}
//+------------------------------------------------------------------+
//| Thiết lập màu của mức Stop Loss và Take Profit |
//+------------------------------------------------------------------+
bool ChartStopLevelColorSet(const color clr,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập màu của mức lệnh dừng (Stop Loss và Take Profit)
if(!ChartSetInteger(chart_ID,CHART_COLOR_STOP_LEVEL,clr))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_TRADE_LEVELS – thuộc tính hiển thị các mức giao dịch trên biểu đồ (mức của các vị thế mở, Stop Loss, Take Profit và lệnh chờ).
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem các mức giao dịch có được hiển thị trên biểu đồ không|
//+------------------------------------------------------------------+
bool ChartShowTradeLevelsGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,`CHART_SHOW_TRADE_LEVELS`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị các mức giao dịch |
//+------------------------------------------------------------------+
bool ChartShowTradeLevelsSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,`CHART_SHOW_TRADE_LEVELS`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_DRAG_TRADE_LEVELS – thuộc tính cho phép kéo các mức giao dịch trên biểu đồ bằng chuột.
cpp
//+----------------------------------------------------------------------+
//| Kiểm tra xem việc kéo các mức giao dịch trên biểu đồ bằng chuột có được phép không |
//+----------------------------------------------------------------------+
bool ChartDragTradeLevelsGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt khả năng kéo các mức giao dịch trên biểu đồ bằng chuột |
//+------------------------------------------------------------------+
bool ChartDragTradeLevelsSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_DATE_SCALE – thuộc tính hiển thị thang thời gian trên biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem thang thời gian có được hiển thị trên biểu đồ không |
//+------------------------------------------------------------------+
bool ChartShowDateScaleGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,`CHART_SHOW_DATE_SCALE`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị thang thời gian trên biểu đồ |
//+------------------------------------------------------------------+
bool ChartShowDateScaleSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,`CHART_SHOW_DATE_SCALE`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_PRICE_SCALE – thuộc tính hiển thị thang giá trên biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem thang giá có được hiển thị trên biểu đồ không |
//+------------------------------------------------------------------+
bool ChartShowPriceScaleGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,`CHART_SHOW_PRICE_SCALE`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị thang giá trên biểu đồ |
//+------------------------------------------------------------------+
bool ChartShowPriceScaleSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,`CHART_SHOW_PRICE_SCALE`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHOW_ONE_CLICK – thuộc tính hiển thị bảng "Giao dịch một cú nhấp chuột" trên biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Kiểm tra xem bảng "Giao dịch một cú nhấp chuột" có được hiển thị trên biểu đồ không |
//+------------------------------------------------------------------+
bool ChartShowOneClickPanelGet(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để lấy giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,`CHART_SHOW_ONE_CLICK`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị của thuộc tính biểu đồ vào bộ nhớ
result=value;
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Bật/tắt hiển thị bảng "Giao dịch một cú nhấp chuột" trên biểu đồ |
//+------------------------------------------------------------------+
bool ChartShowOneClickPanelSet(const bool value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetInteger(chart_ID,`CHART_SHOW_ONE_CLICK`,0,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_SHIFT_SIZE – kích thước dịch chuyển của thanh số 0 từ biên phải theo giá trị phần trăm.
cpp
//+-----------------------------------------------------------------+
//| Lấy kích thước dịch chuyển của thanh số 0 từ biên phải của biểu đồ |
//| theo giá trị phần trăm (từ 10% đến 50%) |
//+-----------------------------------------------------------------+
double ChartShiftSizeGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy kết quả
double result=`EMPTY_VALUE`;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetDouble(chart_ID,`CHART_SHIFT_SIZE`,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return(result);
}
//+-----------------------------------------------------------------------------+
//| Thiết lập kích thước dịch chuyển của thanh số 0 từ biên phải của biểu đồ |
//| theo giá trị phần trăm (từ 10% đến 50%). |
//| Để bật chế độ dịch chuyển, giá trị thuộc tính CHART_SHIFT cần được đặt là true. |
//+-----------------------------------------------------------------------------+
bool ChartShiftSizeSet(const double value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetDouble(chart_ID,`CHART_SHIFT_SIZE`,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_FIXED_POSITION – vị trí cố định của biểu đồ từ biên trái theo giá trị phần trăm.
cpp
//+----------------------------------------------------------------------------------------+
//| Lấy vị trí cố định của biểu đồ từ biên trái (theo giá trị phần trăm) |
//+----------------------------------------------------------------------------------------+
double ChartFixedPositionGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy kết quả
double result=`EMPTY_VALUE`;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetDouble(chart_ID,`CHART_FIXED_POSITION`,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return(result);
}
//+-----------------------------------------------------------------------------------------+
//| Thiết lập vị trí cố định của biểu đồ từ biên trái (theo giá trị phần trăm). |
//| Để xem vị trí cố định của biểu đồ, giá trị thuộc tính CHART_AUTOSCROLL cần được đặt là false. |
//+-----------------------------------------------------------------------------------------+
bool ChartFixedPositionSet(const double value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetDouble(chart_ID,`CHART_FIXED_POSITION`,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_FIXED_MAX – thuộc tính của giá trị tối đa cố định của biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy giá trị tối đa cố định của biểu đồ |
//+------------------------------------------------------------------+
double ChartFixedMaxGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy kết quả
double result=`EMPTY_VALUE`;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetDouble(chart_ID,`CHART_FIXED_MAX`,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return(result);
}
//+------------------------------------------------------------------+
//| Thiết lập giá trị tối đa cố định của biểu đồ. |
//| Để thay đổi giá trị của thuộc tính, giá trị thuộc tính CHART_SCALEFIX cần được đặt trước là true. |
//+------------------------------------------------------------------+
bool ChartFixedMaxSet(const double value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetDouble(chart_ID,`CHART_FIXED_MAX`,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_FIXED_MIN – thuộc tính của giá trị tối thiểu cố định của biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy giá trị tối thiểu cố định của biểu đồ |
//+------------------------------------------------------------------+
double ChartFixedMinGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy kết quả
double result=`EMPTY_VALUE`;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetDouble(chart_ID,`CHART_FIXED_MIN`,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return(result);
}
//+------------------------------------------------------------------+
//| Thiết lập giá trị tối thiểu cố định của biểu đồ. |
//| Để thay đổi giá trị của thuộc tính, giá trị thuộc tính CHART_SCALEFIX cần được đặt trước là true. |
//+------------------------------------------------------------------+
bool ChartFixedMinSet(const double value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetDouble(chart_ID,`CHART_FIXED_MIN`,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_POINTS_PER_BAR – giá trị thang đo theo điểm trên mỗi thanh.
cpp
//+------------------------------------------------------------------+
//| Lấy giá trị thang đo của biểu đồ theo điểm trên mỗi thanh |
//+------------------------------------------------------------------+
double ChartPointsPerBarGet(const long chart_ID=0)
{
//--- chuẩn bị biến để lấy kết quả
double result=`EMPTY_VALUE`;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetDouble(chart_ID,`CHART_POINTS_PER_BAR`,0,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return(result);
}
//+----------------------------------------------------------------------+
//| Thiết lập giá trị thang đo của biểu đồ theo điểm trên mỗi thanh. |
//| Để xem kết quả thay đổi giá trị của thuộc tính này, giá trị của |
//| thuộc tính CHART_SCALE_PT_PER_BAR cần được đặt trước là true. |
//+----------------------------------------------------------------------+
bool ChartPointsPerBarSet(const double value,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetDouble(chart_ID,`CHART_POINTS_PER_BAR`,value))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_PRICE_MIN – trả về giá trị tối thiểu của biểu đồ.
cpp
//+----------------------------------------------------------------------+
//| Lấy giá trị tối thiểu của biểu đồ trong cửa sổ chính hoặc trong cửa sổ phụ |
//+----------------------------------------------------------------------+
double ChartPriceMin(const long chart_ID=0,const int sub_window=0)
{
//--- chuẩn bị biến để lấy kết quả
double result=`EMPTY_VALUE`;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetDouble(chart_ID,`CHART_PRICE_MIN`,sub_window,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return(result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- CHART_PRICE_MAX – trả về giá trị tối đa của biểu đồ.
cpp
//+----------------------------------------------------------------------+
//| Lấy giá trị tối đa của biểu đồ trong cửa sổ chính hoặc trong cửa sổ phụ |
//+----------------------------------------------------------------------+
double ChartPriceMax(const long chart_ID=0,const int sub_window=0)
{
//--- chuẩn bị biến để lấy kết quả
double result=`EMPTY_VALUE`;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetDouble(chart_ID,`CHART_PRICE_MAX`,sub_window,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- trả về giá trị của thuộc tính biểu đồ
return(result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- CHART_COMMENT – ghi chú trên biểu đồ.
cpp
//+------------------------------------------------------------------+
//| Lấy ghi chú ở góc trên bên trái của biểu đồ |
//+------------------------------------------------------------------+
bool ChartCommentGet(string &result,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetString(chart_ID,`CHART_COMMENT`,result))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Thiết lập ghi chú ở góc trên bên trái của biểu đồ |
//+------------------------------------------------------------------+
bool ChartCommentSet(const string str,const long chart_ID=0)
{
//--- đặt lại giá trị lỗi
ResetLastError();
//--- thiết lập giá trị thuộc tính
if(!ChartSetString(chart_ID,`CHART_COMMENT`,str))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- thực thi thành công
return(true);
}
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
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
- CHART_IS_MAXIMIZED - cửa sổ biểu đồ được phóng to tối đa.
cpp
//+------------------------------------------------------------------+
//| Xác định xem cửa sổ biểu đồ hiện tại có được phóng to tối đa không |
//+------------------------------------------------------------------+
bool ChartWindowsIsMaximized(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để nhận giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_IS_MAXIMIZED))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị thuộc tính biểu đồ vào biến
result=value;
//--- thực thi thành công
return(true);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- CHART_IS_MINIMIZED – cửa sổ biểu đồ được thu nhỏ.
cpp
//+------------------------------------------------------------------+
//| Xác định xem cửa sổ biểu đồ hiện tại có được thu nhỏ không |
//+------------------------------------------------------------------+
bool ChartWindowsIsMinimized(bool &result,const long chart_ID=0)
{
//--- chuẩn bị biến để nhận giá trị thuộc tính
long value;
//--- đặt lại giá trị lỗi
ResetLastError();
//--- nhận giá trị thuộc tính
if(!ChartGetInteger(chart_ID,CHART_IS_MINIMIZED))
{
//--- hiển thị thông báo lỗi trong nhật ký Experts
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- lưu giá trị thuộc tính biểu đồ vào biến
result=value;
//--- thực thi thành công
return(true);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Bảng điều khiển thuộc tính biểu đồ
cpp
//--- kết nối thư viện các phần tử điều khiển
#include <ChartObjects\ChartObjectsTxtControls.mqh>
//--- hằng số định sẵn
#define X_PROPERTY_NAME_1 10 // tọa độ x của tên thuộc tính trong cột đầu tiên
#define X_PROPERTY_VALUE_1 225 // tọa độ x của giá trị thuộc tính trong cột đầu tiên
#define X_PROPERTY_NAME_2 345 // tọa độ x của tên thuộc tính trong cột thứ hai và thứ ba
#define X_PROPERTY_VALUE_2 550 // tọa độ x của giá trị thuộc tính trong cột thứ hai và thứ ba
#define X_BUTTON_1 285 // tọa độ x của nút trong cột đầu tiên
#define X_BUTTON_2 700 // tọa độ x của nút trong cột thứ hai
#define Y_PROPERTY_1 30 // tọa độ y của điểm bắt đầu của cột đầu tiên và thứ hai
#define Y_PROPERTY_2 286 // tọa độ y của điểm bắt đầu của cột thứ ba
#define Y_DISTANCE 16 // khoảng cách trục y giữa các dòng
#define LAST_PROPERTY_NUMBER 111 // số lượng thuộc tính đồ họa cuối cùng
//--- tham số đầu vào
input color InpFirstColor=`clrDodgerBlue`; // Màu của các dòng lẻ
input color InpSecondColor=`clrGoldenrod`; // Màu của các dòng chẵn
//--- biến và mảng
CChartObjectLabel ExtLabelsName[]; // nhãn để hiển thị tên thuộc tính
CChartObjectLabel ExtLabelsValue[]; // nhãn để hiển thị giá trị thuộc tính
CChartObjectButton ExtButtons[]; // các nút
int ExtNumbers[]; // chỉ số thuộc tính
string ExtNames[]; // tên thuộc tính
uchar ExtDataTypes[]; // kiểu dữ liệu của thuộc tính (số nguyên, số thực, chuỗi)
uint ExtGroupTypes[]; // mảng lưu dữ liệu về việc thuộc tính thuộc vào một trong các nhóm
uchar ExtDrawTypes[]; // mảng lưu dữ liệu về kiểu hiển thị thuộc tính
double ExtMaxValue[]; // giá trị tối đa của thuộc tính có thể khi làm việc với bảng điều khiển
double ExtMinValue[]; // giá trị tối thiểu của thuộc tính có thể khi làm việc với bảng điều khiển
double ExtStep[]; // bước thay đổi của thuộc tính
int ExtCount; // tổng số tất cả các thuộc tính
color ExtColors[2]; // mảng màu để hiển thị các dòng
string ExtComments[2]; // mảng ghi chú (cho thuộc tính CHART_COMMENT)
//+------------------------------------------------------------------+
//| Hàm khởi tạo chỉ báo tùy chỉnh |
//+------------------------------------------------------------------+
int OnInit()
{
//--- hiển thị ghi chú trên biểu đồ
Comment("SomeComment");
//--- lưu màu vào mảng để có thể chuyển đổi sau này
ExtColors[0]=`InpFirstColor`;
ExtColors[1]=`InpSecondColor`;
//--- lưu ghi chú vào mảng để có thể chuyển đổi sau này
ExtComments[0]="FirstComment";
ExtComments[1]="SecondComment";
//--- chuẩn bị và hiển thị bảng điều khiển để quản lý thuộc tính biểu đồ
if(!PrepareControls())
return(`INIT_FAILED`);
//--- thực thi thành công
return(`INIT_SUCCEEDED`);
}
//+------------------------------------------------------------------+
//| Hàm hủy khởi tạo của chuyên gia |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- xóa ghi chú trên biểu đồ
Comment("");
}
//+------------------------------------------------------------------+
//| Xử lý sự kiện biểu đồ |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- kiểm tra sự kiện nhấp vào đối tượng biểu đồ
if(id==`CHARTEVENT_OBJECT_CLICK`)
{
//--- phân tách tên đối tượng bằng dấu phân cách
string obj_name[];
StringSplit(sparam,'_',obj_name);
//--- kiểm tra xem đối tượng có phải là nút không
if(obj_name[0]=="Button")
{
//--- lấy chỉ số nút
int index=(int)StringToInteger(obj_name[1]);
//--- bỏ nhấn nút
ExtButtons[index].State(false);
//--- thiết lập giá trị mới của thuộc tính tùy thuộc vào kiểu của nó
if(ExtDataTypes[index]=='I')
ChangeIntegerProperty(index);
if(ExtDataTypes[index]=='D')
ChangeDoubleProperty(index);
if(ExtDataTypes[index]=='S')
ChangeStringProperty(index);
}
}
//--- vẽ lại giá trị thuộc tính
RedrawProperties();
ChartRedraw();
}
//+------------------------------------------------------------------+
//| Thay đổi thuộc tính số nguyên của biểu đồ |
//+------------------------------------------------------------------+
void ChangeIntegerProperty(const int index)
{
//--- lấy giá trị hiện tại của thuộc tính
long value=ChartGetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[index]);
//--- xác định giá trị tiếp theo của thuộc tính
switch(ExtDrawTypes[index])
{
case 'C':
value=GetNextColor((color)value);
break;
default:
value=(long)GetNextValue((double)value,index);
break;
}
//--- thiết lập giá trị mới cho thuộc tính
ChartSetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[index],0,value);
}
//+------------------------------------------------------------------+
//| Thay đổi thuộc tính số thực của biểu đồ |
//+------------------------------------------------------------------+
void ChangeDoubleProperty(const int index)
{
//--- lấy giá trị hiện tại của thuộc tính
double value=ChartGetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[index]);
//--- xác định giá trị tiếp theo của thuộc tính
value=GetNextValue(value,index);
//--- thiết lập giá trị mới cho thuộc tính
ChartSetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[index],value);
}
//+------------------------------------------------------------------+
//| Thay đổi thuộc tính chuỗi của biểu đồ |
//+------------------------------------------------------------------+
void ChangeStringProperty(const int index)
{
//--- biến tĩnh để chuyển đổi trong mảng ExtComments
static uint comment_index=1;
//--- thay đổi chỉ số để lấy ghi chú khác
comment_index=1-comment_index;
//--- thiết lập giá trị mới cho thuộc tính
ChartSetString(0,(ENUM_CHART_PROPERTY_STRING)ExtNumbers[index],ExtComments[comment_index]);
}
//+------------------------------------------------------------------+
//| Lấy giá trị tiếp theo của thuộc tính |
//+------------------------------------------------------------------+
double GetNextValue(const double value,const int index)
{
if(value+ExtStep[index]<=ExtMaxValue[index])
return(value+ExtStep[index]);
else
return(ExtMinValue[index]);
}
//+------------------------------------------------------------------+
//| Lấy màu tiếp theo cho thuộc tính kiểu màu |
//+------------------------------------------------------------------+
color GetNextColor(const color clr)
{
//--- trả về giá trị màu tiếp theo
switch(clr)
{
case clrWhite: return(clrRed);
case clrRed: return(clrGreen);
case clrGreen: return(clrBlue);
case clrBlue: return(clrBlack);
default: return(clrWhite);
}
}
//+------------------------------------------------------------------+
//| Vẽ lại giá trị thuộc tính |
//+------------------------------------------------------------------+
void RedrawProperties(void)
{
//--- văn bản giá trị thuộc tính
string text;
long value;
//--- vòng lặp theo số lượng thuộc tính
for(int i=0;i<ExtCount;i++)
{
text="";
switch(ExtDataTypes[i])
{
case 'I':
//--- lấy giá trị hiện tại của thuộc tính
if(!ChartGetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[i],0,value))
break;
//--- văn bản thuộc tính số nguyên
switch(ExtDrawTypes[i])
{
//--- thuộc tính màu
case 'C':
text=(string)((color)value);
break;
//--- thuộc tính boolean
case 'B':
text=(string)((bool)value);
break;
//--- thuộc tính liệt kê ENUM_CHART_MODE
case 'M':
text=EnumToString((ENUM_CHART_MODE)value);
break;
//--- thuộc tính liệt kê ENUM_CHART_VOLUME_MODE
case 'V':
text=EnumToString((ENUM_CHART_VOLUME_MODE)value);
break;
//--- số kiểu int
default:
text=IntegerToString(value);
break;
}
break;
case 'D':
//--- văn bản thuộc tính số thực
text=DoubleToString(ChartGetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[i]),4);
break;
case 'S':
//--- văn bản thuộc tính chuỗi
text=ChartGetString(0,(ENUM_CHART_PROPERTY_STRING)ExtNumbers[i]);
break;
}
//--- hiển thị giá trị thuộc tính
ExtLabelsValue[i].Description(text);
}
}
//+------------------------------------------------------------------+
//| Tạo bảng điều khiển để quản lý thuộc tính biểu đồ |
//+------------------------------------------------------------------+
bool PrepareControls(void)
{
//--- cấp phát bộ nhớ cho các mảng với dự trữ
MemoryAllocation(LAST_PROPERTY_NUMBER+1);
//--- biến
int i=0; // biến vòng lặp
int col_1=0; // số lượng thuộc tính trong cột đầu tiên
int col_2=0; // số lượng thuộc tính trong cột thứ hai
int col_3=0; // số lượng thuộc tính trong cột thứ ba
//--- số lượng thuộc tính hiện tại - 0
ExtCount=0;
//--- tìm kiếm thuộc tính trong vòng lặp
while(i<=LAST_PROPERTY_NUMBER)
{
//--- lưu số lượng hiện tại của thuộc tính
ExtNumbers[ExtCount]=i;
//--- tăng giá trị của biến vòng lặp
i++;
//--- kiểm tra xem có thuộc tính nào với số như vậy không
if(CheckNumber(ExtNumbers[ExtCount],ExtNames[ExtCount],ExtDataTypes[ExtCount],ExtGroupTypes[ExtCount],ExtDrawTypes[ExtCount]))
{
//--- tạo các phần tử điều khiển cho thuộc tính
switch(ExtGroupTypes[ExtCount])
{
case 1:
//--- tạo nhãn và nút cho thuộc tính
if(!ShowProperty(ExtCount,0,X_PROPERTY_NAME_1,X_PROPERTY_VALUE_1,X_BUTTON_1,Y_PROPERTY_1+col_1*Y_DISTANCE,true))
return(false);
//--- số lượng phần tử trong cột đầu tiên tăng lên
col_1++;
break;
case 2:
//--- tạo nhãn và nút cho thuộc tính
if(!ShowProperty(ExtCount,1,X_PROPERTY_NAME_2,X_PROPERTY_VALUE_2,X_BUTTON_2,Y_PROPERTY_1+col_2*Y_DISTANCE,true))
return(false);
//--- số lượng phần tử trong cột thứ hai tăng lên
col_2++;
break;
case 3:
//--- chỉ tạo nhãn cho thuộc tính
if(!ShowProperty(ExtCount,2,X_PROPERTY_NAME_2,X_PROPERTY_VALUE_2,0,Y_PROPERTY_2+col_3*Y_DISTANCE,false))
return(false);
//--- số lượng phần tử trong cột thứ ba tăng lên
col_3++;
break;
}
//--- xác định giá trị tối đa, tối thiểu và bước của thuộc tính
GetMaxMinStep(ExtNumbers[ExtCount],ExtMaxValue[ExtCount],ExtMinValue[ExtCount],ExtStep[ExtCount]);
//--- tăng số lượng thuộc tính
ExtCount++;
}
}
//--- giải phóng bộ nhớ không được sử dụng bởi các mảng
MemoryAllocation(ExtCount);
//--- vẽ lại giá trị thuộc tính
RedrawProperties();
ChartRedraw();
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Cấp phát bộ nhớ cho các mảng |
//+------------------------------------------------------------------+
void MemoryAllocation(const int size)
{
ArrayResize(ExtLabelsName,size);
ArrayResize(ExtLabelsValue,size);
ArrayResize(ExtButtons,size);
ArrayResize(ExtNumbers,size);
ArrayResize(ExtNames,size);
ArrayResize(ExtDataTypes,size);
ArrayResize(ExtGroupTypes,size);
ArrayResize(ExtDrawTypes,size);
ArrayResize(ExtMaxValue,size);
ArrayResize(ExtMinValue,size);
ArrayResize(ExtStep,size);
}
//+------------------------------------------------------------------+
//| Kiểm tra xem chỉ số thuộc tính có thuộc về một trong |
//| các liệt kê ENUM_CHART_PROPERTIES không |
//+------------------------------------------------------------------+
bool CheckNumber(const int ind,string &name,uchar &data_type,uint &group_type,uchar &draw_type)
{
//--- kiểm tra xem thuộc tính có phải là kiểu số nguyên không
ResetLastError();
name=EnumToString((ENUM_CHART_PROPERTY_INTEGER)ind);
if(_LastError==0)
{
data_type=`I`; // thuộc tính từ liệt kê ENUM_CHART_PROPERTY_INTEGER
GetTypes(ind,group_type,draw_type); // xác định tham số hiển thị thuộc tính
return(true);
}
//--- kiểm tra xem thuộc tính có phải là kiểu số thực không
ResetLastError();
name=EnumToString((ENUM_CHART_PROPERTY_DOUBLE)ind);
if(_LastError==0)
{
data_type=`D`; // thuộc tính từ liệt kê ENUM_CHART_PROPERTY_DOUBLE
GetTypes(ind,group_type,draw_type); // xác định tham số hiển thị thuộc tính
return(true);
}
//--- kiểm tra xem thuộc tính có phải là kiểu chuỗi không
ResetLastError();
name=EnumToString((ENUM_CHART_PROPERTY_STRING)ind);
if(_LastError==0)
{
data_type=`S`; // thuộc tính từ liệt kê ENUM_CHART_PROPERTY_STRING
GetTypes(ind,group_type,draw_type); // xác định tham số hiển thị thuộc tính
return(true);
}
//--- thuộc tính không thuộc về bất kỳ liệt kê nào
return(false);
}
//+------------------------------------------------------------------+
//| Xác định nhóm mà thuộc tính nên được lưu trữ, |
//| cũng như kiểu hiển thị của nó |
//+------------------------------------------------------------------+
void GetTypes(const int property_number,uint &group_type,uchar &draw_type)
{
//--- kiểm tra xem thuộc tính có thuộc nhóm thứ ba không
//--- các thuộc tính nhóm thứ ba được hiển thị trong cột thứ hai bắt đầu từ CHART_BRING_TO_TOP
if(CheckThirdGroup(property_number,group_type,draw_type))
return;
//--- kiểm tra xem thuộc tính có thuộc nhóm thứ hai không
//--- các thuộc tính nhóm thứ hai được hiển thị ở đầu cột thứ hai
if(CheckSecondGroup(property_number,group_type,draw_type))
return;
//--- nếu bạn ở đây, thuộc tính thuộc nhóm thứ nhất (cột đầu tiên)
CheckFirstGroup(property_number,group_type,draw_type);
}
//+----------------------------------------------------------------------+
//| Kiểm tra xem thuộc tính có thuộc nhóm thứ ba không và |
//| xác định kiểu hiển thị của nó trong trường hợp trả lời tích cực |
//+----------------------------------------------------------------------+
bool CheckThirdGroup(const int property_number,uint &group_type,uchar &draw_type)
{
//--- kiểm tra xem thuộc tính có thuộc nhóm thứ ba không
switch(property_number)
{
//--- thuộc tính boolean
case CHART_IS_OBJECT:
case CHART_WINDOW_IS_VISIBLE:
draw_type=`B`;
break;
//--- thuộc tính số nguyên
case CHART_VISIBLE_BARS:
case CHART_WINDOWS_TOTAL:
case CHART_WINDOW_HANDLE:
case CHART_WINDOW_YDISTANCE:
case CHART_FIRST_VISIBLE_BAR:
case CHART_WIDTH_IN_BARS:
case CHART_WIDTH_IN_PIXELS:
draw_type=`I`;
break;
//--- thuộc tính số thực
case CHART_PRICE_MIN:
case CHART_PRICE_MAX:
draw_type=`D`;
break;
//--- thực tế, thuộc tính này là lệnh hiển thị biểu đồ lên trên cùng tất cả các biểu đồ khác
//--- không cần áp dụng bảng điều khiển này, vì cửa sổ sẽ luôn ở
//--- trên cùng các cửa sổ khác trước khi chúng ta sử dụng nó
case CHART_BRING_TO_TOP:
draw_type=` `;
break;
//--- thuộc tính không thuộc nhóm thứ ba
default:
return(false);
}
//--- thuộc tính thuộc nhóm thứ ba
group_type=3;
return(true);
}
//+----------------------------------------------------------------------+
//| Kiểm tra xem thuộc tính có thuộc nhóm thứ hai không và |
//| xác định kiểu hiển thị của nó trong trường hợp trả lời tích cực |
//+----------------------------------------------------------------------+
bool CheckSecondGroup(const int property_number,uint &group_type,uchar &draw_type)
{
//--- kiểm tra xem thuộc tính có thuộc nhóm thứ hai không
switch(property_number)
{
//--- thuộc tính kiểu ENUM_CHART_MODE
case CHART_MODE:
draw_type=`M`;
break;
//--- thuộc tính kiểu ENUM_CHART_VOLUME_MODE
case CHART_SHOW_VOLUMES:
draw_type=`V`;
break;
//--- thuộc tính chuỗi
case CHART_COMMENT:
draw_type=`S`;
break;
//--- thuộc tính màu
case CHART_COLOR_BACKGROUND:
case CHART_COLOR_FOREGROUND:
case CHART_COLOR_GRID:
case CHART_COLOR_VOLUME:
case CHART_COLOR_CHART_UP:
case CHART_COLOR_CHART_DOWN:
case CHART_COLOR_CHART_LINE:
case CHART_COLOR_CANDLE_BULL:
case CHART_COLOR_CANDLE_BEAR:
case CHART_COLOR_BID:
case CHART_COLOR_ASK:
case CHART_COLOR_LAST:
case CHART_COLOR_STOP_LEVEL:
draw_type=`C`;
break;
//--- thuộc tính không thuộc nhóm thứ hai
default:
return(false);
}
//--- thuộc tính thuộc nhóm thứ hai
group_type=2;
return(true);
}
//+-----------------------------------------------------------------------+
//| Được gọi chỉ khi đã biết rằng thuộc tính không thuộc |
//| nhóm thuộc tính thứ hai và thứ ba |
//+-----------------------------------------------------------------------+
void CheckFirstGroup(const int property_number,uint &group_type,uchar &draw_type)
{
//--- thuộc tính thuộc nhóm thứ nhất
group_type=1;
//--- xác định kiểu hiển thị thuộc tính
switch(property_number)
{
//--- thuộc tính số nguyên
case CHART_SCALE:
case CHART_HEIGHT_IN_PIXELS:
draw_type=`I`;
return;
//--- thuộc tính số thực
case CHART_SHIFT_SIZE:
case CHART_FIXED_POSITION:
case CHART_FIXED_MAX:
case CHART_FIXED_MIN:
case CHART_POINTS_PER_BAR:
draw_type=`D`;
return;
//--- chỉ còn lại các thuộc tính boolean
default:
draw_type=`B`;
return;
}
}
//+------------------------------------------------------------------+
//| Tạo nhãn và nút cho thuộc tính |
//+------------------------------------------------------------------+
bool ShowProperty(const int ind,const int type,const int x1,const int x2,
const int xb,const int y,const bool btn)
{
//--- mảng tĩnh để chuyển đổi trong mảng màu ExtColors
static uint color_index[3]={1,1,1};
//--- thay đổi chỉ số để nhận màu khác
color_index[type]=1-color_index[type];
//--- hiển thị nhãn và nút (nếu btn=true) cho thuộc tính
if(!LabelCreate(ExtLabelsName[ind],`name_`+(string)ind,ExtNames[ind],ExtColors[color_index[type]],x1,y))
return(false);
if(!LabelCreate(ExtLabelsValue[ind],`value_`+(string)ind,``,ExtColors[color_index[type]],x2,y))
return(false);
if(btn && !ButtonCreate(ExtButtons[ind],(string)ind,xb,y+1))
return(false);
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Tạo nhãn |
//+------------------------------------------------------------------+
bool LabelCreate(CChartObjectLabel &lbl,const string name,const string text,
const color clr,const int x,const int y)
{
if(!lbl.Create(0,`Label_`+name,0,x,y)) return(false);
if(!lbl.Description(text)) return(false);
if(!lbl.FontSize(10)) return(false);
if(!lbl.Color(clr)) return(false);
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Tạo nút |
//+------------------------------------------------------------------+
bool ButtonCreate(CChartObjectButton &btn,const string name,
const int x,const int y)
{
if(!btn.Create(0,`Button_`+name,0,x,y,50,15)) return(false);
if(!btn.Description(`Next`)) return(false);
if(!btn.FontSize(10)) return(false);
if(!btn.Color(clrBlack)) return(false);
if(!btn.BackColor(clrWhite)) return(false);
if(!btn.BorderColor(clrBlack)) return(false);
//--- thực thi thành công
return(true);
}
//+------------------------------------------------------------------+
//| Xác định giá trị tối đa, tối thiểu và bước của thuộc tính |
//+------------------------------------------------------------------+
void GetMaxMinStep(const int property_number,double &max,double &min,double &step)
{
double value;
//--- đặt giá trị tùy thuộc vào kiểu thuộc tính
switch(property_number)
{
case CHART_SCALE:
max=5;
min=0;
step=1;
break;
case CHART_MODE:
case CHART_SHOW_VOLUMES:
max=2;
min=0;
step=1;
break;
case CHART_SHIFT_SIZE:
max=50;
min=10;
step=2.5;
break;
case CHART_FIXED_POSITION:
max=90;
min=0;
step=15;
break;
case CHART_POINTS_PER_BAR:
max=19;
min=1;
step=3;
break;
case CHART_FIXED_MAX:
value=ChartGetDouble(0,CHART_FIXED_MAX);
max=value*1.25;
min=value;
step=value/32;
break;
case CHART_FIXED_MIN:
value=ChartGetDouble(0,CHART_FIXED_MIN);
max=value;
min=value*0.75;
step=value/32;
break;
case CHART_HEIGHT_IN_PIXELS:
max=700;
min=520;
step=30;
break;
//--- giá trị mặc định
default:
max=1;
min=0;
step=1;
}
}
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575