callEMV method

dynamic callEMV(
  1. dynamic high,
  2. dynamic low,
  3. dynamic vol,
  4. dynamic p,
  5. dynamic p2,
)

p = 14, p2 = 9

Implementation

callEMV(high, low, vol, p, p2) {
  //无参数

  // A=(今日最高+今日最低)/2
  // B=(前日最高+前日最低)/2
  // C=今日最高-今日最低
  // EM=(A-B)*C/今日成交额
  // EMV=N日内EM的累和
  // MAEMV=EMV的M日的简单移动平均

  var obj = {};
  var size = high.length;
  var EMV = [], MAEMV = [];
  var i = 0;
  var j = 0;
  for (i = 0; i < size; i++) {
    if (i > p - 1) {
      // 不能= 因为 b要访问前一根
      dynamic sum = 0.0;
      for (j = p - 1; j >= 0; j--) {
        var a = (high[i - j] + low[i - j]) / 2;
        var b = (high[i - j - 1] + low[i - j - 1]) / 2;
        var c = high[i - j] - low[i - j];
        sum += ((a - b) * c) / vol[i - j];
      }
      EMV.add(sum);
    } else {
      EMV.add("-");
    }
  }
  MAEMV = MA(EMV, p2);
  obj['EMV'] = EMV;
  obj['MAEMV'] = MAEMV;
  return obj;
}