请问在DolphinDB database中,我想计算某2列的当前值,与另一列的前面20个数做比较,然后算出是否在它的区间的百分比,有什么函数能用吗?
举例来说,如下图所示:
比如6月17日这行数据的前面20行数据的close值(即图中标1这列),若其中有75%的数据是在upAvgPrice(图中标2)和upAvgPrice(图中标3)这两个值的区间中,那么signal(图中标4)的值我会设为true,否则设为false。
这是一个滑动窗口的计算问题。我们使用高阶函数moving来解决问题。对于每一个窗口的处理,写一个自定义函数rangeTest来处理,返回true或false。
def rangeTest(close, downlimit, uplimit){
size = close.size() - 1
return between(close.subarray(0, size), downlimit.last() : uplimit.last()).sum() >= size*0.75
}
update t set signal = moving(rangeTest, [close, downAvgPrice, upAvgPrice], 21)