Propriedades da Conta

Para obter informações sobre a conta atual existem várias funções: AccountInfoInteger(), AccountInfoDouble() e AccountInfoString(). Os valores dos parâmetros destas funções podem aceitar valores das enumerações de ENUM_ACCOUNT_INFO.

Para a função AccountInfoInteger()

ENUM_ACCOUNT_INFO_INTEGER

Identificador

Descrição

Tipo

ACCOUNT_LOGIN

Número da conta

long

ACCOUNT_TRADE_MODE

Modo de negociação da conta

ENUM_ACCOUNT_TRADE_MODE

ACCOUNT_LEVERAGE

Alavancagem da conta

long

ACCOUNT_LIMIT_ORDERS

Número permitido máximo de ordens pendentes ativas

int

ACCOUNT_MARGIN_SO_MODE

Modo para definir a margem permitida mínima

ENUM_ACCOUNT_STOPOUT_MODE

ACCOUNT_TRADE_ALLOWED

Negociação permitida para a conta atual

bool

ACCOUNT_TRADE_EXPERT

Negociação permitida para um Expert Advisor

bool

ACCOUNT_MARGIN_MODE

Modo de cálculo da margem

ENUM_ACCOUNT_MARGIN_MODE

ACCOUNT_CURRENCY_DIGITS  

Número de casas decimais, para a moeda da conta, necessário para exibir com precisão os resultados da negociação

int

ACCOUNT_FIFO_CLOSE

Indica que a posição pode ser fechada apenas pelo princípio FIFO. Se o valor da propriedade for igual a true, será permitido fechar a posição de cada símbolo apenas segundo a ordem em que foram abertas, quer dizer, primeiro, a mais antiga, em seguida, a mais recente e assim por diante. Ao tentar fechar posições em uma ordem diferente, aparecerá um erro.

 

Para contas sem registo de posições usando cobertura (ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), a propriedade sempre será igual a false

bool

ACCOUNT_HEDGE_ALLOWED

Indica que são permitidas posições opostas de um símbolo de cada vez

bool

Para a função AccountInfoDouble()

ENUM_ACCOUNT_INFO_DOUBLE

Identificador

Descrição

Tipo

ACCOUNT_BALANCE

Saldo da conta na moeda de depósito

double

ACCOUNT_CREDIT

Crédito da conta na moeda de depósito

double

ACCOUNT_PROFIT

Lucro atual de uma conta na moeda de depósito

double

ACCOUNT_EQUITY

Saldo a mercado da conta na moeda de depósito

double

ACCOUNT_MARGIN

Margem da conta usada na moeda de depósito

double

ACCOUNT_MARGIN_FREE

Margem livre de uma conta na moeda de depósito

double

ACCOUNT_MARGIN_LEVEL

Nível de margem de conta em percentagem

double

ACCOUNT_MARGIN_SO_CALL

Nível de chamada de margem. Dependendo da definição, ACCOUNT_MARGIN_SO_MODE é expresso em percentagem ou em moeda de depósito

double

ACCOUNT_MARGIN_SO_SO

Nível de margem de Stop Out (encerramento forçado). Dependendo da definição, ACCOUNT_MARGIN_SO_MODE é expresso em percentagem ou em moeda de depósito

double

ACCOUNT_MARGIN_INITIAL

Margem inicial. O montante reservado numa conta para cobrir a margem de todas as ordens pendentes

double

ACCOUNT_MARGIN_MAINTENANCE

Margem de manutenção. O patrimônio líquido mínimo reservado numa conta para cobrir o valor mínimo de todas as posições em aberto

double

ACCOUNT_ASSETS

Os ativos atuais de uma conta

double

ACCOUNT_LIABILITIES

As responsabilidades atuais de uma conta

double

ACCOUNT_COMMISSION_BLOCKED

O valor da comissão bloqueada atual numa conta

double

Para a função AccountInfoString()

ENUM_ACCOUNT_INFO_STRING

