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.

Пример:

#define SYMBOL_NAME Symbol()
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- объявим переменные, в которые будут записаны коэффициенты
   double initial_margin_rate = 0;     // коэффициент взимания начальной маржи
   double maintenance_margin_rate = 0// коэффициент взимания поддерживающей маржи
   
//--- получим и выведем в журнал коэффициенты по символу SYMBOL_NAME для рыночного ордера Buy
   SymbolInfoMarginRatePrint(SYMBOL_NAMEORDER_TYPE_BUYinitial_margin_ratemaintenance_margin_rate);
   
//--- получим и выведем в журнал коэффициенты по символу SYMBOL_NAME для рыночного ордера Sell
   SymbolInfoMarginRatePrint(SYMBOL_NAMEORDER_TYPE_SELLinitial_margin_ratemaintenance_margin_rate);
 
   /*
   результат:
   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   
   */
  }
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициенты взимания маржи                     |
//+------------------------------------------------------------------+
void SymbolInfoMarginRatePrint(const string symbolconst ENUM_ORDER_TYPE order_typedouble &initial_margin_ratedouble &maintenance_margin_rate)
  {
//--- получим коэффициенты по символу symbol для рыночного ордера order_type
   ResetLastError();
   if(!SymbolInfoMarginRate(symbolorder_typeinitial_margin_ratemaintenance_margin_rate))
     {
      Print("SymbolInfoMarginRate() failed. Error "GetLastError());
      return;
     }
//--- распечатаем полученные значения коэффициентов
   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);
  }