我同时交易两个合约,如IF02,IF03,当主力合约变为IF03时,交易IF03,IF04这时有一个问题,那就是IF04还没有生效,是用什么函数判断这个合约是否已经启用了?
人工判断。或者判断日期是否为currentdate
我现在的思路是判断当前是星期几,如果主力合约月份>当前月份,并且今天是周4或者周5,就不交易,因为远月合约还没有启用。
这样有一个问题,那就是本月第4个星期的周4、周5也不会交易,而那时远月合约已经启用了。
那么麻烦干嘛
有交易的话,date的值就会等于currentdate ,这个方法可以吧。
我是用后台策略,监控的品种始终是IF00,如果按照你说的使用Date和CurrentDate比较,始终是相等的,就分不出远月合约是否已经启用了。
这种情况只在周4、周5出现,像今天是周4,IF主力合约已经换成了IF03,这时IF04还没有启用,要等到下周1才会启用,所以针对主力合约的
下一个月的交易就会“找不到合约”。
我现在的解决办法是:
使用VBA来解决这个问题,使用reportdata.LastOI来取出IF04的昨天成交量,如果等于0,说明IF04还没有启用,然后保存到全局变量中,
策略中使用extgbdata取出这个变量,如果变量的值等于0,就退出,这样就可以避免下单错误了。