closed的替代用法解惑

各位老师好,社区搜索colsed的用法,得到一位贴主phoenix129写的代码 https://bbs.tbquant.net/thread/forum13043 略微做了下修改,确实在3分钟上可以获取每日的收盘价,但发现理解不了,onopen那儿明明插入的是开盘价,为什么最终可以显示每天的收盘的,希望各位老师可以解惑一下,非常感谢Params Integer Days(20); Vars Global Array<Numeric> arrClose20; Events /*OnInit(){ String tSymbol = \"rb888.SHFE\"; TimeStamp startDate= PreTradingDay(tSymbol, CurrentDate, Days); SubscribeBar(tSymbol, \"1m\", startDate, 0); }*/ OnBarOpen(ArrayRef<Integer> indexs) { If(CurrentBar == 0 || TrueDate(0) != TrueDate(1)) ArrayInsert(arrClose20, 0, Open); If(GetArraySize(arrClose20) > Days) ArrayErase(arrClose20, GetArraySize(arrClose20) - 1, 1); } OnBar(ArrayRef<Integer> indexs) { Integer i; Numeric TodayClose = CloseD(0); If(Time == 0.145700) arrClose20[0] = TodayClose; If(BarStatus != 2) Return; //PrintClear; For i = 0 To Days - 1 { If(i == 0) If(Time == 0.145700) Print("今天 Close = " + Text(arrClose20[i])); Else Print("今天 Open = " + Text(arrClose20[i])); Else Print("前" + Text(i) + "天 Close = " + Text(arrClose20[i])); } Print(TextArray(arrClose20)); }

这段逻辑是用open维护数组里面的数据,然后用这段代码If(Time == 0.145700) arrClose20[0] = TodayClose;在收盘前把open替换成close。这里的open可以理解为“占位”的作用

回复:谢谢老师,意思ONBAR和onbaropen是同时运行的是吧,这样才能保证每天的替代过去