calSRDMDatas method

dynamic calSRDMDatas(
  1. dynamic high,
  2. dynamic low,
  3. dynamic N
)

SRDM

Implementation

calSRDMDatas(high, low, N) {
  var i = 0;
  var len = high.length;
  var highRef = REF(high, 1);
  var lowRef = REF(low, 1);
  var dmzArr = [];
  var dmfArr = [];
  for (i = 0; i < len; i++) {
    var dmz = high[i] + low[i] <= highRef[i] + lowRef[i]
        ? 0.0
        : Tools.max((high[i] - highRef[i]).abs(), (low[i] - lowRef[i]).abs());
    dmzArr.add(dmz);
    var dmf = high[i] + low[i] >= highRef[i] + lowRef[i]
        ? 0.0
        : Tools.max((high[i] - highRef[i]).abs(), (low[i] - lowRef[i]).abs());
    dmfArr.add(dmf);
  }
  var admz = MA(dmzArr, 10);
  var admf = MA(dmfArr, 10);
  var srdmArr = [];
  len = admz.length;
  for (i = 0; i < len; i++) {
    dynamic srdm = 0.0;
    if (Tools.isNaN(admz[i])) {
      srdm = '-';
    } else {
      if (admz[i] > admf[i]) {
        srdm = (admz[i] - admf[i]) / admz[i];
      } else if (admz[i] == admf[i]) {
        srdm = 0.0;
      } else {
        srdm = (admz[i] - admf[i]) / admf[i];
      }
    }
    srdmArr.add(srdm);
  }
  var asrdm = SMA(srdmArr, N, 1);
  var obj = {};
  obj['SRDM'] = srdmArr;
  obj['ASRDM'] = asrdm;
  return obj;
}