全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
关于除权换月价格计算
luoboren 分享到
2022-10-31 11:14

老师,你好,我在进行除权换月价格计算时,遇到问题,描述如下:

1、首先OnInit里面是这样设置的:后复权,映射真实价格。

2、在开平仓里面直接就是Buy(1,Open);Sell(1,Open);这样价格会进行除权成为真实价格。

3、在换月操作里面,代码是这样的:这时就出问题了,换月操作再次进行了除权计算,相当于除权了两次,价格不对。

4、那么,我将映射到真实价格关闭,避免换月操作进行两次除权,结果又出现问题。开平仓Buy(1,Open);Sell(1,Open);这里面的价格又成了后复权的价格。又不对。

5、那么,我开启映射到真实价格,我在换月操作里面不进行除权,结果还是不对,换月操作里面价格都是Close[1],与当前主力合约上一主力合约的上一根bar的收盘价,这又导致回测结果不对。

6、难道在后复权的条件下,我应该关闭映射到真实价格,然后在正常的开平仓操作里面进行除权吗,这样做可以确保价格都是对的。但这种做法好像没听到哪个老师这么讲过。

请问老师,到底该怎么操作?

kyover

第一 不知道你什么要自己写换仓命令,设置自动换仓不就可以直接处理了么?

第二,既然buy sell里面 开启映射真实价格之后,会自动除权,那你为什么还要除以rollover呢?

总的来说,3里你又开了映射真实价格又除权,5里面又不映射真实价格,又复权,你但凡3和5里面岔开一下,3里开映射真实价格不要除权,5里面不映射真实价格,然后除权计算,都行,你偏偏选的都是不正确的写法,这个思路也是厉害了。

2022-10-31 15:53
luoboren
@kyover

谢谢刘风老师。我好像弄明白了。换仓操作有两种方式:

1、用AddDataFlag(Enum_Data_AutoSwapPosition())配合监控器实现,AddDataFlag(Enum_Data_AutoSwapPosition())会在图表上出现换仓信号,然后监控器会匹配执行。用这种组合方式就不需要自己写换仓命令。

2、代码实现换月,用Rollover<>Rollover[1]判断是否出现了换月,出现了执行后面的代码换仓。

我之前搞错了,以为AddDataFlag(Enum_Data_AutoSwapPosition())需要配合手写的换仓代码才能执行换仓。

2022-10-31 16:09
luoboren
@luoboren

又搞错了,监控器监控到的是主力合约的变化

2022-10-31 17:36
您未登录,请先 登录注册 后发表评论
顶部