callVR method
dynamic
callVR(
- dynamic open,
- dynamic close,
- dynamic vol,
- dynamic p,
- dynamic p2,
p = 24, p2 = 6
Implementation
callVR(open, close, vol, p, p2) {
//无参数
// 1.AV=N日内股价上升日成交量;AVS=N日内ΣAV
// 2.BV=N日内股价下跌日成交量;BVS=N日内ΣBV
// 3.CV=N日内股价平盘日成交量;CVS=N日内ΣCV
// 4.VR=(AVS+1/2CVS)/(BVS+1/2CVS)
// 5.MAVR=VR的M日简单移动平均
// 6.参数N为24,参数M为6
var obj = {};
var size = open.length;
var VR = [], MAVR = [];
var i = 0;
var j = 0;
for (i = 0; i < size; i++) {
if (i > 0) {
// 不能= 因为 b要访问前一根
dynamic asum = 0.0, bsum = 0.0, csum = 0.0, jp = i > p - 1 ? p - 1 : i - 1;
for (j = jp; j >= 0; j--) {
asum += close[i - j] > open[i - j] ? vol[i - j] : 0.0;
bsum += close[i - j] < open[i - j] ? vol[i - j] : 0.0;
csum += close[i - j] == open[i - j] ? vol[i - j] : 0.0;
}
VR.add((asum + (1 / 2) * csum) / (bsum + (1 / 2) * csum));
if (VR[i] == double.infinity) {
VR[i] = 0.0;
}
} else {
VR.add("-");
}
}
MAVR = MA(VR, p2);
obj['VR'] = VR;
obj['MAVR'] = MAVR;
return obj;
}