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_NAMEORDER_TYPE_BUYinitial_margin_ratemaintenance_margin_rate);
   
//--- obtemos e exibiremos no log os coeficientes para o símbolo SYMBOL_NAME para a ordem a mercado Sell
   SymbolInfoMarginRatePrint(SYMBOL_NAMEORDER_TYPE_SELLinitial_margin_ratemaintenance_margin_rate);
 
   /*
   resultado:
   Initial margin rate for symbol AFKS for the Buy market order0.225600
   Maintenance margin rate for symbol AFKS for the Buy market order0.112800
   Initial margin rate for symbol AFKS for the Sell market order0.254400
   Maintenance margin rate for symbol AFKS for the Sell market order0.127200   
   */
  }
//+------------------------------------------------------------------+
//| Imprime no log os coeficientes de cobrança de margem |
//+------------------------------------------------------------------+
void SymbolInfoMarginRatePrint(const string symbolconst ENUM_ORDER_TYPE order_typedouble &initial_margin_ratedouble &maintenance_margin_rate)
  {
//--- obtemos os coeficientes para o símbolo symbol para a ordem a mercado order_type
   ResetLastError();
   if(!SymbolInfoMarginRate(symbolorder_typeinitial_margin_ratemaintenance_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_NAMEtypeinitial_margin_rate,
               SYMBOL_NAMEtypemaintenance_margin_rate);
  }