Thuộc tính Tài khoản
Để lấy thông tin về tài khoản hiện tại, có một số hàm: AccountInfoInteger(), AccountInfoDouble() và AccountInfoString(). Giá trị tham số của các hàm này có thể nhận giá trị từ các liệt kê ENUM_ACCOUNT_INFO tương ứng.
Đối với hàm AccountInfoInteger()
ENUM_ACCOUNT_INFO_INTEGER
Định danh | Mô tả | Kiểu dữ liệu |
---|---|---|
ACCOUNT_LOGIN | Số tài khoản | long |
ACCOUNT_TRADE_MODE | Chế độ giao dịch của tài khoản | ENUM_ACCOUNT_TRADE_MODE |
ACCOUNT_LEVERAGE | Đòn bẩy tài khoản | long |
ACCOUNT_LIMIT_ORDERS | Số lượng tối đa các lệnh chờ hoạt động được phép | int |
ACCOUNT_MARGIN_SO_MODE | Chế độ cài đặt mức ký quỹ tối thiểu được phép | ENUM_ACCOUNT_STOPOUT_MODE |
ACCOUNT_TRADE_ALLOWED | Giao dịch được phép cho tài khoản hiện tại | bool |
ACCOUNT_TRADE_EXPERT | Giao dịch được phép cho Expert Advisor | bool |
ACCOUNT_MARGIN_MODE | Chế độ tính toán ký quỹ | ENUM_ACCOUNT_MARGIN_MODE |
ACCOUNT_CURRENCY_DIGITS | Số chữ số thập phân trong tiền tệ tài khoản, cần thiết để hiển thị chính xác kết quả giao dịch | int |
ACCOUNT_FIFO_CLOSE | Dấu hiệu cho thấy các vị thế chỉ có thể được đóng theo quy tắc FIFO. Nếu giá trị thuộc tính được đặt thành true , thì các vị thế của mỗi biểu tượng sẽ được đóng theo thứ tự mở, bắt đầu từ vị thế cũ nhất. Trong trường hợp cố gắng đóng vị thế theo thứ tự khác, nhà giao dịch sẽ nhận được lỗi tương ứng.Đối với các tài khoản có chế độ kế toán vị thế không phòng ngừa (ACCOUNT_MARGIN_MODE != ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), giá trị thuộc tính luôn là false . | bool |
ACCOUNT_HEDGE_ALLOWED | Cho phép các vị thế đối lập trên cùng một biểu tượng | bool |
Đối với hàm AccountInfoDouble()
ENUM_ACCOUNT_INFO_DOUBLE
Định danh | Mô tả | Kiểu dữ liệu |
---|---|---|
ACCOUNT_BALANCE | Số dư tài khoản trong tiền tệ ký quỹ | double |
ACCOUNT_CREDIT | Tín dụng tài khoản trong tiền tệ ký quỹ | double |
ACCOUNT_PROFIT | Lợi nhuận hiện tại của tài khoản trong tiền tệ ký quỹ | double |
ACCOUNT_EQUITY | Vốn chủ sở hữu tài khoản trong tiền tệ ký quỹ | double |
ACCOUNT_MARGIN | Ký quỹ tài khoản được sử dụng trong tiền tệ ký quỹ | double |
ACCOUNT_MARGIN_FREE | Ký quỹ tự do của tài khoản trong tiền tệ ký quỹ | double |
ACCOUNT_MARGIN_LEVEL | Mức ký quỹ tài khoản tính bằng phần trăm | double |
ACCOUNT_MARGIN_SO_CALL | Mức gọi ký quỹ. Tùy thuộc vào ACCOUNT_MARGIN_SO_MODE được cài đặt, được biểu thị bằng phần trăm hoặc tiền tệ ký quỹ | double |
ACCOUNT_MARGIN_SO_SO | Mức dừng giao dịch (Stop Out). Tùy thuộc vào ACCOUNT_MARGIN_SO_MODE được cài đặt, được biểu thị bằng phần trăm hoặc tiền tệ ký quỹ | double |
ACCOUNT_MARGIN_INITIAL | Ký quỹ ban đầu. Số tiền được giữ trong tài khoản để trang trải ký quỹ của tất cả các lệnh chờ | double |
ACCOUNT_MARGIN_MAINTENANCE | Ký quỹ duy trì. Mức vốn tối thiểu được giữ trong tài khoản để trang trải số tiền tối thiểu của tất cả các vị thế đang mở | double |
ACCOUNT_ASSETS | Tài sản hiện tại của tài khoản | double |
ACCOUNT_LIABILITIES | Nợ phải trả hiện tại của tài khoản | double |
ACCOUNT_COMMISSION_BLOCKED | Số tiền hoa hồng bị khóa hiện tại của tài khoản | double |
Đối với hàm AccountInfoString()
ENUM_ACCOUNT_INFO_STRING
Định danh | Mô tả | Kiểu dữ liệu |
---|---|---|
ACCOUNT_NAME | Tên khách hàng | string |
ACCOUNT_SERVER | Tên máy chủ giao dịch | string |
ACCOUNT_CURRENCY | Tiền tệ tài khoản | string |
ACCOUNT_COMPANY | Tên công ty phục vụ tài khoản | string |
Có một số loại tài khoản có thể được mở trên máy chủ giao dịch. Loại tài khoản mà chương trình MQL5 đang chạy có thể được tìm hiểu bằng cách sử dụng liệt kê ENUM_ACCOUNT_TRADE_MODE
.
ENUM_ACCOUNT_TRADE_MODE
Định danh | Mô tả |
---|---|
ACCOUNT_TRADE_MODE_DEMO | Tài khoản demo |
ACCOUNT_TRADE_MODE_CONTEST | Tài khoản thi đấu |
ACCOUNT_TRADE_MODE_REAL | Tài khoản thực |
Trong trường hợp vốn không đủ để duy trì các vị thế đang mở, tình huống Stop Out, tức là đóng lệnh bắt buộc, sẽ xảy ra. Mức ký quỹ tối thiểu mà tại đó Stop Out xảy ra có thể được cài đặt bằng phần trăm hoặc dưới dạng tiền tệ. Để tìm hiểu chế độ được cài đặt cho tài khoản, sử dụng liệt kê ENUM_ACCOUNT_STOPOUT_MODE
.
ENUM_ACCOUNT_STOPOUT_MODE
Định danh | Mô tả |
---|---|
ACCOUNT_STOPOUT_MODE_PERCENT | Chế độ dừng giao dịch của tài khoản tính bằng phần trăm |
ACCOUNT_STOPOUT_MODE_MONEY | Chế độ dừng giao dịch của tài khoản tính bằng tiền |
ENUM_ACCOUNT_MARGIN_MODE
Định danh | Mô tả |
---|---|
ACCOUNT_MARGIN_MODE_RETAIL_NETTING | Được sử dụng cho thị trường OTC để diễn giải các vị thế theo chế độ "netting" (chỉ một vị thế có thể tồn tại cho một biểu tượng). Ký quỹ được tính toán dựa trên loại biểu tượng (SYMBOL_TRADE_CALC_MODE). |
ACCOUNT_MARGIN_MODE_EXCHANGE | Được sử dụng cho thị trường sàn giao dịch. Ký quỹ được tính toán dựa trên các mức chiết khấu được chỉ định trong cài đặt biểu tượng. Các mức chiết khấu do nhà môi giới đặt ra, nhưng không thấp hơn các giá trị do sàn giao dịch đặt. |
ACCOUNT_MARGIN_MODE_RETAIL_HEDGING | Được sử dụng cho thị trường sàn giao dịch nơi có thể có các vị thế riêng lẻ (phòng ngừa rủi ro, nhiều vị thế có thể tồn tại cho một biểu tượng). Ký quỹ được tính toán dựa trên loại biểu tượng (SYMBOL_TRADE_CALC_MODE) có tính đến ký quỹ phòng ngừa (SYMBOL_MARGIN_HEDGED). |
Ví dụ về kịch bản hiển thị thông tin tài khoản ngắn gọn.
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- Tên của công ty
string company=AccountInfoString(ACCOUNT_COMPANY);
//--- Tên của khách hàng
string name=AccountInfoString(ACCOUNT_NAME);
//--- Số tài khoản
long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- Tên của máy chủ
string server=AccountInfoString(ACCOUNT_SERVER);
//--- Tiền tệ tài khoản
string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- Tài khoản demo, thi đấu hoặc thực
ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- Bây giờ chuyển đổi giá trị của liệt kê thành dạng dễ hiểu
string trade_mode;
switch(account_type)
{
case ACCOUNT_TRADE_MODE_DEMO:
trade_mode="demo";
break;
case ACCOUNT_TRADE_MODE_CONTEST:
trade_mode="contest";
break;
default:
trade_mode="real";
break;
}
//--- Stop Out được cài đặt bằng phần trăm hoặc tiền
ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- Lấy giá trị của các mức khi Margin Call và Stop Out xảy ra
double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- Hiển thị thông tin tài khoản ngắn gọn
PrintFormat("Tài khoản của khách hàng '%s' #%d %s được mở tại '%s' trên máy chủ '%s'",
name,login,trade_mode,company,server);
PrintFormat("Tiền tệ tài khoản - %s, mức MarginCall và StopOut được cài đặt bằng %s",
currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"phần trăm":" tiền");
PrintFormat("MarginCall=%G, StopOut=%G",margin_call,stop_out);
}
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