callBBIBOLL method

dynamic callBBIBOLL(
  1. dynamic close,
  2. dynamic n,
  3. dynamic m
)

n = 11, m = 6

Implementation

callBBIBOLL(close, n, m) {
  //有问题
  var BBIBOLL = [], UPR = [], DWN = [], i = 0, len = close.length;
  var ma3 = MA(close, 3),
      ma6 = MA(close, 6),
      ma12 = MA(close, 12),
      ma24 = MA(close, 24);
  dynamic v = 0, uv = 0, dv = 0;
  for (i = 0; i < len; i++) {
    if (Tools.isNaN(ma3[i]) ||
        Tools.isNaN(ma6[i]) ||
        Tools.isNaN(ma12[i]) ||
        Tools.isNaN(ma24[i])) {
      BBIBOLL.add("-");
    } else {
      v = (ma3[i] + ma6[i] + ma12[i] + ma24[i]) / 4;
      BBIBOLL.add(v);
    }
  }
  var std = STD(BBIBOLL, n);
  for (i = 0; i < len; i++) {
    v = BBIBOLL[i];
    if (Tools.isNaN(v) || Tools.isNaN(std[i])) {
      UPR.add("-");
      DWN.add("-");
    } else {
      uv = v + m * std[i];
      UPR.add(uv);
      dv = v - m * std[i];
      DWN.add(dv);
    }
  }
  var obj = {};
  obj['BBIBOLL'] = BBIBOLL;
  obj['UPR'] = UPR;
  obj['DWN'] = DWN;
  return obj;
}