多数据源条件下,都是1分钟数据源,如何让onbarclose与onbaropen里的代码只运行一次?

多数据源条件下,都是1分钟数据源,如何让onbarclose与onbaropen里的代码只运行一次?onbaropen里面有一个对全局变量递减的算法,本意是每过1分钟数值减1,结果多数据源条件下,当前bar初值为5,直接降为0了,怎么解决?

OnBarOpen(ArrayRef<Integer> indexes) { CurrentBarIndex = BarsSinceToday(); // 更新时间冷却计数器 range[i=0:1] { for i = 0 to GetArraySize(timerecord1) - 1 { if(timerecord1[i] > 0) { timerecord1[i] = timerecord1[i] - 1; Alerted[i] = 0; } mark[i] = 0; } } }即使是这样写,onbaropen也是运行了很多次。timerecord1本身是个时间冷却计数器,但是多数据源条件下,很快就归零了,怎么让onbaropen和onbarclose里的数据只运行一次呢

用setbaseperiod设置一下对齐每个图层都设置周期数建议使用最小公约周期数

回复:周期就是1分钟周期,全部是1分钟

回复:那就都用frequency

回复:实盘状态下,如何让onbar里的代码,至少是部分代码,只运行一次呢?比如这种时间冷却计数器每分钟只减1,如何实现呢

回复:请问这个有什么作用呢,没有看懂,多谢指点!

回复:如果你是同一个合约直接在oninit里用range包着对全图层执行setbaseperiod(frequency)如果你是不同合约,那实盘是没办法统一执行的因为不同合约的行情不是一起收到的,有先后到底的顺序,就会驱动多次onbaropen和onbarclose

回复:我能不能写一个全局变量,控制onbaropen里的代码段只执行一次呢?

回复:这个问题能不能似乎取决于你是否能设计出对应的状态控制算法