calASIDatas method

dynamic calASIDatas(
  1. dynamic close,
  2. dynamic open,
  3. dynamic high,
  4. dynamic low,
  5. dynamic p1,
  6. dynamic p2,
)

p1 = 26, p2 = 10

Implementation

calASIDatas(close, open, high, low, p1, p2) {
  var resultObj = {};
  var size = close.length;
  var i = 0;
  var refArr = REF(close, 1);
  var refLowArr = REF(low, 1);
  var refOpenArr = REF(open, 1);
  var aa = [];
  var bb = [];
  var cc = [];
  var dd = [];
  var tempArr = [];
  var rArr = [];
  var xArr = [];
  var siArr = [];
  var asiArr = [];
  var asitArr = [];
  for (i = 0; i < size; i++) {
    aa.add((high[i] - refArr[i]).abs());
    bb.add((low[i] - refArr[i]).abs());
    cc.add((high[i] - refLowArr[i]).abs());
    dd.add((refArr[i] - refOpenArr[i]).abs());

    if (bb[i] > cc[i] && bb[i] > aa[i]) {
      tempArr.add(bb[i] + aa[i] / 2 + dd[i] / 4);
    } else {
      tempArr.add(cc[i] + dd[i] / 4);
    }

    if (aa[i] > bb[i] && aa[i] > cc[i]) {
      rArr.add(aa[i] + bb[i] / 2 + dd[i] / 4);
    } else {
      rArr.add(tempArr[i]);
    }
    //X的值
    xArr.add(close[i] -
        refArr[i] +
        (close[i] - open[i]) / 2 +
        refArr[i] -
        refOpenArr[i]);
    //计算SI
    siArr.add(((16 * xArr[i]) / rArr[i]) * Tools.max(aa[i], bb[i]));
  }
  asiArr = SUM(siArr, p1);
  asitArr = MA(asiArr, p2);
  resultObj['ASI'] = asiArr;
  resultObj['ASIT'] = asitArr;
  return resultObj;
}