Mã Lý Do Hủy Khởi Tạo
Mã lý do hủy khởi tạo codes được trả về bởi hàm UninitializeReason(). Các giá trị có thể bao gồm như sau:
Hằng số | Giá trị | Mô tả |
---|---|---|
REASON_PROGRAM | 0 | Expert Advisor đã kết thúc hoạt động bằng cách gọi hàm ExpertRemove() |
REASON_REMOVE | 1 | Chương trình đã bị xóa khỏi biểu đồ |
REASON_RECOMPILE | 2 | Chương trình đã được biên dịch lại |
REASON_CHARTCHANGE | 3 | Ký hiệu hoặc khoảng thời gian biểu đồ đã được thay đổi |
REASON_CHARTCLOSE | 4 | Biểu đồ đã được đóng |
REASON_PARAMETERS | 5 | Các tham số đầu vào đã được người dùng thay đổi |
REASON_ACCOUNT | 6 | Một tài khoản khác đã được kích hoạt hoặc đã xảy ra kết nối lại với máy chủ giao dịch do thay đổi trong cài đặt tài khoản |
REASON_TEMPLATE | 7 | Một mẫu mới đã được áp dụng |
REASON_INITFAILED | 8 | Giá trị này có nghĩa là trình xử lý OnInit() đã trả về một giá trị khác không |
REASON_CLOSE | 9 | Terminal đã được đóng |
Mã lý do hủy khởi tạo cũng được truyền dưới dạng tham số của hàm được xác định trước OnDeinit(const int reason).
Ví dụ:
cpp
//+------------------------------------------------------------------+
//| get text description |
//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
{
string text = "";
//---
switch(reasonCode)
{
case `REASON_ACCOUNT`:
text = "Tài khoản đã được thay đổi"; break;
case `REASON_CHARTCHANGE`:
text = "Ký hiệu hoặc khung thời gian đã được thay đổi"; break;
case `REASON_CHARTCLOSE`:
text = "Biểu đồ đã được đóng"; break;
case `REASON_PARAMETERS`:
text = "Tham số đầu vào đã được thay đổi"; break;
case `REASON_RECOMPILE`:
text = "Chương trình " + `__FILE__` + " đã được biên dịch lại"; break;
case `REASON_REMOVE`:
text = "Chương trình " + `__FILE__` + " đã bị xóa khỏi biểu đồ"; break;
case `REASON_TEMPLATE`:
text = "Mẫu mới đã được áp dụng cho biểu đồ"; break;
default: text = "Lý do khác";
}
//---
return text;
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- Cách thứ nhất để lấy mã lý do hủy khởi tạo
Print(`__FUNCTION__`, "_Uninitalization reason code = ", reason);
//--- Cách thứ hai để lấy mã lý do hủy khởi tạo
Print(`__FUNCTION__`, "_UninitReason = ", getUninitReasonText(`_UninitReason`));
}
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