mt5如何获得1标准手的保证金金额

 

在MT4中,可以通过MarketInfo(Symbol(), MODE_MARGINREQUIRED),得到1标准手的自由保证金数量,在MT5中,我试图通过调用SymbolInfoInteger(Symbol(),MarginInitial())来得到1标准手的保证金数量,但返回值是0.0 。有谁知道问题出在哪里?

我的MT5版本是build 965

 

OrderCalcMargin()来计算。

SYMBOL_MARGIN_INITIAL不是用于外汇的,是用于证券的。

 
luenbo:

OrderCalcMargin()来计算。

SYMBOL_MARGIN_INITIAL不是用于外汇的,是用于证券的。

搞定,谢谢指教
 
// 这是一个 MQL5 脚本示例

void OnStart() 
  { 
   bool os;  // 用于保存 OrderCalcMargin() 函数的返回值  true 或 false
       
   double  a;  // 用于保存 OrderCalcMargin() 输出的值 ,即想要获取的保证金的值。
   
   os = OrderCalcMargin( 
                        ORDER_TYPE_BUY,                         // 订单类型  做多
                        "EURUSD",                               // 交易品种名称  EURUSD
                        1.0,                                    // 交易量 一标准手
                        SymbolInfoDouble(Symbol(),SYMBOL_ASK),  // 进场价 
                        a                                       // 获取到的保证金值的值,输出到 变量 a 中 
                       );
   
   Print("EURUSD 做多一标准手需保证金: ",a); 
  
  }

卡了我2天,才看到这个函数,硬是有罪~~~~~~

大神的回复也是简直了~~~~~~~~

这段代码应该小白都看得懂了吧?这都看不懂,我也没招儿了。

 
zhen yao #:

卡了我2天,才看到这个函数,硬是有罪~~~~~~

大神的回复也是简直了~~~~~~~~

这段代码应该小白都看得懂了吧?这都看不懂,我也没招儿了。

感谢,最后一个参数的解释不注意看很容易漏掉。

margin

[out]  The variable, to which the value of the required margin will be written in case the function is successfully executed. The calculation is performed as if there were no pending orders and open positions on the current account. The margin value depends on many factors, and can differ in different market environments.

【输出】当函数成功执行时,将把所需的margin写入该变量,计算的执行是按账户无挂单,无持仓的情况进行。margin的计算值依赖于很多因素,在不同环境下的值可能不同。

原因: