SymbolInfoCommissions

Retorna as regras de cobrança de comissão para o instrumento financeiro especificado.

int  SymbolInfoCommissions(
   string           name,              // nome do símbolo
   MqlCommission&   commissions[]      // array de regras de comissão
   );

Parâmetros

name

[in]  Nome do símbolo. Se o parâmetro for NULL, o símbolo atual é usado.

commissions

[out]  Array dinâmico de estruturas MqlCommission, no qual são gravadas as regras de cobrança de comissão para o símbolo especificado.

Valor de retorno

Em caso de sucesso, a função retorna o número de elementos gravados em commissions.

Em caso de erro, retorna -1. Para obter informações sobre o erro, use GetLastError().

Observação

Cada elemento do array commissions descreve uma regra de cobrança de comissão separada. As condições gerais de aplicação da comissão são definidas pelos campos da estrutura MqlCommission, enquanto valores e faixas específicos da comissão são definidos no array tiers.

Se nenhuma regra de comissão for especificada para o símbolo, a função retorna 0.

Se name especificar o nome de um símbolo inexistente ou indisponível, a função retorna -1.

Exemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declara um array dinâmico para receber as regras de cobrança de comissão
   MqlCommission commissions[];
 
//--- obtém as regras de comissão do símbolo atual.
//--- se um nome de símbolo for especificado em vez de NULL, a função retorna as comissões desse símbolo.
   int total=SymbolInfoCommissions(NULL,commissions);
 
//--- verifica o resultado da execução da função
   if(total<0)
     {
      //--- em caso de erro, imprime o código do erro
      PrintFormat("SymbolInfoCommissions failed. Error %d",GetLastError());
      return;
     }
 
//--- imprime o número de regras de comissão recebidas
   PrintFormat("Commission rules: %d",total);
 
//--- percorre todas as regras de comissão
   for(int i=0;i<total;i++)
     {
      //--- imprime os principais parâmetros da regra de comissão:
      //--- moeda, modo de seleção de faixa e modo de cobrança
      PrintFormat("Rule %d: currency=%s, range mode=%d, charge mode=%d",
                  i,
                  commissions[i].currency,
                  commissions[i].mode_range,
                  commissions[i].mode_charge);
 
      //--- obtém o número de níveis de comissão na regra atual
      int tiers_total=ArraySize(commissions[i].tiers);
 
      //--- percorre os níveis de comissão
      for(int j=0;j<tiers_total;j++)
        {
         //--- imprime os parâmetros do nível de comissão:
         //--- modo de cálculo, valor, faixa aplicável e moeda
         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);
        }
     }
  }

 

Comissões do Símbolo

Esta seção descreve enumerações e estruturas usadas para representar regras de cobrança de comissão para um instrumento financeiro.

A comissão pode ser especificada como valor monetário, pontos, porcentagem, porcentagem do lucro, e também pode ser calculada por faixas de volume, giro, valor da negociação ou lucro. Uma única regra de comissão pode conter vários níveis, MqlCommissionTier.

ENUM_SYMBOL_COMMISSION_MODE

A enumeração ENUM_SYMBOL_COMMISSION_MODE define o método de cálculo da comissão.

Identificador

Descrição

SYMBOL_COMMISSION_DISABLED

A comissão está desativada.

SYMBOL_COMMISSION_MONEY_DEPOSIT

A comissão é especificada na moeda de depósito do grupo/conta de negociação.

SYMBOL_COMMISSION_MONEY_SYMBOL_BASE

A comissão é especificada na moeda base do instrumento financeiro.

SYMBOL_COMMISSION_MONEY_SYMBOL_PROFIT

A comissão é especificada na moeda de lucro do instrumento financeiro.

SYMBOL_COMMISSION_MONEY_SYMBOL_MARGIN

A comissão é especificada na moeda de margem do instrumento financeiro.

SYMBOL_COMMISSION_PIPS

A comissão é especificada em pontos.

SYMBOL_COMMISSION_PERCENT

A comissão é especificada como porcentagem.

SYMBOL_COMMISSION_MONEY_SPECIFIED

A comissão é especificada na moeda indicada. A moeda é definida no campo correspondente da estrutura de comissão ou do nível de comissão.

SYMBOL_COMMISSION_PERCENT_PROFIT

A comissão é especificada como porcentagem do lucro.

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

A enumeração ENUM_SYMBOL_COMMISSION_VOLUME_TYPE define como o valor da comissão é aplicado a uma operação de negociação.

Identificador

Descrição

SYMBOL_COMMISSION_VOLUME_TYPE_TRADE

A comissão é cobrada por negociação.

SYMBOL_COMMISSION_VOLUME_TYPE_VOLUME

A comissão é calculada proporcionalmente ao volume da negociação.

SYMBOL_COMMISSION_VOLUME_TYPE_TURNOVER

A comissão é calculada pelo giro.

ENUM_SYMBOL_COMMISSION_RANGE_MODE

A enumeração ENUM_SYMBOL_COMMISSION_RANGE_MODE define o indicador usado para selecionar a faixa de comissão.

Identificador

Descrição

SYMBOL_COMMISSION_RANGE_VOLUME

A faixa é determinada pelo volume da negociação.

SYMBOL_COMMISSION_RANGE_TURNOVER_MONEY

A faixa é determinada pelo giro em dinheiro.

SYMBOL_COMMISSION_RANGE_TURNOVER_VOLUME

