Skip to content

Account Properties

Account Properties

To obtain information about the current account there are several functions: AccountInfoInteger(), AccountInfoDouble() and AccountInfoString(). The function parameter values can accept values from the corresponding ENUM_ACCOUNT_INFO enumerations.

For the function AccountInfoInteger()

ENUM_ACCOUNT_INFO_INTEGER

IdentifierDescriptionType
ACCOUNT_LOGINAccount numberlong
ACCOUNT_TRADE_MODEAccount trade modeENUM_ACCOUNT_TRADE_MODE
ACCOUNT_LEVERAGEAccount leveragelong
ACCOUNT_LIMIT_ORDERSMaximum allowed number of open positions and active pending orders (in total), 0 — unlimitedint
ACCOUNT_MARGIN_SO_MODEMode for setting the minimal allowed marginENUM_ACCOUNT_STOPOUT_MODE
ACCOUNT_TRADE_ALLOWEDAllowed trade for the current accountbool
ACCOUNT_TRADE_EXPERTAllowed trade for an Expert Advisorbool

For the function AccountInfoDouble()

ENUM_ACCOUNT_INFO_DOUBLE

IdentifierDescriptionType
ACCOUNT_BALANCEAccount balance in the deposit currencydouble
ACCOUNT_CREDITAccount credit in the deposit currencydouble
ACCOUNT_PROFITCurrent profit of an account in the deposit currencydouble
ACCOUNT_EQUITYAccount equity in the deposit currencydouble
ACCOUNT_MARGINAccount margin used in the deposit currencydouble
ACCOUNT_MARGIN_FREEFree margin of an account in the deposit currencydouble
ACCOUNT_MARGIN_LEVELAccount margin level in percentsdouble
ACCOUNT_MARGIN_SO_CALLMargin call level. Depending on the set ACCOUNT_MARGIN_SO_MODE is expressed in percents or in the deposit currencydouble
ACCOUNT_MARGIN_SO_SOMargin stop out level. Depending on the set ACCOUNT_MARGIN_SO_MODE is expressed in percents or in the deposit currencydouble
ACCOUNT_MARGIN_INITIALNot supporteddouble
ACCOUNT_MARGIN_MAINTENANCENot supporteddouble
ACCOUNT_ASSETSNot supporteddouble
ACCOUNT_LIABILITIESNot supporteddouble
ACCOUNT_COMMISSION_BLOCKEDNot supporteddouble

For function AccountInfoString()

ENUM_ACCOUNT_INFO_STRING

IdentifierDescriptionType
ACCOUNT_NAMEClient namestring
ACCOUNT_SERVERTrade server namestring
ACCOUNT_CURRENCYAccount currencystring
ACCOUNT_COMPANYName of a company that serves the accountstring

There are several types of accounts that can be opened on a trade server. The type of account on which an MQL4 program is running can be found out using the ENUM_ACCOUNT_TRADE_MODE enumeration.

ENUM_ACCOUNT_TRADE_MODE

IdentifierDescription
ACCOUNT_TRADE_MODE_DEMODemo account
ACCOUNT_TRADE_MODE_CONTESTContest account
ACCOUNT_TRADE_MODE_REALReal account

In case equity is not enough for maintaining open orders, the Stop Out situation, i.e. forced closing occurs. The minimum margin level at which Stop Out occurs can be set in percentage or in monetary terms. To find out the mode set for the account use the ENUM_ACCOUNT_STOPOUT_MODE enumeration.

ENUM_ACCOUNT_STOPOUT_MODE

IdentifierDescription
ACCOUNT_STOPOUT_MODE_PERCENTAccount stop out mode in percents
ACCOUNT_STOPOUT_MODE_MONEYAccount stop out mode in money

An example of the script that outputs a brief account information.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Name of the company
   string company=AccountInfoString(ACCOUNT_COMPANY);
//--- Name of the client
   string name=AccountInfoString(ACCOUNT_NAME);
//--- Account number
   long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- Name of the server
   string server=AccountInfoString(ACCOUNT_SERVER);
//--- Account currency
   string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- Demo, contest or real account
   ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- Now transform the value of  the enumeration into an understandable form
   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 is set in percentage or money
   ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- Get the value of the levels when Margin Call and Stop Out occur
   double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
   double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- Show brief account information
   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);
  }
Last updated on