rollover 被 自动换仓代码干扰

// AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓这行代码会影响正常的 rollover数据需求:订阅多周期,一个复权,一个不复权,为了都得到真实价格,所以需要用到rollover但加入自动换仓这行代码后,不复权的rollover数据就不对了这个算bug吗,能修吗?或者我的用法不对,该如何正确使用

不是,这个东西本来是给后复权用的,你这里前复权......我也不知道会发生什么你既然是自动化模型为什么要用前复权呢

回复:改成后复权也是不对的测试代码:Events OnInit() { SubscribeBar(Symbol, "1h", BeginDateTime); // data0.AddDataFlag(Enum_Data_RolloverForWard()); data0.AddDataFlag(Enum_Data_RolloverBackWard()); //改成后复权 Range[0:DataCount - 1] { AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 } } OnBar(ArrayRef<Integer> indexes) { range[0:DataSourceSize - 1] { Commentary("Rollover=" + text(Rollover)); } } 订阅888只对data0做了复权,data1没动,且系统没有专门设置不复权的代码那不设置就是默认不复权加载公式后,在K上打开策略单元设置,也能看到两个数据源的复权是不一样的那么rollover在两个数据源上是不一样的但实际执行结果就是,有了“自动换仓”后,rollover就变成一样的了...

回复:明白了你的意思了,恭喜你发现了华点

回复:研发的反馈是,判断是否自动换仓,是需要引用rollover数据的,换句话说,系统判断是否出现自动换仓也是依靠rollover是否变化来判断的。引用这个数据前可以先判断一下本图层是否后复权

回复:难道是我对“自动换仓”这个代码的使用理解有误我理解的“Enum_Data_AutoSwapPosition()”是用来给系统回测做标识即:在这里自动切换但盈亏比例前后一起算,不是分开算。额,不确定这个表述是否准确,但我理解他只是影响策略报告的盈亏次数统计数,不影响实际交易的数据。而如果加了这行代码 ,影响了rollover,那么在写策略的时候,我要计算出准确的价格写到buy sell,就成了一个薛定谔的事情。这只是其一还会在复权的数据源上用rollover算真实的数据算出一些指标和阈值,又不对了

回复:不是,你引用了自动换仓后,图上会额外标记出平仓和开仓信号的。为了标记这个信号,需要确认是哪根bar,这里的逻辑就需要rollover判断了你可以用dataflag查询行情标志,查查里面是否有复权标记

回复:我要被绕晕了研发这个意思 是围绕,“自动换仓”信号,是由rollover决定的我反馈的是意思,“自动换仓”信号把rollover数据破坏了 ,导致代码用到rollover数值时计算的结果是错的那有一种可能导致的分歧:不是“自动换仓”信号破坏的rollover数据但我只测出这个所以我重新问,如果我既要用““自动换仓”信号”,又要用rollover获得正确的数值,该怎么弄

回复:又学会新东西了 ,原来bithas是这么用的呀您看我用这个BitHas判断后commentary的东西,是不是离谱了判断出不复权,但是rollover却不等于1

回复:晕了?判断一下是不是复权,如果复权就用rollover,不复权就用1不就行了么

回复:哦 您是给的实用方案哦 我以为是在解释这个没问题...好的 先这么用

回复:我刚刚想到一个问题如果是自动换仓必须要用rollover ,那么不复权会不会不自动换仓加载公式看看,也还是会换仓然后我好像理解您在说什么了您是说:研发的意思是,自动换仓必须依赖rollover这个值所以,一旦设置了自动换仓,无论是否复权,rollover就必须随换合约变化所以,这不是bug,是底层依赖关系,不能改我理解对吧

理论上必然影响

回复:啊 为什么呀