每天凌晨时候交易所可能发一些垃圾数据过来,通达信接口报身份未授权,ctp接口是眼睛都不眨的报给客户端,如果你一直开着软件又没任何过滤的情况下垃圾数据也会一并接收,所以要加一个过滤。
这个过滤怎么加呢?
分两种过滤,这里两种是只两种都要过滤不是任取其一即可。
因为上面的DATE已经修改过了,合成出了一个新的DATETIME,然后有这么两种情况需要过滤。
如果你只是过滤了真实服务器时间比如早9点到下午3点。
例子1在早上9点开盘推了一个数据包数据包的时间戳写着早上5:00:00,这个肯定是会存进去是一个BUG数据那好,早上9点在数据库里插进去了个5点的数据
如果你不过滤真实服务器,而是过滤的上面合成的DATETIME,也会有问题
例子2在凌晨3点推了一个数据包数据包上的时间戳写着早上9:20:00时间戳是对的,但是凌晨3点压根没交易,所以也会存进去产生BUG。凌晨3点明明没有任何合约交易,但是交易所推了个垃圾数据,上面给你标着9点20的数据你也一样会推进数据库里还是有问题
两种情况都要过滤才能保证数据不乱。
另外对于不同的夜盘合约要划分交易时段,谁知道会不会在黄金白银夜盘还在交易的时候,某些已经停盘的品种突然推点垃圾数据过来?
再说说一分钟k线的数据合成问题,有的人简单的认为把tickminute!=barminute就可以了,其实有一些问题的,
比如10点15分这个大连商品交易所和上海期货交易所的合约10点15分到10点30分有休息,那就会把10点15分单独一根tick合成了一个K线。
再比如夜盘是23:00:00收盘的,到了第二天早上9:00:00开盘,因为两个分钟都是0,所以数据库里会少9:00:00的K线,第一个k线是从9:01:00开始。
还有就是11:30:0015:00:00这些都可能再下次tick报过来时候单独变成一根K线。
另外还有比如volume为0的tick其实也需要过滤一下的,周六日节假日也需要过滤,如果你有办法,没办法的话就在周六日或者节假日关闭数据接收,我就在周六的晚上9点收到过垃圾数据,导致第三天周一交易出了BUG。
文章为作者独立观点,不代表股票交易接口观点