以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  怎么判断某个合约是否已启用?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=10175)

--  作者:guotx2010
--  发布时间:2012/2/16 10:44:11
--  怎么判断某个合约是否已启用?

我同时交易两个合约,如IF02,IF03,当主力合约变为IF03时,交易IF03,IF04这时有一个问题,那就是IF04还没有生效,是用什么函数判断这个合约是否已经启用了?

 

 


--  作者:阿火
--  发布时间:2012/2/16 10:52:45
--  

人工判断。或者判断日期是否为currentdate


--  作者:guotx2010
--  发布时间:2012/2/16 11:15:12
--  

我现在的思路是判断当前是星期几,如果主力合约月份>当前月份,并且今天是周4或者周5,就不交易,因为远月合约还没有启用。

这样有一个问题,那就是本月第4个星期的周4、周5也不会交易,而那时远月合约已经启用了。

 


--  作者:阿火
--  发布时间:2012/2/16 13:06:49
--  

那么麻烦干嘛

有交易的话,date的值就会等于currentdate ,这个方法可以吧。


--  作者:guotx2010
--  发布时间:2012/2/16 22:32:31
--  

我是用后台策略,监控的品种始终是IF00,如果按照你说的使用Date和CurrentDate比较,始终是相等的,就分不出远月合约是否已经启用了。

这种情况只在周4、周5出现,像今天是周4,IF主力合约已经换成了IF03,这时IF04还没有启用,要等到下周1才会启用,所以针对主力合约的

下一个月的交易就会“找不到合约”。

 

我现在的解决办法是:

使用VBA来解决这个问题,使用reportdata.LastOI来取出IF04的昨天成交量,如果等于0,说明IF04还没有启用,然后保存到全局变量中,

策略中使用extgbdata取出这个变量,如果变量的值等于0,就退出,这样就可以避免下单错误了。