账户属性

使用 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);
  }