Русский

Справочник MQL4 Константы, перечисления и структуры Состояние окружения Информация о счете

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

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

Максимально допустимое количество открытых позиций и действующих отложенных ордеров (суммарно), 0 — ограничений нет

int

ACCOUNT_MARGIN_SO_MODE

Режим задания минимально допустимого уровня залоговых средств

ENUM_ACCOUNT_STOPOUT_MODE

ACCOUNT_TRADE_ALLOWED

Разрешенность торговли для текущего счета

bool

ACCOUNT_TRADE_EXPERT

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

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

Существует несколько видов счетов, которые могут быть открыты на торговом сервере. Для того чтобы узнать тип счета, на котором работает MQL4-программа, предназначено перечисление 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

Уровень задается в деньгах

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

//+------------------------------------------------------------------+
//| 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);
  }