Información sobre la cuenta

Las funciones AccountInfoInteger(), AccountInfoDouble() y AccountInfoString() sirven para obtener la información sobre la cuenta corriente. Los valores de parámetros de estas funciones aceptan los valores de las correspondientes enumeraciones ENUM_ACCOUNT_INFO.

Para la función AccountInfoInteger()

ENUM_ACCOUNT_INFO_INTEGER

Identificador

Descripción

Tipo de la propiedad

ACCOUNT_LOGIN

Número de cuenta

long

ACCOUNT_TRADE_MODE

Account trade mode

ENUM_ACCOUNT_TRADE_MODE

ACCOUNT_LEVERAGE

Cuantía de apalancamiento concedido

long

ACCOUNT_LIMIT_ORDERS

El número máximo permitido de las órdenes pendientes activas

int

ACCOUNT_MARGIN_SO_MODE

Modo de establecimiento del nivel mínimo permitido de la margen

ENUM_ACCOUNT_STOPOUT_MODE

ACCOUNT_TRADE_ALLOWED

Permiso del trading para la cuenta corriente

bool

ACCOUNT_TRADE_EXPERT

Permiso del trading para un Asesor Experto

bool

ACCOUNT_MARGIN_MODE

Modo de cálculo del margen

ENUM_ACCOUNT_MARGIN_MODE

ACCOUNT_CURRENCY_DIGITS

Número de decimales -para la moneda de la cuenta- requerido para mostrar con precisión los resultados comerciales

int

ACCOUNT_FIFO_CLOSE

Indica que la posición solo se puede cerrar por el principio FIFO. Si el valor de la propiedad es true, solo se permitirá cerrar la posición de cada símbolo de acuerdo con el orden en que se abrieron, es decir, primero, la más antigua, después, la más reciente, etc. Al intentar cerrar posiciones en un orden diferente, aparecerá un error.

 

Para las cuentas sin el registro de posiciones con la ayuda de hedge (ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), la propiedad sempre será false

bool

ACCOUNT_HEDGE_ALLOWED

Indica que están permitidas las posiciones opuestas para el símbolo

bool

Para la función AccountInfoDouble()

ENUM_ACCOUNT_INFO_DOUBLE

Identificador

Descripción

Tipo de la propiedad

ACCOUNT_BALANCE

Balance de la cuenta en divisa del depósito

double

ACCOUNT_CREDIT

Cuantía de crédito concedido en divisa del depósito

double

ACCOUNT_PROFIT

Cuantía del beneficio actual en la cuenta en divisa del depósito

double

ACCOUNT_EQUITY

Cuantía de fondos propios en la cuenta en divisa del depósito

double

ACCOUNT_MARGIN

Cuantía de margen reservada en la cuenta en divisa del depósito

double

ACCOUNT_MARGIN_FREE

Cuantía de fondos disponibles en la cuenta en divisa del depósito para la apertura de una posición

double

ACCOUNT_MARGIN_LEVEL

Nivel de margen en la cuenta en por cientos

double

ACCOUNT_MARGIN_SO_CALL

Nivel de margen que requiere el recargo de la cuenta. Dependiendo del ACCOUNT_MARGIN_SO_MODE establecido, éste va en por cientos o en divisa del depósito

double

ACCOUNT_MARGIN_SO_SO

Nivel de margen; al llegar a este nivel, la posición menos rentable se cierra automáticamente. Dependiendo del ACCOUNT_MARGIN_SO_MODE establecido, éste va en por cientos o en divisa del depósito

double

ACCOUNT_MARGIN_INITIAL

Cuantía de fondos reservados en la cuenta para cubrir la garantía de todas las órdenes pendientes

double

ACCOUNT_MARGIN_MAINTENANCE

Cuantía de fondos reservados en la cuenta para cubrir el importe mínimo de todas las posiciones abiertas

double

ACCOUNT_ASSETS

Tamaño actual de fondos en la cuenta

double

ACCOUNT_LIABILITIES

Tamaño actual de obligaciones en la cuenta

double

ACCOUNT_COMMISSION_BLOCKED

Importe actual de comisiones bloqueadas de la cuenta

double

Para la función AccountInfoString()

