SymbolInfoCommissions

Restituisce le regole di addebito delle commissioni per lo strumento finanziario specificato.

int  SymbolInfoCommissions(
   string           name,              // nome del simbolo
   MqlCommission&   commissions[]      // array di regole di commissione
   );

Parametri

name

[in]  Nome del simbolo. Se il parametro è NULL, viene utilizzato il simbolo corrente.

commissions

[out]  Array dinamico di strutture MqlCommission, nel quale vengono scritte le regole di addebito delle commissioni per il simbolo specificato.

Valore restituito

In caso di esito positivo, la funzione restituisce il numero di elementi scritti in commissions.

In caso di errore viene restituito -1. Per ottenere informazioni sull’errore, utilizzare GetLastError().

Nota

Ogni elemento dell’array commissions descrive una regola separata di addebito della commissione. Le condizioni generali di applicazione della commissione sono definite dai campi della struttura MqlCommission, mentre valori e intervalli specifici sono definiti nell’array tiers.

Se per il simbolo non sono specificate regole di commissione, la funzione restituisce 0.

Se name specifica il nome di un simbolo inesistente o non disponibile, la funzione restituisce -1.

Esempio:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- dichiara un array dinamico per ricevere le regole di addebito delle commissioni
   MqlCommission commissions[];
 
//--- ottiene le regole di commissione per il simbolo corrente.
//--- se invece di NULL viene specificato il nome di un simbolo, la funzione restituisce le commissioni di quel simbolo.
   int total=SymbolInfoCommissions(NULL,commissions);
 
//--- controlla il risultato dell’esecuzione della funzione
   if(total<0)
     {
      //--- in caso di errore, stampa il codice di errore
      PrintFormat("SymbolInfoCommissions failed. Error %d",GetLastError());
      return;
     }
 
//--- stampa il numero di regole di commissione ricevute
   PrintFormat("Commission rules: %d",total);
 
//--- itera su tutte le regole di commissione
   for(int i=0;i<total;i++)
     {
      //--- stampa i parametri principali della regola di commissione:
      //--- valuta, modalità di selezione dell’intervallo e modalità di addebito
      PrintFormat("Rule %d: currency=%s, range mode=%d, charge mode=%d",
                  i,
                  commissions[i].currency,
                  commissions[i].mode_range,
                  commissions[i].mode_charge);
 
      //--- ottiene il numero di livelli di commissione nella regola corrente
      int tiers_total=ArraySize(commissions[i].tiers);
 
      //--- itera sui livelli di commissione
      for(int j=0;j<tiers_total;j++)
        {
         //--- stampa i parametri del livello di commissione:
         //--- modalità di calcolo, valore, intervallo applicabile e valuta
         PrintFormat("  Tier %d: mode=%d, value=%G, range=%G - %G, currency=%s",
                     j,
                     commissions[i].tiers[j].mode,
                     commissions[i].tiers[j].value,
                     commissions[i].tiers[j].range_from,
                     commissions[i].tiers[j].range_to,
                     commissions[i].tiers[j].currency);
        }
     }
  }

 

Commissioni del simbolo

Questa sezione descrive enumerazioni e strutture usate per rappresentare le regole di addebito delle commissioni per uno strumento finanziario.

La commissione può essere specificata come importo monetario, punti, percentuale, percentuale del profitto, e può anche essere calcolata per intervalli di volume, turnover, valore dell’operazione o profitto. Una singola regola di commissione può contenere più livelli, MqlCommissionTier.

ENUM_SYMBOL_COMMISSION_MODE

L’enumerazione ENUM_SYMBOL_COMMISSION_MODE definisce il metodo di calcolo della commissione.

Identificatore

Descrizione

SYMBOL_COMMISSION_DISABLED

La commissione è disabilitata.

SYMBOL_COMMISSION_MONEY_DEPOSIT

La commissione è specificata nella valuta di deposito del gruppo/conto di trading.

SYMBOL_COMMISSION_MONEY_SYMBOL_BASE

La commissione è specificata nella valuta base dello strumento finanziario.

SYMBOL_COMMISSION_MONEY_SYMBOL_PROFIT

La commissione è specificata nella valuta del profitto dello strumento finanziario.

