关于rerun和restart运行机制的问题

关于rerun和restart在公式中运用遇到了一些困惑: 公式如下: Params //此处添加参数 Vars //此处添加变量 Global Integer count(0); GloBal Bool flag(False); Defs //此处添加公式函数 Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { count = count + 1; Print("OnInit,count:" + Text(count)); } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { Print("bar"); If(BarStatus==2) { count = count + 1; Print("Onbar2,count:" + Text(count)); if(!flag) { ReRun(); Print("ReRun"); flag = True; } Print("rerun后面"); } } 在K线图中加载公式,如图: 出现不能理解的问题: 1.仅仅加载了5根K线,但是输出的"bar"信息却有9条? 2.为什么会执行rerun后面的语句呢?rerun只会重新执行最后一根bar吗?rerun的运行机制到底是怎样呢? 3.可以将公式中的rerun换成restart,发现restart后面的语句也会执行?

1.这边输出"bar"一共是10条,因为print函数是没有按输出顺序显示,具体是因为运行了两次 一个输出10条 2.rerun和restart都会先将当前的bar执行完毕 然后从新运行不是只会执行最后一个bar 具体区别看一下相关的帮助文档

回复:为什么print不按照输出顺序输出呢?而且换成restart后print出来的&ldquo;bar&rdquo;只有5个,这又是什么原因呢?

回复:因为条件控制的原因 rerun时运行一边 重新加载再运行 restar时 运行一一遍然后时一直重新加载再运行 看看帮助文档中rerun和restart restart重置了全局变量

回复:还是不懂,为什么rerun重新运行后print不按照输出顺序输出呢?

回复:这个是因为Print实现问题,要是想要有序用fileappend