Информация о счете

Для получения информации о текущем счете предназначены функции 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

Разрешенность торговли для эксперта

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

ACCOUNT_HEDGE_ALLOWED

Признак того, что разрешены встречные позиции по одному символу

bool

Для функции AccountInfoDouble()

ENUM_ACCOUNT_INFO_DOUBLE

Идентификатор

Описание

Тип свойства

ACCOUNT_BALANCE

Баланс счета в валюте депозита

double

ACCOUNT_CREDIT

Размер предоставленного кредита в валюте депозита

double

ACCOUNT_PROFIT

Размер текущей прибыли на счете в валюте депозита

double

ACCOUNT_EQUITY

Значение собственных средств на счете в валюте депозита

double

ACCOUNT_MARGIN

Размер зарезервированных залоговых средств на счете  в валюте депозита

double

ACCOUNT_MARGIN_FREE

Размер свободных средств на счете  в валюте депозита, доступных для открытия позиции

double

ACCOUNT_MARGIN_LEVEL

Уровень залоговых средств на счете в процентах

double

ACCOUNT_MARGIN_SO_CALL

Уровень залоговых средств, при котором требуется пополнение счета (Margin Call). В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита

double

ACCOUNT_MARGIN_SO_SO

Уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out). В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита

double

ACCOUNT_MARGIN_INITIAL

Размер средств, зарезервированных на счёте, для обеспечения гарантийной суммы по всем отложенным ордерам

double

ACCOUNT_MARGIN_MAINTENANCE

Размер средств, зарезервированных на счёте, для обеспечения минимальной суммы по всем открытым позициям

double

ACCOUNT_ASSETS

Текущий размер активов на счёте

double

ACCOUNT_LIABILITIES

Текущий размер обязательств на счёте

double

ACCOUNT_COMMISSION_BLOCKED

Текущая сумма заблокированных комиссий по счёту

double

Для функции AccountInfoString()

ENUM_ACCOUNT_INFO_STRING

Идентификатор

Описание

Тип свойства

ACCOUNT_NAME

Имя клиента

string

ACCOUNT_SERVER

Имя торгового сервера

string

ACCOUNT_CURRENCY

Валюта депозита

string

ACCOUNT_COMPANY

Имя компании, обслуживающей счет

string

Существует несколько видов счетов, которые могут быть открыты на торговом сервере. Для того чтобы узнать тип счета, на котором работает MQL5-программа, предназначено перечисление ENUM_ACCOUNT_TRADE_MODE.

ENUM_ACCOUNT_TRADE_MODE

Идентификатор

Описание

ACCOUNT_TRADE_MODE_DEMO

Демонстрационный торговый счет

ACCOUNT_TRADE_MODE_CONTEST

Конкурсный торговый счет

ACCOUNT_TRADE_MODE_REAL

Реальный торговый счет

При нехватке собственных средств для поддержания открытых позиций возникает ситуация принудительного закрытия Stop Out. Минимальный уровень маржи, при котором наступает Stop Out, может задаваться в процентах или в денежном выражении. Узнать какой режим задан для данного счета можно с помощью перечисления 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_TRADE_CALC_MODE) и с учетом размера захеджированной маржи (SYMBOL_MARGIN_HEDGED).

Пример скрипта, выводящего краткую информацию о счете.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
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="конкурсный";
         break;
      default:
         trade_mode="реальный";
         break;
     }
//--- в процентах или в денежном выражении задается уровень Stop Out
   ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- получим значения уровней, при которых наступает Margin Call и Stop Out
   double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
   double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- выведем краткую информацию по счету
   PrintFormat("Счет клиента '%s' #%d %s открыт в '%s' на сервере '%s'",
               name,login,trade_mode,company,server);
   PrintFormat("Валюта счета - %s, уровень MarginCall и StopOut задается в %s",
               currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"процентах":" в деньгах");
   PrintFormat("Уровень MarginCall=%G, уровень StopOut=%G",margin_call,stop_out);
  }