ENUM_ACCOUNT_INFO_STRING

Identificador

Descripción

Tipo de la propiedad

ACCOUNT_NAME

Nombre de cliente

string

ACCOUNT_SERVER

Nombre del servidor comercial

string

ACCOUNT_CURRENCY

Divisa de depósito

string

ACCOUNT_COMPANY

Nombre de la empresa que atiende la cuenta

string

Hay varios tipos de cuentas que pueden estar abiertos en el servidor comercial. Para averiguar en qué tipo de cuenta opera un programa MQL5, se utiliza la enumeración ENUM_ACCOUNT_TRADE_MODE.

ENUM_ACCOUNT_TRADE_MODE

Identificador

Descripción

ACCOUNT_TRADE_MODE_DEMO

Cuenta comercial de demostración (Demo)

ACCOUNT_TRADE_MODE_CONTEST

Cuenta comercial de concurso (Contest)

ACCOUNT_TRADE_MODE_REAL

Cuenta comercial real (Real)

La situación del cierre forzoso Stop Out surge cuando faltan propios fondos para mantener las posiciones abiertas. El nivel mínimo de la margen que provoca Stop Out se puede establecer en por cientos o en dinero. La enumeración ENUM_ACCOUNT_STOPOUT_MODE sirve para averiguar el modo establecido para una cuenta en cuestión.

ENUM_ACCOUNT_STOPOUT_MODE

Identificador

Descripción

ACCOUNT_STOPOUT_MODE_PERCENT

Nivel en por cientos

ACCOUNT_STOPOUT_MODE_MONEY

Nivel en dinero

ENUM_ACCOUNT_MARGIN_MODE

Identifier

Description

ACCOUNT_MARGIN_MODE_RETAIL_NETTING

Se utiliza para el mercado no bursátil al registrar las posiciones en el modo "compensación" (en un símbolo puede haber solo una posición). El cálculo del margen se realiza basándose en el tipo de instrumento (SYMBOL_TRADE_CALC_MODE).

ACCOUNT_MARGIN_MODE_EXCHANGE

Se usa para el mercado bursátil. El cálculo del margen se realiza en base a los descuentos indicados en los ajustes de los instrumentos. Los descuentos son establecidos por el bróker, aunque no pueden ser inferiores a los valores determinados por la bolsa.

ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

Se usan para el mercado no bursátil al realizarse el registro independiente de posiciones ("cobertura", en un símbolo pueden existir varias posiciones). El cálculo del margen se realiza basándose en el tipo de instrumento (SYMBOL_TRADE_CALC_MODE) y teniendo en cuenta el tamaño del margen cubierto (SYMBOL_MARGIN_HEDGED)..

Un ejemplo del script que muestra la información breve sobre la cuenta.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- nombre de la empresa
   string company=AccountInfoString(ACCOUNT_COMPANY);
//--- nombre del cliente
   string name=AccountInfoString(ACCOUNT_NAME);
//--- número de la cuenta
   long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- nombre del servidor
   string server=AccountInfoString(ACCOUNT_SERVER);
//--- divisa de la cuenta
   string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- cuenta de demostración, de concurso o real
   ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- ahora transformaremos el valor de la enumeración en una forma comprensible
   string trade_mode;
   switch(account_type)
     {
      case  ACCOUNT_TRADE_MODE_DEMO:
         trade_mode="demo";
         break;
      case  ACCOUNT_TRADE_MODE_CONTEST:
         trade_mode="de concurso";
         break;
      default:
         trade_mode="real";
         break;
     }
//--- Stop Out se establece en por cientos o dinero
   ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- obtenemos valores de niveles cuando ocurren Margin Call y Stop Out
   double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
   double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- visualizaremos la información breve sobre la cuenta
   PrintFormat("La cuenta del cliente '%s' #%d %s está abierta en '%s' en el servidor '%s'",
               name,login,trade_mode,company,server);
   PrintFormat("Moneda de la cuenta - %s, el nivel MarginCall y StopOut se establece en %s",
               currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"en por cientos":" en dinero");
   PrintFormat("Nivel MarginCall=%G, nivel StopOut=%G",margin_call,stop_out);
  }