2.5.2 最小报价点
根据MQL预定义变量,点是交易黄金商品报价最小位数。对于小数点后有两位的黄金点为0.01。
现在来计算买进市价单。设定市场卖出价为开仓价。在此检查看到,StopLoss设置为大于零。如此将止损乘上点,然后减去开盘价。结果将被存储在变量BuyS topLoss中。
double OpenPrice=Ask;
if(StopLoss >0)double BuyStopLoss=OpenPrice-(StopLoss*Point);//1650.50-(50*0.01)=1650
如果止损不大于零,BuyStopLoss初始化为值“0”,并且没有止损设定。假设点等于0.01,如果开仓价格是1650.5和50点的停损,那么多单的止损价格将是1650.5-(0.5)=1650。
在这里顺便一提:虽然黄金都是在小数点后两位来进行报价,但对于货币来说,券商当中有不少公司提供小数点后第五位的报价,随着竞争变得更为激烈,小数点差报价可将各个较热门货币对的买卖差价进一步收窄,如果市况波动不定,这对交易者来说的确存在交易优势。
假设你也投资货币商品,如果以一点为0.0001来计算上面的例子,止损点从开仓价计算,为上下5点,而不是50点,这带来了一个问题:为了得到正确的值,我们必须增加一个零到我们所设定的数值中,即止损=500。
我们不需要投资者在总报价中每次都增加一个额外的零到止损和停利设定中,所以我们使用一个函数,该函数将总是返回0.01或0.0001,不管是否使用经纪商报价分数点。我们称这个函数为PipPoint,因为其回传点价总是等于一个点的点值。
字符串参数的商品符号,我们要检索基点。Markeanfo()函数的MODE_DIGITS参数中回传该对数的小数字(数字)。把if-else语句放置CalcPoint变量至合适的基点值,并取决于小数位数。下面是使用此功能的例子。绝大多数的时间你都会使用当前图表对,所以我们将以Symbol()函数作为参数。这将回传当前图表的点。
我们将使用此功能来找到点子的点值。正如我们证明的,当我们进行单点计算时,并在经纪商进行小数点后5位数报价时, Point变量不能正常工作,我们不能永远假设EA只适用于2位和4位报价,所以它必须使用PipPoint自动确认单点的点值。

