之前遇到过类似的很奇异的情况 ,比如只出现onrtntrade,或者登陆之后没回调,卡死,onRtnTrade先于OnRtnOrder被调用, 最后检查发现竟然是头文件和库文件版本不一致~~~ 版本一致的情况下倒是从来没出现过丢包和乱序的问题。即使是从互联网上接入也没出现过。 FIX要是能接入行情就圆满了,tom他们现在应该也在着手这件事情。
参考《API开发FAQ》问题20和问题37 CTP就是封装了一下FTD期货协议。这几个流文件估计跟FIX的SeqNum机制差不多,储存了一下消息序号而已。 默认的有几个文件MdApi和TdApi同名的(Dialog.con ,QueryRsp.con TradingDay.con ),如果是订阅消息模式是resume或者quick,每次启动会从本地读取这个消息序号,按照resume quick或者restart 的规则决定从哪个消息序号开始传到本地。 我看了一下,MdAPi和TdApi的Dialog,QueryRsp,TradingDay是空的。 TdApi的 Dialog,QueryRsp是空的, TradingDay保存的估计是 每次登陆都会返回的日期的消息序号。 而TdApi多出来的公有流Public.con和私有流Private.con 是 RegisterPublicTopic和ReigisterPrivateTopic 函数产生的。resume quick restart订阅消息的模式对这两个才起作用。 一般情况下,对MdApi来说,只在交易之前login和subscribe 这几个函数会影响流文件,之后几乎就是 只跟TdApi打交道了,基本上不会遇到相互干扰的情况。所以你没出问题也许是这个原因。 而楼主遇到的问题,可能是中途遇到断线或者当天在交易时段重启了程序,用resume模式就不会收到成交回报了。restart模式会从当天第一个成交回报开始推送。 更详细的可以问问jovebird兄。