A faixa é determinada pelo giro de volume.

SYMBOL_COMMISSION_RANGE_VALUE

A faixa é determinada pelo valor da negociação.

SYMBOL_COMMISSION_RANGE_PROFIT

A faixa é determinada pelo lucro.

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

A enumeração ENUM_SYMBOL_COMMISSION_CHARGE_MODE define quando a comissão é cobrada.

Identificador

Descrição

SYMBOL_COMMISSION_CHARGE_DAILY

A comissão é cobrada no final do dia.

SYMBOL_COMMISSION_CHARGE_MONTHLY

A comissão é cobrada no final do mês.

SYMBOL_COMMISSION_CHARGE_INSTANT

A comissão é cobrada imediatamente quando a negociação é executada.

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

A enumeração ENUM_SYMBOL_COMMISSION_ENTRY_MODE define em qual etapa da operação de negociação a comissão é cobrada.

Identificador

Descrição

SYMBOL_COMMISSION_ENTRY_INOUT

A comissão é cobrada ao entrar e sair de uma posição.

SYMBOL_COMMISSION_ENTRY_IN

A comissão é cobrada ao entrar em uma posição.

SYMBOL_COMMISSION_ENTRY_OUT

A comissão é cobrada ao sair de uma posição.

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

A enumeração ENUM_SYMBOL_COMMISSION_DIRECTION_MODE define a direção das negociações às quais a comissão se aplica.

Identificador

Descrição

SYMBOL_COMMISSION_DIRECTION_BOTH

A comissão aplica-se a negociações de compra e venda.

SYMBOL_COMMISSION_DIRECTION_BUY

A comissão aplica-se apenas a negociações de compra.

SYMBOL_COMMISSION_DIRECTION_SELL

A comissão aplica-se apenas a negociações de venda.

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

A enumeração ENUM_SYMBOL_COMMISSION_PROFIT_MODE define se a comissão é aplicada dependendo do resultado financeiro da negociação.

Identificador

Descrição

SYMBOL_COMMISSION_PROFIT_ALL

A comissão aplica-se a todas as negociações.

SYMBOL_COMMISSION_PROFIT_PROFIT

A comissão aplica-se apenas a negociações lucrativas.

SYMBOL_COMMISSION_PROFIT_LOSS

A comissão aplica-se apenas a negociações com prejuízo.

 

MqlCommissionTier

A estrutura MqlCommissionTier descreve um nível de comissão.

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

Descrição dos campos

Campo

Tipo

Descrição

mode

ENUM_SYMBOL_COMMISSION_MODE

Método de cálculo da comissão para este nível.

volume_type

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

Método de aplicação do valor da comissão: por negociação, por volume ou por giro.

value

double

Valor da comissão. A interpretação do valor depende do campo mode: valor monetário, número de pontos, porcentagem ou porcentagem do lucro.

min_value

double

Valor mínimo da comissão para este nível.

max_value

double

Valor máximo da comissão para este nível.

range_from

double

Limite inferior da faixa à qual este nível de comissão se aplica.

range_to

double

Limite superior da faixa à qual este nível de comissão se aplica.

currency

string

Moeda da comissão. Usada nos modos em que a comissão é especificada em uma moeda definida explicitamente, por exemplo SYMBOL_COMMISSION_MONEY_SPECIFIED.

Observação

A faixa do nível de comissão é determinada por range_from e range_to. O indicador usado para selecionar a faixa é especificado no campo mode_range da estrutura MqlCommission.

Se a comissão estiver desativada usando SYMBOL_COMMISSION_DISABLED, os demais parâmetros do nível não são usados para a cobrança de comissão.

 

MqlCommission

A estrutura MqlCommission descreve uma regra de cobrança de comissão para um instrumento financeiro.

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

Descrição dos campos

Campo

Tipo

Descrição

currency

string

Moeda especificada para a regra de comissão. Usada ao calcular comissão em modos que exigem uma moeda definida explicitamente.

mode_range

ENUM_SYMBOL_COMMISSION_RANGE_MODE

Indicador usado para selecionar a faixa de comissão: volume, giro monetário, giro de volume, valor da negociação ou lucro.

mode_charge

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

Momento de cobrança da comissão: no final do dia, no final do mês ou imediatamente quando a negociação é executada.

mode_entry

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

Etapa da operação de negociação em que a comissão é cobrada: entrada, saída ou entrada e saída.

mode_direction

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

Direção das negociações às quais a comissão se aplica: compra, venda ou ambas as direções.

mode_profit

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

Condição de aplicação da comissão dependendo do resultado financeiro da negociação.

tiers

MqlCommissionTier[]

Array dinâmico de níveis de comissão. Cada elemento do array descreve uma faixa separada e os parâmetros de cálculo da comissão para essa faixa.

Observação

A estrutura MqlCommission define as condições gerais de aplicação da comissão, enquanto o array tiers contém níveis de comissão com valores e faixas específicos.

Ao calcular a comissão, primeiro são verificadas as condições gerais da regra: direção da negociação, etapa de entrada ou saída, resultado financeiro, momento de cobrança e motivo da cobrança. Em seguida, com base no valor de mode_range, o nível apropriado é selecionado no array tiers.

Se o array tiers estiver vazio, nenhum nível de comissão estará especificado para esta regra.

 

Veja também

SymbolsTotal, SymbolSelect, SymbolInfoMarginRate