callCDP method

dynamic callCDP(
  1. dynamic high,
  2. dynamic low,
  3. dynamic close
)

Implementation

callCDP(high, low, close) {
  var CDP = [], AH = [], NH = [], NL = [], AL = [], i = 0, len = close.length;
  var ch = REF(high, 1), cl = REF(low, 1), cc = REF(close, 1);
  dynamic v1 = '-', v2 = '-', v3 = '-', v4 = '-', v5 = '-';
  for (i = 0; i < len; i++) {
    // CDP:(CH+CL+CC)/3;
    // AH:2*CDP+CH-2*CL;
    // NH:CDP+CDP-CL;
    // NL:CDP+CDP-CH;
    // AL:2*CDP-2*CH+CL;
    v1 = (ch[i] + cl[i] + cc[i]) / 3;
    if (Tools.isNumber(v1)) {
      CDP.add(v1);
    } else {
      CDP.add("-");
    }
    v2 = 2 * v1 + ch[i] - 2 * cl[i];
    if (Tools.isNumber(v2)) {
      AH.add(v2);
    } else {
      AH.add("-");
    }
    v3 = v1 + v1 - cl[i];
    if (Tools.isNumber(v3)) {
      NH.add(v3);
    } else {
      NH.add("-");
    }
    v4 = v1 + v1 - ch[i];
    if (Tools.isNumber(v4)) {
      NL.add(v4);
    } else {
      NL.add("-");
    }
    v5 = 2 * v1 - 2 * ch[i] + cl[i];
    if (Tools.isNumber(v5)) {
      AL.add(v5);
    } else {
      AL.add("-");
    }
  }
  var obj = {};
  obj['CDP'] = CDP;
  obj['AH'] = AH;
  obj['NH'] = NH;
  obj['NL'] = NL;
  obj['AL'] = AL;
  return obj;
}