后台模型设置了“快速计算”,发现输出的barpos值并不等于“快速”设置的值。请教“快速”设置的原理
[此贴子已经被作者于2017/12/11 15:07:01编辑过]
1.
可以限定参与计算的K线数目,从而减少运算量,提高指标执行效率;2. 设置为0表示全部计算,就是说客户端本地有多少根K线,系统就会把他们都用于计算,如果设置为100,那么系统就会只将最后100根K线用于计算,更早的K线都是不参与指标运算的。
我本以为,限制了参与运算的k线数量,比如设置为100,输出barpos值会恒等于100。结果是barpos的值是逐渐增加的。可能我把“快速计算”与后台设置中的“使用指定数量数据刷新计算”混淆了。二者都可以提高计算速度,请解释一下二者的区别。
[此贴子已经被作者于2017/12/11 15:36:45编辑过]
1、使用逐K模式,每来一个分笔数据,则都是从第一根K线开始进行指标运算,使用了快速计算这里的数量限定,则只在最近的多少根k线上进行指标运算,提高了运算效率。序列模式则不存在这个问题,每来一个分笔都只在最新的K线上运算。
2、后台中指定的数量,这个是限定参与计算的K线数量,在后台中的最后一根K上输出barpos是固定的,即为使用指定数量刷新的K线数。每增加新的一根K线,就会把最前面的K线剔除出计算。图表上输出是每新来一根K线,barpos就会逐渐增加1,而不会剔除。
3、两者的概念不一样,前者是指定参加指标运算的历史K线数量,后者是指定被使用的K线数量。
大体明白了。另,如果设定了快速计算的公式中有跨周期引用,被引用公式是否需要也设置快速计算?
不需要,这种方式不够灵活,你可以使用stkindiex的方式引用自己需要范围内的数据