如何获取每个 Symbol() 价格的小数位数

How to get the number of decimal places for every Symbol() price

某些货币对显示值到小数点后 5 位 (EURUSD),其他货币对显示到小数点后 4 位,依此类推。我把下面的代码写成 return 小数位减一的整数值。此功能仅考虑几对。我想扩展它以满足所有对。如何找到每个 Symbol() 价格的小数位数?

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

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

   else return 3;
}

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

给出的例子是:

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

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

给出的例子:

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

在您的情况下,您可以使用如下函数:

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

并从您的 Main(){} 呼叫:

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

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

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