Identificador

Descrição

Tipo

ACCOUNT_NAME

Nome do cliente

string

ACCOUNT_SERVER

Nome do servidor de negociação

string

ACCOUNT_CURRENCY

Moeda da conta

string

ACCOUNT_COMPANY

Nome de uma empresa que serve a conta

string

Existem vários tipos de contas que podem ser abertos em um servidor de negociação. O tipo de conta sobre o qual um programa MQL5 está sendo executado pode ser encontrado usando a enumeração ENUM_ACCOUNT_TRADE_MODE.

ENUM_ACCOUNT_TRADE_MODE

Identificador

Descrição

ACCOUNT_TRADE_MODE_DEMO

Conta de Demonstração

ACCOUNT_TRADE_MODE_CONTEST

Conta de torneio

ACCOUNT_TRADE_MODE_REAL

Conta real

No caso do saldo a mercado não ser suficiente para manter posições em aberto ocorre a situação de Stop Out, ou seja o encerramento forçado. O nível de margem mínimo no qual o Stop Out ocorre pode ser definido em percentagem ou em termos monetários. Para descobrir a configuração de modo da conta use a enumeração ENUM_ACCOUNT_STOPOUT_MODE.

ENUM_ACCOUNT_STOPOUT_MODE

Identificador

Descrição

ACCOUNT_STOPOUT_MODE_PERCENT

Modo stop out da conta em percentagem

ACCOUNT_STOPOUT_MODE_MONEY

Modo stop out da conta em dinheiro

ENUM_ACCOUNT_MARGIN_MODE

Identificador

Descrição

ACCOUNT_MARGIN_MODE_RETAIL_NETTING

Usa-se para o mercado de balcão ao registrar as posições no modo "compensação" (segundo um símbolo pode existir apenas uma posição). O cálculo da margem é realizado com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE).

ACCOUNT_MARGIN_MODE_EXCHANGE

Usa-se para o mercado de bolsa. O cálculo da margem é realizado com base nos descontos indicados nas configurações dos instrumentos. Os descontos são estabelecidos pela corretora, no entanto não podem ser inferiores aos valores determinados pela bolsa.

ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

Usa-se para o mercado de balcão ao ser realizado o registro independente de posições ("cobertura", segundo um símbolo, podem existir várias posições). O cálculo da margem realiza-se com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE) e tendo em conta o tamanho da margem de cobertura (SYMBOL_MARGIN_HEDGED).

Os dados do tipo float são exibidos com 5 dígitos após o ponto decimal.

//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Nome da empresa
   string company=AccountInfoString(ACCOUNT_COMPANY);
//--- Nome do cliente
   string name=AccountInfoString(ACCOUNT_NAME);
//--- Número da conta
   long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- Nome do servidor
   string server=AccountInfoString(ACCOUNT_SERVER);
//--- Moeda da conta
   string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- Conta demo, de torneio ou real
   ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- Agora transforma o valor da enumeração em uma forma inteligível
   string trade_mode;
   switch(account_type)
     {
      case  ACCOUNT_TRADE_MODE_DEMO:
         trade_mode="demo";
         break;
      case  ACCOUNT_TRADE_MODE_CONTEST:
         trade_mode="concurso";
         break;
      default:
         trade_mode="real";
         break;
     }
//--- Stop Out é definida em percentagem ou dinheiro
   ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- Obtém os valores dos níveis quando a Chamada de Margem e Stop Out (encerramento forçado) ocorrem
   double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
   double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- Exibe informações resumidas sobre a conta
   PrintFormat("A conta do do cliente '%s' #%d %s aberta em '%s' no servidor '%s'",
               name,login,trade_mode,company,server);
   PrintFormat("Moeda da conta - %s, níveis de MarginCall e StopOut são configurados em %s",
               currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"porcentagem":" dinheiro");
   PrintFormat("MarginCall=%G, StopOut=%G",margin_call,stop_out);
  }