然后如果我们再次调用iClose()2025/5/26客户端app有目共睹,MT4(MetaTrader 4)是外汇业务中最常用的业务软件。正在MT4中咱们不但可能手动业务,还可能本身编程写成EA举行次第化业务。小编本身对MT4的EA编写也略知一二,本日正在写一个众种类业务的EA中碰着了极少题目,注意商讨了一段时期才明晰了个中的眉目,本日就把这个情状分享给行家,生气行家正在本身写EA的功夫可能避开这些“坑”。
正在MT4中,获取收盘价的函数是iClose(symbol, timeframe, shift)。这时假设我的EA是加载正在XAUUSD的图外上的,这时运用iClose()函数来调取XAUUSD现时的收盘价,这时获取的价值必定是确切的;不过假设运用iClose()函数来调取AUDUSD现时的收盘价,这时恰恰我也没有掀开AUDUSD的图外,那么EA获取的返回值很能够即是一个毛病的数值。由于MT4为了不占用太众的硬盘空间,正在积聚收盘价的功夫只会存现时图外仍然掀开了的种类的,假设没有掀开某个种类的图外,MT4则不会积聚这个种类的K线价值,假设正在这个功夫去用iCLose()移用AUDUSD的收盘价的线则会返回一个史册积聚过的收盘价,而不是现时的收盘价。之后MT4发掘用户正在移用iClose()来获取收盘价之后,后台才会向效劳器从新乞请这些K线的数据,然后假设咱们再次移用iClose(),本来就可能拿到确切的收盘价了。
既然有MT4的这个内正在机制,那么咱们能不行正在只掀开一个图外的情状下,获取随便种类现时的收盘价呢?谜底当然是可能的。MT4自带的另一个函数SymbolInfoDouble(symbol, prop_id)可能知足咱们的恳求,由于这个函数可能直接移用某个种类的Bid和Ask价值,而Bid和Ask价值即是左边墟市报价里的价值,这些价值正在MT4中是通常刻刻都正在更新的,因而拿到的返回值必定即是最新的报价了。
这个是MT4的打印结果,Ask和Bid即是现时确切的价值,Close是过去MT4积聚的史册数据中结尾一根K线的收盘价。
总结下来即是正在MT4中假设开辟众种类的EA或者目标,念要获取非现时图外的种类的价值时,尽量运用SymbolInfoDouble()函数,假设必定要用到iClose()函数的话,就指挥用户把其他须要的种类也掀开一个图外正在旁边,省得读取毛病的数据导致EA误下单,惹起不需要的耗损。
转载请注明出处。