SymbolInfoCommissions

Renvoie les règles de facturation des commissions pour l’instrument financier spécifié.

int  SymbolInfoCommissions(
   string           name,              // nom du symbole
   MqlCommission&   commissions[]      // tableau des règles de commission
   );

Paramètres

name

[in]  Nom du symbole. Si le paramètre vaut NULL, le symbole courant est utilisé.

commissions

[out]  Tableau dynamique de structures MqlCommission, dans lequel sont écrites les règles de facturation des commissions pour le symbole spécifié.

Valeur de retour

En cas de succès, la fonction renvoie le nombre d’éléments écrits dans commissions.

En cas d’erreur, -1 est renvoyé. Pour obtenir des informations sur l’erreur, utilisez GetLastError().

Remarque

Chaque élément du tableau commissions décrit une règle de facturation de commission distincte. Les conditions générales d’application de la commission sont définies par les champs de la structure MqlCommission, tandis que les valeurs et plages spécifiques de commission sont définies dans le tableau tiers.

Si aucune règle de commission n’est spécifiée pour le symbole, la fonction renvoie 0.

Si name spécifie le nom d’un symbole inexistant ou indisponible, la fonction renvoie -1.

Exemple :

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- déclare un tableau dynamique pour recevoir les règles de facturation des commissions
   MqlCommission commissions[];
 
//--- obtient les règles de commission du symbole courant.
//--- si un nom de symbole est spécifié au lieu de NULL, la fonction renvoie les commissions de ce symbole.
   int total=SymbolInfoCommissions(NULL,commissions);
 
//--- vérifie le résultat de l’exécution de la fonction
   if(total<0)
     {
      //--- en cas d’erreur, affiche le code d’erreur
      PrintFormat("SymbolInfoCommissions failed. Error %d",GetLastError());
      return;
     }
 
//--- affiche le nombre de règles de commission reçues
   PrintFormat("Commission rules: %d",total);
 
//--- parcourt toutes les règles de commission
   for(int i=0;i<total;i++)
     {
      //--- affiche les principaux paramètres de la règle de commission :
      //--- devise, mode de sélection de plage et mode de facturation
      PrintFormat("Rule %d: currency=%s, range mode=%d, charge mode=%d",
                  i,
                  commissions[i].currency,
                  commissions[i].mode_range,
                  commissions[i].mode_charge);
 
      //--- obtient le nombre de paliers de commission dans la règle courante
      int tiers_total=ArraySize(commissions[i].tiers);
 
      //--- parcourt les paliers de commission
      for(int j=0;j<tiers_total;j++)
        {
         //--- affiche les paramètres du palier de commission :
         //--- mode de calcul, valeur, plage applicable et devise
         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);
        }
     }
  }

 

Commissions du symbole

Cette section décrit les énumérations et structures utilisées pour représenter les règles de facturation des commissions d’un instrument financier.

La commission peut être spécifiée sous forme de montant, de points, de pourcentage, de pourcentage du profit, et peut aussi être calculée par plages de volume, de chiffre d’affaires, de valeur de transaction ou de profit. Une même règle de commission peut contenir plusieurs paliers, MqlCommissionTier.

ENUM_SYMBOL_COMMISSION_MODE

L’énumération ENUM_SYMBOL_COMMISSION_MODE définit la méthode de calcul de la commission.

Identifiant

Description

SYMBOL_COMMISSION_DISABLED

La commission est désactivée.

SYMBOL_COMMISSION_MONEY_DEPOSIT

La commission est spécifiée dans la devise de dépôt du groupe/compte de trading.

SYMBOL_COMMISSION_MONEY_SYMBOL_BASE

La commission est spécifiée dans la devise de base de l’instrument financier.

SYMBOL_COMMISSION_MONEY_SYMBOL_PROFIT

La commission est spécifiée dans la devise de profit de l’instrument financier.

SYMBOL_COMMISSION_MONEY_SYMBOL_MARGIN

La commission est spécifiée dans la devise de marge de l’instrument financier.

SYMBOL_COMMISSION_PIPS

La commission est spécifiée en points.

SYMBOL_COMMISSION_PERCENT

La commission est spécifiée sous forme de pourcentage.

SYMBOL_COMMISSION_MONEY_SPECIFIED

La commission est spécifiée dans la devise indiquée. La devise est indiquée dans le champ correspondant de la structure de commission ou du palier de commission.

SYMBOL_COMMISSION_PERCENT_PROFIT

La commission est spécifiée sous forme de pourcentage du profit.

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

L’énumération ENUM_SYMBOL_COMMISSION_VOLUME_TYPE définit comment la valeur de la commission est appliquée à une opération de trading.

Identifiant

Description

SYMBOL_COMMISSION_VOLUME_TYPE_TRADE

La commission est facturée par transaction.

SYMBOL_COMMISSION_VOLUME_TYPE_VOLUME

La commission est calculée proportionnellement au volume de la transaction.

SYMBOL_COMMISSION_VOLUME_TYPE_TURNOVER

La commission est calculée selon le chiffre d’affaires.

ENUM_SYMBOL_COMMISSION_RANGE_MODE

L’énumération ENUM_SYMBOL_COMMISSION_RANGE_MODE définit l’indicateur utilisé pour sélectionner la plage de commission.

Identifiant

Description

SYMBOL_COMMISSION_RANGE_VOLUME

La plage est déterminée par le volume de la transaction.

SYMBOL_COMMISSION_RANGE_TURNOVER_MONEY

La plage est déterminée par le chiffre d’affaires monétaire.

