以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 好的,谢谢 |