跳至内容

账户属性

账户属性

使用 AccountInfoInteger()AccountInfoDouble()AccountInfoString() 函数获得活期账户信息,该函数参数值可用接收类似于ENUM_ACCOUNT_INFO项目的值。

使用 AccountInfoInteger() 函数

ENUM_ACCOUNT_INFO_INTEGER

标识符描述类型
ACCOUNT_LOGIN账户数量long
ACCOUNT_TRADE_MODE账户交易方式ENUM_ACCOUNT_TRADE_MODE
ACCOUNT_LEVERAGE账户杠杆long
ACCOUNT_LIMIT_ORDERS活跃待办订单最大允许量int
ACCOUNT_MARGIN_SO_MODE建立最少使用保证金方式ENUM_ACCOUNT_STOPOUT_MODE
ACCOUNT_TRADE_ALLOWED允许活期账户交易bool
ACCOUNT_TRADE_EXPERT允许EA交易bool
ACCOUNT_MARGIN_MODE预付款计算模式ENUM_ACCOUNT_MARGIN_MODE
ACCOUNT_CURRENCY_DIGITS账户货币的小数位数,这是正确展示交易结果所必需的int
ACCOUNT_FIFO_CLOSE表示只能通过FIFO规则平仓的一种指示。如果该属性值设为true,那么每个交易品种都将按照持仓的相同顺序进行平仓,从最早持仓的开始。如果试图以不同的顺序平仓,那么交易者将收到一个对应的错误提示。

对于采用非锁仓持仓账户模式的账户 (ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING),该属性值始终为false。
bool

函数 AccountInfoDouble()

ENUM_ACCOUNT_INFO_DOUBLE

标识符描述类型
ACCOUNT_BALANCE存入货币时账户结余双精度
ACCOUNT_CREDIT存入货币时账户亏空双精度
ACCOUNT_PROFIT存入货币时账户当前利润双精度
ACCOUNT_EQUITY存入货币时账户权益双精度
ACCOUNT_MARGIN存入货币时账户保证金使用双精度
ACCOUNT_MARGIN_FREE存入货币时账户可用保证金双精度
ACCOUNT_MARGIN_LEVEL账户保证金水平仪百分比形式制定双精度
ACCOUNT_MARGIN_SO_CALL保证金调用水平,依据建立的ACCOUNT_MARGIN_SO_MODE,以百分比形式或存入货币时期表示双精度
ACCOUNT_MARGIN_SO_SO保证金停用水平,依据建立的ACCOUNT_MARGIN_SO_MODE,以百分比形式或存入货币时期表示双精度
ACCOUNT_MARGIN_INITIAL初始预付款。账户上保留的金额需要涵盖所有挂单的预付款双精度
ACCOUNT_MARGIN_MAINTENANCE维持预付款。账户上保留的最小净值需要涵盖所有持仓的最小金额双精度
ACCOUNT_ASSETS账户的活动资本双精度
ACCOUNT_LIABILITIES账户的流动负债双精度
ACCOUNT_COMMISSION_BLOCKED账户的当前锁定手续费金额双精度

函数 AccountInfoString()

ENUM_ACCOUNT_INFO_STRING

标识符描述类型
ACCOUNT_NAME用户名字符串
ACCOUNT_SERVER交易服务器名称字符串
ACCOUNT_CURRENCY账户货币字符串
ACCOUNT_COMPANY提供账户的公司名称字符串

有几种账户类型,可以在交易服务器上打开。MQL5程序运行的账户类型可以使用ENUM_ACCOUNT_TRADE_MODE 枚举找出来。

ENUM_ACCOUNT_TRADE_MODE

标识符描述
ACCOUNT_TRADE_MODE_DEMO样本账户
ACCOUNT_TRADE_MODE_CONTEST竞争账户
ACCOUNT_TRADE_MODE_REAL真实账户

如果净值不足以保持持仓,止损离场的情况,例如强制平仓发生。出现止损离场的最小预付款水平能够以百分比或货币条款来设置。若要找到账户设置的模式,请使用ENUM_ACCOUNT_STOPOUT_MODE 枚举。

ENUM_ACCOUNT_STOPOUT_MODE

标识符描述
ACCOUNT_STOPOUT_MODE_PERCENT账户以半分比方式截止
ACCOUNT_STOPOUT_MODE_MONEY账户以货币方式截止

ENUM_ACCOUNT_MARGIN_MODE

标识符描述
ACCOUNT_MARGIN_MODE_RETAIL_NETTING用于场外交易市场“单边持仓”模式下的持仓说明 (一个交易品种只存在一个持仓)。预付款计算基于交易品种的类型 (SYMBOL_TRADE_CALC_MODE)。
ACCOUNT_MARGIN_MODE_EXCHANGE用于交易所市场。预付款计算基于交易品种设置中指定的折扣。折扣由交易商设定,但不能低于交易所设定的值。
ACCOUNT_MARGIN_MODE_RETAIL_HEDGING用于交易所市场,在这里个体持仓成为可能(锁仓,一个交易品种可以存在多个持仓)。预付款计算基于考虑锁仓预付款 (SYMBOL_MARGIN_HEDGED)的交易品种类型(SYMBOL_TRADE_CALC_MODE) 。

输出简单账户信息的脚本示例。

//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 公司名称
   string company=AccountInfoString(ACCOUNT_COMPANY);
//--- 客户名称
   string name=AccountInfoString(ACCOUNT_NAME);
//--- 账号
   long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- 服务器名称
   string server=AccountInfoString(ACCOUNT_SERVER);
//--- 账户货币
   string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- 模拟,竞赛或真实账户
   ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- 现在将枚举的值转换为一个可理解的形式
   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;
     }
//--- 以百分比或货币形式设置止损离场
   ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- 获取当出现预付款调用和止损离场时的水平的值
   double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
   double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- 显示账户信息简介
   PrintFormat("The account of the client '%s' #%d %s opened in '%s' on the server '%s'",
               name,login,trade_mode,company,server);
   PrintFormat("Account currency - %s, MarginCall and StopOut levels are set in %s",
               currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"percentage":" money");
   PrintFormat("MarginCall=%G, StopOut=%G",margin_call,stop_out);
  }