2.5.2 最小报价点

2.5.2 最小报价点

根据MQL预定义变量,点是交易货币报价最小位数。对于小数点后有4位的货币对,点为0.0001。日元对是0.01。

现在来计算买进市价单。设定市场卖出价为开仓价。在此检查看到, StopLoss设置为大于零。如此将止损乘上点,然后减去开盘价。结果将被存储在变量BuyStopLoss中。


如果止损不大于零,BuyStopLoss初始化为值"0",并且没有止损设定。假设点等于0.0001,如果开仓价格是1.4500和50的停损点,那么多单的止损价格将是1.4500-(0.0050)=1.4450。券商当中有不少公司提供小数点后第五位的报价,随着竞争变得更为激烈,小数点差报价可将各个较热门货币对的买卖差价进一步收窄——鉴于市况近期波动不定,这对交易者来说的确是交易优势。日元对保留3位小数,其他货币对保留5位小数。如果经纪商使用该报价模式报价,在上面的例子中一点等于0.00001。

如果以一点为0.00001来计算上面的例子,止损点从开仓价计算,为上下点5,而不是50点,这带来了一个问题:为了得到正确的值,我们必须增加一个零到我们所设定的数值中,即止损=500。

我们不需要投资者在总报价中每次都增加一个额外的零到止损和停利设定中,所以我们使用一个函数,该函数将总是返回0.01或0.001,不管是否使用经纪商报价分数点。我们称这个函数为PipPoint,因为其回传点价总是等于一个点的点值。


字符串参数的货币对符号,我们要检索基点。Marketlnfo( )函数MODE_DIGITS参数中回传该对数的小数字(数字)。把证if-else语句放置CalcPoint 变量至合适的基点值,并取决于小数位数。下面是使用此功能的例子。绝大多数的时间你都会使用当前图表对,所以我们将以Symbol( )函数作为参数。这将回传当前图表的点。


我们将使用此功能来找到这本书的剩余的单点子的点值。正如我们证明的,当我们进行单点计算时,并在经纪商进行小数点后5位数报价时, Point变量不能正常工作。我们不能永远假设EA只适用于2位和4位报价,所以它必须使用PipPoint自动确认单点的点值。