账户属性

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

  }