【问题标题】:How to get the number of decimal places for every Symbol() price如何获取每个 Symbol() 价格的小数位数
【发布时间】:2019-10-02 10:08:29
【问题描述】:

某些货币对显示小数点后 5 位 (EURUSD),其他 4 位,依此类推。我编写了下面的代码以返回小数位减一的整数值。这个函数只考虑了几对。我想扩展它以适应所有对。如何找到每个 Symbol() 价格的小数位数?

int decimalPlacesForPairs()  {
   if ((_Symbol == "XAUUSD") || (_Symbol == "USOIL")) {
      return 1;
   }

   else if (_Symbol == "CADJPY") {
      return 2;
   }  

   else return 3;
}

【问题讨论】:

    标签: mql4 algorithmic-trading mql5 mt4


    【解决方案1】:

    在 MQL4 中,您可以访问预定义变量 int Digits。该函数返回小数点后的位数。

    给出的例子是:

    Print(DoubleToStr(Close[0], Digits));

    另一种方式,也许对您而言更好的方式是使用MarketInfo。在这里,您可以通过将符号作为字符串变量插入来返回每个符号的小数位数。

    给出的例子:

    int vdigits = (int)MarketInfo("EURUSD",MODE_DIGITS);

    在您的情况下,您可以使用如下功能:

    int decimalPlacesForPairs(string sPair)  {
       return MarketInfo(sPair),MODE_DIGITS);
    }
    

    并通过您的Main(){} 拨打电话:

    void Main()
    {
        decimalPlacesForPairs(Symbol());
        //or 
        //decimalPlacesForPairs("EURUSD");
    }
    

    【讨论】:

    • 没有回答问题。如果阅读 O/P,问题是 明确 说“扩展它以适应所有对。我怎样才能找到小数位数 for 每个Symbol()价格?”
    • 当然可以,具体取决于上下文。如果用户计划在 EA 中使用它并将其加载到图表中,上述 WILL 将返回已加载该产品的小数。
    • 没有回答问题。该代码缺少一个迭代器,这将满足“扩展它以适应所有对” 的要求 - 即 for each Symbol()由Broker提供,其中一部分在Market Watch中列出——哪一部分代码仍然缺失...
    【解决方案2】:

    将您的数字或点数放在全球区域。

    double pips;
    double ticksize = MarketInfo(NULL,MODE_DIGITS);
         if(ticksize==2||ticksize==3||ticksize==4||ticksize==5)
         pips=ticksize*10;
         else pips =ticksize;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2018-11-23
      相关资源
      最近更新 更多