SymbolInfoMarginRate

Retorna os coeficientes de cobrança de margem, dependendo do tipo e direção da ordem.

bool  SymbolInfoMarginRate(
   string             name,                     // símbolo
   ENUM_ORDER_TYPE    order_type,               // tipo de ordem
   double&            initial_margin_rate,      // coeficiente de cobrança de margem inicial
   double&            maintenance_margin_rate   // coeficiente de cobrança de margem de manutenção
   );

parâmetros

name

[in]  Nome do símbolo.

order_type

[in]  Tipo de ordem.

initial_margin_rate

[in] Variável do tipo double para receber o coeficiente de cobrança de margem inicial. A margem inicial é o valor da garantia para realizar a operação de 1 lote na direção correspondente. Ao multiplicar o coeficiente pela margem inicial, podemos obter o valor dos fundos que serão reservados na conta ao colocar a ordem do tipo especificado.

maintenance_margin_rate

[out] A variável do tipo double para receber o coeficiente de cobrança de margem de manutenção. A margem de manutenção é o valor mínimo necessário para manter a posição aberta de 1 lote na direção correspondente. Ao multiplicar o coeficiente pela margem de manutenção, podemos obter o valor dos fundos que serão reservados na conta após a execução da ordem do tipo especificado.

valor de retorno

Retorna true em caso de execução bem-sucedida da solicitação das propriedades, caso contrário, false.

Exemplo:

#define SYMBOL_NAME Symbol()
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declaramos as variáveis que receberão os coeficientes
   double initial_margin_rate = 0;     // coeficiente de cobrança de margem inicial
   double maintenance_margin_rate = 0; // coeficiente de cobrança de margem de manutenção
   
//--- obtemos e exibiremos no log os coeficientes para o símbolo SYMBOL_NAME para a ordem a mercado Buy
   SymbolInfoMarginRatePrint(SYMBOL_NAME, ORDER_TYPE_BUY, initial_margin_rate, maintenance_margin_rate);
   
//--- obtemos e exibiremos no log os coeficientes para o símbolo SYMBOL_NAME para a ordem a mercado Sell
   SymbolInfoMarginRatePrint(SYMBOL_NAME, ORDER_TYPE_SELL, initial_margin_rate, maintenance_margin_rate);
 
   /*
   resultado:
   Initial margin rate for symbol AFKS for the Buy market order: 0.225600
   Maintenance margin rate for symbol AFKS for the Buy market order: 0.112800
   Initial margin rate for symbol AFKS for the Sell market order: 0.254400
   Maintenance margin rate for symbol AFKS for the Sell market order: 0.127200   
   */
  }
//+------------------------------------------------------------------+
//| Imprime no log os coeficientes de cobrança de margem |
//+------------------------------------------------------------------+
void SymbolInfoMarginRatePrint(const string symbol, const ENUM_ORDER_TYPE order_type, double &initial_margin_rate, double &maintenance_margin_rate)
  {
//--- obtemos os coeficientes para o símbolo symbol para a ordem a mercado order_type
   ResetLastError();
   if(!SymbolInfoMarginRate(symbol, order_type, initial_margin_rate, maintenance_margin_rate))
     {
      Print("SymbolInfoMarginRate() failed. Error ", GetLastError());
      return;
     }
//--- imprimimos os valores obtidos dos coeficientes
   string type=(order_type==ORDER_TYPE_BUY ? "Buy" : order_type==ORDER_TYPE_SELL ? "Sell" : "Unknown");
   PrintFormat("Initial margin rate for symbol %s for the %s market order: %f\n"+
               "Maintenance margin rate for symbol %s for the %s market order: %f",
               SYMBOL_NAME, type, initial_margin_rate,
               SYMBOL_NAME, type, maintenance_margin_rate);
  }