SYMBOL_COMMISSION_MONEY_SYMBOL_MARGIN

La commissione è specificata nella valuta del margine dello strumento finanziario.

SYMBOL_COMMISSION_PIPS

La commissione è specificata in punti.

SYMBOL_COMMISSION_PERCENT

La commissione è specificata come percentuale.

SYMBOL_COMMISSION_MONEY_SPECIFIED

La commissione è specificata nella valuta indicata. La valuta è specificata nel campo corrispondente della struttura di commissione o del livello di commissione.

SYMBOL_COMMISSION_PERCENT_PROFIT

La commissione è specificata come percentuale del profitto.

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

L’enumerazione ENUM_SYMBOL_COMMISSION_VOLUME_TYPE definisce come il valore della commissione viene applicato a un’operazione di trading.

Identificatore

Descrizione

SYMBOL_COMMISSION_VOLUME_TYPE_TRADE

La commissione viene addebitata per operazione.

SYMBOL_COMMISSION_VOLUME_TYPE_VOLUME

La commissione viene calcolata proporzionalmente al volume dell’operazione.

SYMBOL_COMMISSION_VOLUME_TYPE_TURNOVER

La commissione viene calcolata in base al turnover.

ENUM_SYMBOL_COMMISSION_RANGE_MODE

L’enumerazione ENUM_SYMBOL_COMMISSION_RANGE_MODE definisce l’indicatore usato per selezionare l’intervallo di commissione.

Identificatore

Descrizione

SYMBOL_COMMISSION_RANGE_VOLUME

L’intervallo è determinato dal volume dell’operazione.

SYMBOL_COMMISSION_RANGE_TURNOVER_MONEY

L’intervallo è determinato dal turnover monetario.

SYMBOL_COMMISSION_RANGE_TURNOVER_VOLUME

L’intervallo è determinato dal turnover di volume.

SYMBOL_COMMISSION_RANGE_VALUE

L’intervallo è determinato dal valore dell’operazione.

SYMBOL_COMMISSION_RANGE_PROFIT

L’intervallo è determinato dal profitto.

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

L’enumerazione ENUM_SYMBOL_COMMISSION_CHARGE_MODE definisce quando la commissione viene addebitata.

Identificatore

Descrizione

SYMBOL_COMMISSION_CHARGE_DAILY

La commissione viene addebitata alla fine della giornata.

SYMBOL_COMMISSION_CHARGE_MONTHLY

La commissione viene addebitata alla fine del mese.

SYMBOL_COMMISSION_CHARGE_INSTANT

La commissione viene addebitata immediatamente quando l’operazione viene eseguita.

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

L’enumerazione ENUM_SYMBOL_COMMISSION_ENTRY_MODE definisce in quale fase di un’operazione di trading viene addebitata la commissione.

Identificatore

Descrizione

SYMBOL_COMMISSION_ENTRY_INOUT

La commissione viene addebitata all’ingresso e all’uscita da una posizione.

SYMBOL_COMMISSION_ENTRY_IN

La commissione viene addebitata all’ingresso in una posizione.

SYMBOL_COMMISSION_ENTRY_OUT

La commissione viene addebitata all’uscita da una posizione.

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

L’enumerazione ENUM_SYMBOL_COMMISSION_DIRECTION_MODE definisce la direzione delle operazioni a cui si applica la commissione.

Identificatore

Descrizione

SYMBOL_COMMISSION_DIRECTION_BOTH

La commissione si applica alle operazioni di acquisto e vendita.

SYMBOL_COMMISSION_DIRECTION_BUY

La commissione si applica solo alle operazioni di acquisto.

SYMBOL_COMMISSION_DIRECTION_SELL

La commissione si applica solo alle operazioni di vendita.

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

L’enumerazione ENUM_SYMBOL_COMMISSION_PROFIT_MODE definisce se la commissione viene applicata in base al risultato finanziario dell’operazione.

Identificatore

Descrizione

SYMBOL_COMMISSION_PROFIT_ALL

La commissione si applica a tutte le operazioni.

SYMBOL_COMMISSION_PROFIT_PROFIT

La commissione si applica solo alle operazioni in profitto.

SYMBOL_COMMISSION_PROFIT_LOSS

