(资料图)
强制指标缓存区初始化
赫兹量化中指标 "SYNT" 的缓存区连接到动态数组。
当指标首次启动, 缓存区被强制初始化。在 OnCalculate() 中继续初始化。为什么您需要在 OnCalculate() 里这么做, 而非在 OnInit?解释如下图解:
编辑
图例. 11. 数组在 OnCalculate() 中初始化
如您在图例.11 中所见, 这个 OnCalculate() 事件将在任何情况下发生, 而 OnInit() 仅在您通过 "更新" 命令更新图表时启动。所以, 数组初始化将会在 OnCalculate() 中进行:
//--- remember, that the "0" bar - is the left-most if(prev_calculated==0 || rates_total>prev_calculated+1) { //--- arrays initialization ArrayInitialize(OpenBuffer,0); ArrayInitialize(HighBuffer,0); ArrayInitialize(LowBuffer,0); ArrayInitialize(CloseBuffer,0); } //--- return value of prev_calculated for next call return(rates_total);