SymbolInfoMarginRate

Возвращает коэффициенты взимания маржи в зависимости от типа и направления ордера.

bool  SymbolInfoMarginRate(
   string             name,                     // символ
   ENUM_ORDER_TYPE    order_type,               // тип ордера
   double&            initial_margin_rate,      // коэффициент взимания начальной маржи
   double&            maintenance_margin_rate   // коэффициент взимания поддерживающей маржи
   );

Параметры

name

[in]  Имя символа.

order_type

[in]  Тип ордера.

initial_margin_rate

[in] Переменная типа double для получения коэффициента взимания начальной маржи. Начальная маржа — это размер гарантийной суммы под совершение сделки объемом в 1 лот соответствующего направления. Умножая коэффициент на начальную маржу, мы можем получить размер средств, который будет зарезервирован на счете при размещении ордера указанного типа.

maintenance_margin_rate

[out] Переменная типа double для получения коэффициента взимания поддерживающей маржи. Поддерживающая маржа —– это размер минимальной суммы для поддержания открытой позиции объемом в 1 лот соответствующего направления. Умножая коэффициент на поддерживающую маржу, мы можем получить размер средств, который будет зарезервирован на счете после срабатывания ордера указанного типа.

Возвращаемое значение

Возвращает true в случае удачного выполнения запроса свойств, иначе false.

Example:

#define SYMBOL_NAME Symbol()
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declare the variables the ratios are set into
   double initial_margin_rate = 0;     // initial margin rate
   double maintenance_margin_rate = 0// maintenance margin rate
   
//--- get and send the SYMBOL_NAME symbol ratios for the Buy market order to the journal
   SymbolInfoMarginRatePrint(SYMBOL_NAMEORDER_TYPE_BUYinitial_margin_ratemaintenance_margin_rate);
   
//--- get and send the SYMBOL_NAME symbol ratios for the Sell market order to the journal
   SymbolInfoMarginRatePrint(SYMBOL_NAMEORDER_TYPE_SELLinitial_margin_ratemaintenance_margin_rate);
 
   /*
   result:
   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   
   */
  }
//+------------------------------------------------------------------+
//| Send the margin ratios to the journal                            |
//+------------------------------------------------------------------+
void SymbolInfoMarginRatePrint(const string symbolconst ENUM_ORDER_TYPE order_typedouble &initial_margin_ratedouble &maintenance_margin_rate)
  {
//--- get the 'symbol' ratios for the order_type market order
   ResetLastError();
   if(!SymbolInfoMarginRate(symbolorder_typeinitial_margin_ratemaintenance_margin_rate))
     {
      Print("SymbolInfoMarginRate() failed. Error "GetLastError());
      return;
     }
//--- print the obtained ratio values
   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);
  }