La commissione si applica solo alle operazioni in perdita.

 

MqlCommissionTier

La struttura MqlCommissionTier descrive un livello di commissione.

struct MqlCommissionTier
  {
   ENUM_SYMBOL_COMMISSION_MODE           mode;
   ENUM_SYMBOL_COMMISSION_VOLUME_TYPE    volume_type;
   double                                value;
   double                                min_value;
   double                                max_value;
   double                                range_from;
   double                                range_to;
   string                                currency;
  };

Descrizione dei campi

Campo

Tipo

Descrizione

mode

ENUM_SYMBOL_COMMISSION_MODE

Metodo di calcolo della commissione per questo livello.

volume_type

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

Metodo di applicazione del valore della commissione: per operazione, per volume o per turnover.

value

double

Valore della commissione. L’interpretazione del valore dipende dal campo mode: importo monetario, numero di punti, percentuale o percentuale del profitto.

min_value

double

Valore minimo della commissione per questo livello.

max_value

double

Valore massimo della commissione per questo livello.

range_from

double

Limite inferiore dell’intervallo a cui si applica questo livello di commissione.

range_to

double

Limite superiore dell’intervallo a cui si applica questo livello di commissione.

currency

string

Valuta della commissione. Usata per le modalità in cui la commissione è specificata in una valuta impostata esplicitamente, ad esempio SYMBOL_COMMISSION_MONEY_SPECIFIED.

Nota

L’intervallo del livello di commissione è determinato da range_from e range_to. L’indicatore usato per selezionare l’intervallo è specificato nel campo mode_range della struttura MqlCommission.

Se la commissione è disabilitata tramite SYMBOL_COMMISSION_DISABLED, gli altri parametri del livello non vengono usati per l’addebito della commissione.

 

MqlCommission

La struttura MqlCommission descrive una regola di addebito della commissione per uno strumento finanziario.

struct MqlCommission
  {
   string                                   currency;
   ENUM_SYMBOL_COMMISSION_RANGE_MODE        mode_range;
   ENUM_SYMBOL_COMMISSION_CHARGE_MODE       mode_charge;
   ENUM_SYMBOL_COMMISSION_ENTRY_MODE        mode_entry;
   ENUM_SYMBOL_COMMISSION_DIRECTION_MODE    mode_direction;
   ENUM_SYMBOL_COMMISSION_PROFIT_MODE       mode_profit;
   MqlCommissionTier                        tiers[];
  };

Descrizione dei campi

Campo

Tipo

Descrizione

currency

string

Valuta specificata per la regola di commissione. Usata nel calcolo della commissione nelle modalità che richiedono una valuta impostata esplicitamente.

mode_range

ENUM_SYMBOL_COMMISSION_RANGE_MODE

Indicatore usato per selezionare l’intervallo di commissione: volume, turnover monetario, turnover di volume, valore dell’operazione o profitto.

mode_charge

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

Momento di addebito della commissione: alla fine della giornata, alla fine del mese o immediatamente quando l’operazione viene eseguita.

mode_entry

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

Fase dell’operazione di trading in cui viene addebitata la commissione: ingresso, uscita oppure ingresso e uscita.

mode_direction

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

Direzione delle operazioni a cui si applica la commissione: acquisto, vendita o entrambe.

mode_profit

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

Condizione per l’applicazione della commissione in base al risultato finanziario dell’operazione.

tiers

MqlCommissionTier[]

Array dinamico di livelli di commissione. Ogni elemento dell’array descrive un intervallo separato e i parametri di calcolo della commissione per tale intervallo.

Nota

La struttura MqlCommission imposta le condizioni generali di applicazione della commissione, mentre l’array tiers contiene livelli di commissione con valori e intervalli specifici.

Durante il calcolo della commissione vengono prima verificate le condizioni generali della regola: direzione dell’operazione, fase di ingresso o uscita, risultato finanziario, momento e motivo dell’addebito. Quindi, in base al valore mode_range, viene selezionato il livello appropriato dall’array tiers.

Se l’array tiers è vuoto, per questa regola non sono specificati livelli di commissione.

 

Vedi anche

SymbolsTotal, SymbolSelect, SymbolInfoMarginRate