跳至内容

SymbolInfoMarginRate

SymbolInfoMarginRate

根据订单类型和方向返回预付款比率。

bool  SymbolInfoMarginRate(
   string             name,                     // 交易品种名称
   ENUM_ORDER_TYPE    order_type,               // 订单类型
   double&            initial_margin_rate,      // 初始预付款比率
   double&            maintenance_margin_rate   // 维持预付款比率
   );

参数

名称

[in] 交易品种名称。

order_type

[in] 订单类型。

initial_margin_rate

[in] 用于接收初始预付款比率的双精度类型变量。初始预付款是相应方向的证券一手交易的保证金。初始预付款与比率相乘后,我们会收到下单指定类型订单时账户上保留的资金量。 .

maintenance_margin_rate

[out] 用于接收维持预付款比率的双精度类型变量。维持预付款是维护相应方向一手持仓的最低数额。维持预付款与比率相乘后,我们会收到激活指定类型订单后,账户上保留的资金量。

返回值

如果属性请求成功,返回true,否则false。

示例:

#define SYMBOL_NAME Symbol()

//+------------------------------------------------------------------+
//| EA交易初始化函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 声明设置比率的变量
   double initial_margin_rate = 0;     // 初始预付款比率
   double maintenance_margin_rate = 0; // 维持预付款比率

//--- 获取并发送买入市价单的SYMBOL_NAME交易品种比率到日志
   SymbolInfoMarginRatePrint(SYMBOL_NAME, ORDER_TYPE_BUY, initial_margin_rate, maintenance_margin_rate);

//--- 获取并发送卖出市价单的SYMBOL_NAME交易品种比率到日志
   SymbolInfoMarginRatePrint(SYMBOL_NAME, ORDER_TYPE_SELL, initial_margin_rate, maintenance_margin_rate);

   /*
   result:
   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
   */
  }
//+------------------------------------------------------------------+
//| 将预付款比率发送到日志                            |
//+------------------------------------------------------------------+
void SymbolInfoMarginRatePrint(const string symbol, const ENUM_ORDER_TYPE order_type, double &initial_margin_rate, double &maintenance_margin_rate)
  {
//--- 获取order_type市价单的'symbol'比率
   ResetLastError();
   if(!SymbolInfoMarginRate(symbol, order_type, initial_margin_rate, maintenance_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_NAME, type, initial_margin_rate,
               SYMBOL_NAME, type, maintenance_margin_rate);
  }