Proprietà Account

Per ottenere informazioni sul corrente account ci sono diverse funzioni: AccountInfoInteger(), AccountInfoDouble() e AccountInfoString(). I valori dei parametri delle funzioni possono accettare i valori delle corrispondenti enumerazioni ENUM_ACCOUNT_INFO.

Per la funzione AccountInfoInteger()

ENUM_ACCOUNT_INFO_INTEGER

Identificatore

Descrizione

Tipo

ACCOUNT_LOGIN

Numero di account

long

ACCOUNT_TRADE_MODE

Modalità trade dell' Account

ENUM_ACCOUNT_TRADE_MODE

ACCOUNT_LEVERAGE

Leva dell'account

long

ACCOUNT_LIMIT_ORDERS

Numero massimo consentito di ordini pendenti attivi

int

ACCOUNT_MARGIN_SO_MODE

Modalità per l'impostazione del margine minimo consentito

ENUM_ACCOUNT_STOPOUT_MODE

ACCOUNT_TRADE_ALLOWED

Trade consentito per il corrente account

bool

ACCOUNT_TRADE_EXPERT

Trade consentito per un Expert Advisor

bool

ACCOUNT_MARGIN_MODE

Modalità di calcolo del margine

ENUM_ACCOUNT_MARGIN_MODE

ACCOUNT_CURRENCY_DIGITS

Il numero di posizioni decimali in valuta dell'account che sono necessarie per una visualizzazione accurata dei risultati di trading

int

ACCOUNT_FIFO_CLOSE

Un'indicazione che mostra che le posizioni possono essere chiuse solo dalla regola FIFO. Se il valore della proprietà è impostato su true, allora le posizioni di ciascun simbolo verranno chiuse nello stesso ordine in cui vengono aperte, a partire da quella più vecchia. Nel caso di un tentativo di chiudere posizioni in un ordine diverso, il trader riceverà un errore appropriato.

 

Per gli account con la modalità di contabilizzazione della posizione senza copertura (ACCOUNT_MARGIN_MODE! =ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), il valore della proprietà è sempre false.

bool

Per la funzione AccountInfoDouble()

ENUM_ACCOUNT_INFO_DOUBLE

Identificatore

Descrizione

Tipo

ACCOUNT_BALANCE

Bilancio dell'account in valuta di deposito

double

ACCOUNT_CREDIT

Credito dell'account nella valuta di deposito

double

ACCOUNT_PROFIT

Profitto attuale dell'account in valuta di deposito

double

ACCOUNT_EQUITY

Equità nella valuta di deposito

double

ACCOUNT_MARGIN

Margine utilizzzato dell'account nella valuta di deposito

double

ACCOUNT_MARGIN_FREE

Margine libero dell'account nella valuta di deposito

double

ACCOUNT_MARGIN_LEVEL

Livello di margine dell'account in percentuale

double

ACCOUNT_MARGIN_SO_CALL

Livello di margin call. A seconda dell'impostazione ACCOUNT_MARGIN_SO_MODE è espressa in percentuale o in valuta di deposito

double

ACCOUNT_MARGIN_SO_SO

Livello di stop out del margine. A seconda dell'impostazione ACCOUNT_MARGIN_SO_MODE è espressa in percentuale o in valuta di deposito

double

ACCOUNT_MARGIN_INITIAL

Initial margin. L'importo riservato su un account per coprire il margine di tutti gli ordini in sospeso

double

ACCOUNT_MARGIN_MAINTENANCE

Margine di mantenimento Il capitale minimo riservato su un account per coprire l'importo minimo di tutte le posizioni aperte

double

ACCOUNT_ASSETS

Le correnti attività(assets) di un account

double

ACCOUNT_LIABILITIES

Le correnti passività(liabilities) di un account

double

ACCOUNT_COMMISSION_BLOCKED

L'importo attuale della commissione bloccata di un account

double

Per la funzione AccountInfoString()

ENUM_ACCOUNT_INFO_STRING

Identificatore

Descrizione

Tipo

ACCOUNT_NAME

Nome del cliente

string

ACCOUNT_SERVER

Nome del trade server

string

ACCOUNT_CURRENCY

Valuta dell'account

string

ACCOUNT_COMPANY

Nome della società che fornisce l'account

string

Ci sono diversi tipi di account che possono essere aperti su un trade server. Il tipo di account in cui un programma mql5 è in esecuzione può essere scoperto mediante l'enumerazione ENUM_ACCOUNT_TRADE_MODE.

ENUM_ACCOUNT_TRADE_MODE

Identificatore

Descrizione

ACCOUNT_TRADE_MODE_DEMO

Account demo

ACCOUNT_TRADE_MODE_CONTEST

Account contest

ACCOUNT_TRADE_MODE_REAL

Account reale

Nel caso in cui l'equità non è sufficiente a mantenere le posizioni aperte, avviene la situazione di Stop Out, vale a dire che si verifica la chiusura forzata. Il livello di margine minimo al quale si verifica lo Stop Out può essere impostato in percentuale o in termini monetari. Per individuare la modalità impostata per l'account utilizzare l'enumerazione ENUM_ACCOUNT_STOPOUT_MODE.

ENUM_ACCOUNT_STOPOUT_MODE

Identificatore

Descrizione

ACCOUNT_STOPOUT_MODE_PERCENT

Modalità di stop out dell' account in termini percentuali

ACCOUNT_STOPOUT_MODE_MONEY

Modalità di stop out dell'account in termini monetari

ENUM_ACCOUNT_MARGIN_MODE

Identifier

Description

ACCOUNT_MARGIN_MODE_RETAIL_NETTING

Utilizzato per i mercati OTC per interpretare le posizioni nella modalità "netting" (può esistere una sola posizione per un simbolo). Il margine viene calcolato in base al tipo di simbolo (SYMBOL_TRADE_CALC_MODE).

ACCOUNT_MARGIN_MODE_EXCHANGE

Utilizzato per i mercati valutari. Il margine viene calcolato in base agli sconti specificati nelle impostazioni dei simboli. Gli sconti sono stabiliti dal broker, ma non meno dei valori impostati dall'exchange.

ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

Utilizzato per i mercati valutari in cui sono possibili posizioni individuali (hedging, possono esistere più posizioni per un simbolo). Il margine viene calcolato in base al tipo di simbolo (SYMBOL_TRADE_CALC_MODE) tenendo conto del margine coperto (SYMBOL_MARGIN_HEDGED).

Un esempio di script che emette in output brevi informazioni sull'account.

//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//--- Nome della società
   string company=AccountInfoString(ACCOUNT_COMPANY);
//--- Nome del cliente
   string name=AccountInfoString(ACCOUNT_NAME);
//--- Numero dell'account
   long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- Nome del server
   string server=AccountInfoString(ACCOUNT_SERVER);
//--- Valuta dell' account
   string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- Account demo, contest o reale
   ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- Ora trasformiamo il valore dell'enumerazione in una forma comprensibile
   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;
     }
//--- Lo Stop Out è impostato in percentuale o in denaro
   ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- Ottiene il valore dei livelli quando si verificano il Margin Call e lo Stop Out
   double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
   double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- Mostra brevi informazioni sull'account
   PrintFormat("L'account del cliente '%s' #%d %s aperto '%s' sul server '%s'",
              nome,login, trade_mode,società,server);
   PrintFormat("Valuta dell'account - %s, i livelli di MarginCall e StopOut sono impostati in %s",
               currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"percentage":" money");
   PrintFormat("MarginCall=%G, StopOut=%G",margin_call,stop_out);
  }