SymbolInfoCommissions

Devuelve las reglas de cobro de comisión para el instrumento financiero especificado.

int  SymbolInfoCommissions(
   string           name,              // nombre del símbolo
   MqlCommission&   commissions[]      // array de reglas de comisión
   );

Parámetros

name

[in]  Nombre del símbolo. Si el parámetro es NULL, se usa el símbolo actual.

commissions

[out]  Array dinámico de estructuras MqlCommission, en el que se escriben las reglas de cobro de comisión para el símbolo especificado.

Valor devuelto

Si se ejecuta correctamente, la función devuelve el número de elementos escritos en commissions.

En caso de error, se devuelve -1. Para obtener información sobre el error, use GetLastError().

Nota

Cada elemento del array commissions describe una regla de cobro de comisión independiente. Las condiciones generales de aplicación de la comisión se establecen mediante los campos de la estructura MqlCommission, mientras que los valores y rangos concretos se definen en el array tiers.

Si no se han especificado reglas de comisión para el símbolo, la función devuelve 0.

Si name especifica el nombre de un símbolo inexistente o no disponible, la función devuelve -1.

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declara un array dinámico para recibir las reglas de cobro de comisión
   MqlCommission commissions[];
 
//--- obtiene las reglas de comisión del símbolo actual.
//--- si se especifica un nombre de símbolo en lugar de NULL, la función devuelve las comisiones de ese símbolo.
   int total=SymbolInfoCommissions(NULL,commissions);
 
//--- comprueba el resultado de ejecución de la función
   if(total<0)
     {
      //--- en caso de error, imprime el código de error
      PrintFormat("SymbolInfoCommissions failed. Error %d",GetLastError());
      return;
     }
 
//--- imprime el número de reglas de comisión recibidas
   PrintFormat("Commission rules: %d",total);
 
//--- recorre todas las reglas de comisión
   for(int i=0;i<total;i++)
     {
      //--- imprime los parámetros principales de la regla de comisión:
      //--- moneda, modo de selección de rango y modo de cobro
      PrintFormat("Rule %d: currency=%s, range mode=%d, charge mode=%d",
                  i,
                  commissions[i].currency,
                  commissions[i].mode_range,
                  commissions[i].mode_charge);
 
      //--- obtiene el número de niveles de comisión en la regla actual
      int tiers_total=ArraySize(commissions[i].tiers);
 
      //--- recorre los niveles de comisión
      for(int j=0;j<tiers_total;j++)
        {
         //--- imprime los parámetros del nivel de comisión:
         //--- modo de cálculo, valor, rango aplicable y moneda
         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);
        }
     }
  }

 

Comisiones del símbolo

Esta sección describe las enumeraciones y estructuras usadas para representar las reglas de cobro de comisión de un instrumento financiero.

La comisión puede especificarse como importe monetario, puntos, porcentaje, porcentaje del beneficio, y también puede calcularse por rangos de volumen, rotación, valor de la operación o beneficio. Una regla de comisión puede contener varios niveles, MqlCommissionTier.

ENUM_SYMBOL_COMMISSION_MODE

La enumeración ENUM_SYMBOL_COMMISSION_MODE define el método de cálculo de la comisión.

Identificador

Descripción

SYMBOL_COMMISSION_DISABLED

La comisión está desactivada.

SYMBOL_COMMISSION_MONEY_DEPOSIT

La comisión se especifica en la moneda de depósito del grupo/cuenta de trading.

SYMBOL_COMMISSION_MONEY_SYMBOL_BASE

La comisión se especifica en la moneda base del instrumento financiero.

SYMBOL_COMMISSION_MONEY_SYMBOL_PROFIT

La comisión se especifica en la moneda de beneficio del instrumento financiero.

SYMBOL_COMMISSION_MONEY_SYMBOL_MARGIN

La comisión se especifica en la moneda de margen del instrumento financiero.

SYMBOL_COMMISSION_PIPS

La comisión se especifica en puntos.

SYMBOL_COMMISSION_PERCENT

La comisión se especifica como porcentaje.

SYMBOL_COMMISSION_MONEY_SPECIFIED

La comisión se especifica en la moneda indicada. La moneda se especifica en el campo correspondiente de la estructura de comisión o del nivel de comisión.

SYMBOL_COMMISSION_PERCENT_PROFIT

La comisión se especifica como porcentaje del beneficio.

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

La enumeración ENUM_SYMBOL_COMMISSION_VOLUME_TYPE define cómo se aplica el valor de comisión a una operación de trading.

Identificador

Descripción

SYMBOL_COMMISSION_VOLUME_TYPE_TRADE

La comisión se cobra por operación.

SYMBOL_COMMISSION_VOLUME_TYPE_VOLUME

La comisión se calcula proporcionalmente al volumen de la operación.

SYMBOL_COMMISSION_VOLUME_TYPE_TURNOVER

La comisión se calcula por rotación.

ENUM_SYMBOL_COMMISSION_RANGE_MODE

La enumeración ENUM_SYMBOL_COMMISSION_RANGE_MODE define el indicador usado para seleccionar el rango de comisión.

Identificador

Descripción

SYMBOL_COMMISSION_RANGE_VOLUME

El rango se determina por el volumen de la operación.

SYMBOL_COMMISSION_RANGE_TURNOVER_MONEY

El rango se determina por la rotación monetaria.

