calARBRDatas method

dynamic calARBRDatas(
  1. dynamic close,
  2. dynamic open,
  3. dynamic high,
  4. dynamic low,
  5. dynamic p,
  6. dynamic a,
  7. dynamic b,
)

计算ARBR指标 @param close 收盘点 @param open 开盘点 @param high 最高点 @param low 最低点 @param p = 26 SUM回溯周期(1 <= p1 <= 300) @param a = 70 参考线 @param b = 150 参考线

Implementation

calARBRDatas(close, open, high, low, p, a, b) {
  var resultObj = {};
  var size = close.length;
  var i = 0;
  var refArr = REF(close, 1);
  var arArr = [];
  var brArr = [];
  var aArr = [];
  var bArr = [];
  var hoArr = [];
  var olArr = [];
  var arLeft = [];
  var arRight = [];
  var brLeft = [];
  var brRight = [];
  var brLeftTemp = [];
  var brRightTemp = [];
  for (i = 0; i < size; i++) {
    hoArr.add(high[i] - open[i]);
    olArr.add(open[i] - low[i]);
    brLeftTemp.add(Tools.max(0.0, high[i] - refArr[i]));
    brRightTemp.add(Tools.max(0.0, refArr[i] - low[i]));
  }
  arLeft = SUM(hoArr, p);
  arRight = SUM(olArr, p);
  brLeft = SUM(brLeftTemp, p);
  brRight = SUM(brRightTemp, p);
  for (i = 0; i < size; i++) {
    if (Tools.isNaN(arRight[i])) {
      arArr.add(0.0);
    } else {
      arArr.add((arLeft[i] / arRight[i]) * 100);
    }
    if (Tools.isNaN(brRight[i])) {
      brArr.add(0.0);
    } else {
      brArr.add((brLeft[i] / brRight[i]) * 100);
    }
    aArr.add(a);
    bArr.add(b);
  }
  resultObj['AR'] = arArr;
  resultObj['BR'] = brArr;
  resultObj['A'] = aArr;
  resultObj['B'] = bArr;
  return resultObj;
}