以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何在连续合约上识别换月  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=137530)

--  作者:Follow
--  发布时间:2016/8/4 10:39:48
--  如何在连续合约上识别换月
在测试模型时,如果放在连续合约上测试,主力合约换月跳空有时会很大,对测试结果有较大影响。是否有方法能识别连续合约上换月了,一个想法是看持仓量,前一天的持仓量和今天的持仓量进行比较,如果今天的持仓量除去增仓部分不等于昨天最后一根K线持仓量则是换月了。持仓量可以用OPENINT来取,但增仓只有动态行情函数,没有历史值。请教下有没有别的方法
--  作者:jinzhe
--  发布时间:2016/8/4 10:46:10
--  

比较当前合约close和连续合约的close就可以了

c1:=callstock(stklabel,vtclose,6);//当前合约close

c2:=callstock(\'if00\',vtclose,6);//连续合约close,这里以if为例

当c1=c2就表示当前合约是主力合约,不相等就是不是主力合约。当然用close可能会很巧的非主力合约的close和连续合约一样,那么把vtclose改成vtvol也可以

[此贴子已经被作者于2016-8-4 10:46:20编辑过]

--  作者:Follow
--  发布时间:2016/8/4 11:02:43
--  
你好,我的想法是,一个策略直接加载到连续合约上测试,比如rb00,在主力合约换月的时候,比如从rb1610换成了rb1701,策略是在连续合约上加载的,在换月之前,由于主力合约是rb1610,策略加载在连续合约上开仓的合约是rb1610,然后一直持仓,之后某一天换月了,连续合约后面的行情就显示为RB1701,在连续合约上会有跳空,这个跳空对测试有影响。我的想法是,如何在测试连续合约的时候,把这个换月识别出来
--  作者:jinzhe
--  发布时间:2016/8/4 11:15:05
--  

这个比较烦了

需要像我上一样做引用

要引用所有的合约,

c0:=callstock(\'if00\',vtvol,6);

c1:=callstock(\'if01\',vtvol,6);

......

c12:=callstock(\'if12\',vtvol,6);

 

然后逐一判断赋值

if c1=c0 then n:=1;

if c2=c0 then n:=2;

....

if c12=c0 then n:=12;

n=1表示01合约为主力,n=2表示02合约为主力。。。。。。n=12表示12合约为主力

判断下n<>ref(n,1),成立即为换月了


--  作者:Follow
--  发布时间:2016/8/5 9:44:46
--  
这样写可以在当前识别出是否换月,但在历史上就识别不出来了,几年前的老合约找不到。有别的方法么
--  作者:jinzhe
--  发布时间:2016/8/5 9:47:44
--  
你要补充数据,如果数据没有补充到,那么就没办法了
--  作者:Follow
--  发布时间:2016/8/5 9:55:33
--  
好的,谢谢