callMIKE method

dynamic callMIKE(
  1. dynamic high,
  2. dynamic low,
  3. dynamic close,
  4. dynamic n,
)

n = 10

Implementation

callMIKE(high, low, close, n) {
  //有问题
  var i = 0, len = close.length;
  var maAry = [];
  for (i = 0; i < len; i++) {
    maAry.add((high[i] + low[i] + close[i]) / 3);
  }
  var ma = MA(maAry, n);
  var hhv = HHV(high, n);
  var llv = LLV(low, n);
  var hlc = REF(ma, 1), hv = EMA(hhv, 3), lv = EMA(llv, 3);
  var v1 = [], v2 = [], v3 = [], v4 = [], v5 = [], v6 = [];

  // HLC:=REF(MA((HIGH+LOW+CLOSE)/3,N),1);
  // HV:=EMA(HHV(HIGH,N),3);
  // LV:=EMA(LLV(LOW,N),3);
  // STOR:EMA(2*HV-LV,3);
  // MIDR:EMA(HLC+HV-LV,3);
  // WEKR:EMA(HLC*2-LV,3);
  // WEKS:EMA(HLC*2-HV,3);
  // MIDS:EMA(HLC-HV+LV,3);
  // STOS:EMA(2*LV-HV,3);
  for (i = 0; i < len; i++) {
    if (Tools.isNaN(hv[i]) || Tools.isNaN(lv[i])) {
      v1.add('-');
      v6.add('-');
    } else {
      v1.add(2 * hv[i] - lv[i]);
      v6.add(2 * lv[i] - hv[i]);
    }

    if (Tools.isNaN(hlc[i]) || Tools.isNaN(hv[i]) || Tools.isNaN(lv[i])) {
      v2.add('-');
      v5.add('-');
    } else {
      v2.add(hlc[i] + hv[i] - lv[i]);
      v5.add(hlc[i] - hv[i] + lv[i]);
    }

    if (Tools.isNaN(hlc[i]) || Tools.isNaN(lv[i])) {
      v3.add('-');
    } else {
      v3.add(hlc[i] * 2 - lv[i]);
    }

    if (Tools.isNaN(hlc[i]) || Tools.isNaN(hv[i])) {
      v4.add('-');
    } else {
      v4.add(hlc[i] * 2 - hv[i]);
    }
  }

  var obj = {};
  obj['STOR'] = EMA(v1, 3);
  obj['MIDR'] = EMA(v2, 3);
  obj['WEKR'] = EMA(v3, 3);
  obj['WEKS'] = EMA(v4, 3);
  obj['MIDS'] = EMA(v5, 3);
  obj['STOS'] = EMA(v6, 3);
  return obj;
}