EMA method

dynamic EMA(
  1. dynamic datas,
  2. dynamic p
)

指标EMA(指数平均数)独立指标 输出数组和datas一样长且数据全部有效

Implementation

EMA(datas, p) {
  List outdatas = [];
  num k1 = 2 / (p + 1);
  num k2 = 1 - k1;
  int size = datas.length;
  outdatas.add(datas[0]);
  for (var i = 1; i < size; i++) {
    if (Tools.isNumber(datas[i]) && Tools.isNumber(outdatas[i - 1])) {
      //datas当前值和outdatas上一个值必须都是数字
      outdatas.add(k1 * datas[i] + k2 * outdatas[i - 1]);
    } else {
      outdatas.add(datas[i]); //非数字无法计算平均数
    }
  }
  return outdatas;
}