Plot画图叠加另外的订阅公式——出错

将系统原始ATR公式改成plot画图形式demo1新建一个只有订阅代码的demo2同时加载demo1和demo2画图就会出现订阅周期的副图被画在主图上了//demo1 Params Numeric Length(14); //周期 Vars plot plotATR; Events OnInit() { // SubscribeBar(Symbol,"15m",BeginDateTime); //在 本公式内订阅,画图不出错 Range[0:DataSourceSize-1] { plotATR.figure(0); } } OnBar(ArrayRef<Integer> indexs) { Range[0:DataSourceSize() - 1] { plotATR.line("ATR",AvgTrueRange(Length)); } }//demo2 Events OnInit() { SubscribeBar(Symbol,"15m",BeginDateTime); // SetBasePeriod("15m"); }

首先,多个模型加载到同一个单元里,执行顺序肯定有先后的。其次,单个模型内有多个事件域驱动的,执行顺序也有先后。所以这个问题就是,现在有多个模型,每个模型里有多个事件域。那么到底是先把单个模型里的所有事件域都执行完再执行下个模型,还是每个模型同样部分的事件域拿出来排队单独执行呢?事实上肯定是后者更合理一些。所以这个现象背后的原因就是第一个模型执行oninit的时候,只有单图层,只对data0设置了副图接下来执行的是demo2的oninit,这里订阅了data1接下来逐个bar执行onbar驱动,计算指标,作图。既然只对data0设置了副图,那自然就data1画主图了。

回复:之前听课听过关于加载多个策略的执行顺序问题可能一直没遇到意外,就没太在意这个情况“每个模型同样部分的事件域拿出来排队单独执行”——以后得把这个考虑进去

学习了

我就说我怎么大白天做梦怎么会突然就不行了加载顺序!!!!!!!!!!!!!!!sub的代码放在画图的前面就可以,放后面就不行!!!这算bug吧.............

回复:或者把所有plot的设置都放到Onready也就是说一定要plot的代码在sub后面运行这算bug吗 如果不算的话 就得把以前写的类似的代码都改一下

感觉在梦游 白天的时候还是好的...