SYMBOL_COMMISSION_RANGE_TURNOVER_VOLUME

La plage est déterminée par le volume de rotation.

SYMBOL_COMMISSION_RANGE_VALUE

La plage est déterminée par la valeur de la transaction.

SYMBOL_COMMISSION_RANGE_PROFIT

La plage est déterminée par le profit.

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

L’énumération ENUM_SYMBOL_COMMISSION_CHARGE_MODE définit quand la commission est facturée.

Identifiant

Description

SYMBOL_COMMISSION_CHARGE_DAILY

La commission est facturée à la fin de la journée.

SYMBOL_COMMISSION_CHARGE_MONTHLY

La commission est facturée à la fin du mois.

SYMBOL_COMMISSION_CHARGE_INSTANT

La commission est facturée immédiatement lorsque la transaction est exécutée.

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

L’énumération ENUM_SYMBOL_COMMISSION_ENTRY_MODE définit à quelle étape d’une opération de trading la commission est facturée.

Identifiant

Description

SYMBOL_COMMISSION_ENTRY_INOUT

La commission est facturée lors de l’entrée et de la sortie de position.

SYMBOL_COMMISSION_ENTRY_IN

La commission est facturée lors de l’entrée en position.

SYMBOL_COMMISSION_ENTRY_OUT

La commission est facturée lors de la sortie de position.

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

L’énumération ENUM_SYMBOL_COMMISSION_DIRECTION_MODE définit la direction des transactions auxquelles la commission s’applique.

Identifiant

Description

SYMBOL_COMMISSION_DIRECTION_BOTH

La commission s’applique aux transactions d’achat et de vente.

SYMBOL_COMMISSION_DIRECTION_BUY

La commission s’applique uniquement aux transactions d’achat.

SYMBOL_COMMISSION_DIRECTION_SELL

La commission s’applique uniquement aux transactions de vente.

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

L’énumération ENUM_SYMBOL_COMMISSION_PROFIT_MODE définit si la commission s’applique selon le résultat financier de la transaction.

Identifiant

Description

SYMBOL_COMMISSION_PROFIT_ALL

La commission s’applique à toutes les transactions.

SYMBOL_COMMISSION_PROFIT_PROFIT

La commission s’applique uniquement aux transactions profitables.

SYMBOL_COMMISSION_PROFIT_LOSS

La commission s’applique uniquement aux transactions déficitaires.

 

MqlCommissionTier

La structure MqlCommissionTier décrit un palier de commission.

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;
  };

Description des champs

Champ

Type

Description

mode

ENUM_SYMBOL_COMMISSION_MODE

Méthode de calcul de la commission pour ce palier.

volume_type

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

Méthode d’application de la valeur de commission : par transaction, par volume ou par chiffre d’affaires.

value

double

Valeur de commission. L’interprétation de la valeur dépend du champ mode : montant, nombre de points, pourcentage ou pourcentage du profit.

min_value

double

Valeur minimale de commission pour ce palier.

max_value

double

Valeur maximale de commission pour ce palier.

range_from

double

Limite inférieure de la plage à laquelle ce palier de commission s’applique.

range_to

double

Limite supérieure de la plage à laquelle ce palier de commission s’applique.

currency

string

Devise de la commission. Utilisée pour les modes dans lesquels la commission est spécifiée dans une devise explicitement définie, par exemple SYMBOL_COMMISSION_MONEY_SPECIFIED.

Remarque

La plage du palier de commission est déterminée par range_from et range_to. L’indicateur utilisé pour sélectionner la plage est spécifié dans le champ mode_range de la structure MqlCommission.

Si la commission est désactivée avec SYMBOL_COMMISSION_DISABLED, les autres paramètres du palier ne sont pas utilisés pour la facturation de la commission.

 

MqlCommission

La structure MqlCommission décrit une règle de facturation de commission pour un instrument financier.

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[];
  };

Description des champs

Champ

Type

Description

currency

string

Devise spécifiée pour la règle de commission. Utilisée lors du calcul de la commission dans les modes qui nécessitent une devise explicitement définie.

mode_range

ENUM_SYMBOL_COMMISSION_RANGE_MODE

Indicateur utilisé pour sélectionner la plage de commission : volume, chiffre d’affaires monétaire, rotation en volume, valeur de transaction ou profit.

mode_charge

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

Moment de facturation de la commission : à la fin de la journée, à la fin du mois ou immédiatement lors de l’exécution de la transaction.

mode_entry

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

Étape de l’opération de trading à laquelle la commission est facturée : entrée, sortie, ou entrée et sortie.

mode_direction

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

Direction des transactions auxquelles la commission s’applique : achat, vente ou les deux directions.

mode_profit

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

Condition d’application de la commission selon le résultat financier de la transaction.

tiers

MqlCommissionTier[]

Tableau dynamique de paliers de commission. Chaque élément du tableau décrit une plage distincte et les paramètres de calcul de la commission pour cette plage.

Remarque

La structure MqlCommission définit les conditions générales d’application de la commission, tandis que le tableau tiers contient les paliers de commission avec des valeurs et plages spécifiques.

Lors du calcul de la commission, les conditions générales de la règle sont d’abord vérifiées : direction de la transaction, étape d’entrée ou de sortie, résultat financier, moment de facturation et raison de facturation. Ensuite, selon la valeur mode_range, le palier approprié est sélectionné dans le tableau tiers.

Si le tableau tiers est vide, aucun palier de commission n’est spécifié pour cette règle.

 

Voir aussi

SymbolsTotal, SymbolSelect, SymbolInfoMarginRate