SYMBOL_COMMISSION_RANGE_TURNOVER_VOLUME

El rango se determina por la rotación de volumen.

SYMBOL_COMMISSION_RANGE_VALUE

El rango se determina por el valor de la operación.

SYMBOL_COMMISSION_RANGE_PROFIT

El rango se determina por el beneficio.

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

La enumeración ENUM_SYMBOL_COMMISSION_CHARGE_MODE define cuándo se cobra la comisión.

Identificador

Descripción

SYMBOL_COMMISSION_CHARGE_DAILY

La comisión se cobra al final del día.

SYMBOL_COMMISSION_CHARGE_MONTHLY

La comisión se cobra al final del mes.

SYMBOL_COMMISSION_CHARGE_INSTANT

La comisión se cobra inmediatamente cuando se ejecuta la operación.

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

La enumeración ENUM_SYMBOL_COMMISSION_ENTRY_MODE define en qué etapa de una operación de trading se cobra la comisión.

Identificador

Descripción

SYMBOL_COMMISSION_ENTRY_INOUT

La comisión se cobra al entrar y salir de una posición.

SYMBOL_COMMISSION_ENTRY_IN

La comisión se cobra al entrar en una posición.

SYMBOL_COMMISSION_ENTRY_OUT

La comisión se cobra al salir de una posición.

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

La enumeración ENUM_SYMBOL_COMMISSION_DIRECTION_MODE define la dirección de las operaciones a las que se aplica la comisión.

Identificador

Descripción

SYMBOL_COMMISSION_DIRECTION_BOTH

La comisión se aplica a operaciones de compra y venta.

SYMBOL_COMMISSION_DIRECTION_BUY

La comisión se aplica solo a operaciones de compra.

SYMBOL_COMMISSION_DIRECTION_SELL

La comisión se aplica solo a operaciones de venta.

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

La enumeración ENUM_SYMBOL_COMMISSION_PROFIT_MODE define si la comisión se aplica según el resultado financiero de la operación.

Identificador

Descripción

SYMBOL_COMMISSION_PROFIT_ALL

La comisión se aplica a todas las operaciones.

SYMBOL_COMMISSION_PROFIT_PROFIT

La comisión se aplica solo a operaciones con beneficio.

SYMBOL_COMMISSION_PROFIT_LOSS

La comisión se aplica solo a operaciones con pérdida.

 

MqlCommissionTier

La estructura MqlCommissionTier describe un nivel de comisión.

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

Descripción de campos

Campo

Tipo

Descripción

mode

ENUM_SYMBOL_COMMISSION_MODE

Método de cálculo de la comisión para este nivel.

volume_type

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

Método para aplicar el valor de comisión: por operación, por volumen o por rotación.

value

double

Valor de la comisión. La interpretación del valor depende del campo mode: importe monetario, número de puntos, porcentaje o porcentaje del beneficio.

min_value

double

Valor mínimo de comisión para este nivel.

max_value

double

Valor máximo de comisión para este nivel.

range_from

double

Límite inferior del rango al que se aplica este nivel de comisión.

range_to

double

Límite superior del rango al que se aplica este nivel de comisión.

currency

string

Moneda de la comisión. Se usa en modos en los que la comisión se especifica en una moneda establecida explícitamente, por ejemplo SYMBOL_COMMISSION_MONEY_SPECIFIED.

Nota

El rango del nivel de comisión se determina mediante range_from y range_to. El indicador usado para seleccionar el rango se especifica en el campo mode_range de la estructura MqlCommission.

Si la comisión está desactivada usando SYMBOL_COMMISSION_DISABLED, los demás parámetros del nivel no se usan para el cobro de la comisión.

 

MqlCommission

La estructura MqlCommission describe una regla de cobro de comisión para un instrumento financiero.

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

Descripción de campos

Campo

Tipo

Descripción

currency

string

Moneda especificada para la regla de comisión. Se usa al calcular la comisión en modos que requieren una moneda establecida explícitamente.

mode_range

ENUM_SYMBOL_COMMISSION_RANGE_MODE

Indicador usado para seleccionar el rango de comisión: volumen, rotación monetaria, rotación de volumen, valor de la operación o beneficio.

mode_charge

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

Momento de cobro de la comisión: al final del día, al final del mes o inmediatamente cuando se ejecuta la operación.

mode_entry

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

Etapa de la operación de trading en la que se cobra la comisión: entrada, salida, o entrada y salida.

mode_direction

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

Dirección de las operaciones a las que se aplica la comisión: compra, venta o ambas direcciones.

mode_profit

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

Condición para aplicar la comisión según el resultado financiero de la operación.

tiers

MqlCommissionTier[]

Array dinámico de niveles de comisión. Cada elemento del array describe un rango independiente y los parámetros de cálculo de comisión para ese rango.

Nota

La estructura MqlCommission establece las condiciones generales de aplicación de la comisión, mientras que el array tiers contiene niveles de comisión con valores y rangos concretos.

Al calcular la comisión, primero se comprueban las condiciones generales de la regla: dirección de la operación, etapa de entrada o salida, resultado financiero, momento de cobro y motivo de cobro. A continuación, según el valor de mode_range, se selecciona el nivel adecuado del array tiers.

Si el array tiers está vacío, no se han especificado niveles de comisión para esta regla.

 

Véase también

SymbolsTotal, SymbolSelect, SymbolInfoMarginRate