calc method

  1. @override
void calc(
  1. List<KLineEntity> dataList
)
override

Implementation

@override
void calc(List<KLineEntity> dataList) {
  /// Formula:
  ///   Multiplier = 2 / (period + 1)
  ///   EMA = (Closing Price - Previous EMA) * Multiplier + Previous EMA
  List<double> emaValues = List<double>.filled(calcParams.length, 0);
  for (int i = 0; i < dataList.length; i++) {
    KLineEntity entity = dataList[i];
    List<double> ema = List<double>.filled(calcParams.length, 0);
    for (int j = 0; j < calcParams.length; ++j) {
      final p = calcParams[j];
      double multiplier = 2 / (p + 1);
      if (i == 0) {
        emaValues[j] = entity.close;
      } else {
        emaValues[j] =
            (entity.close - emaValues[j]) * multiplier + emaValues[j];
      }
      ema[j] = emaValues[j];
    }

    entity.emaValueList = ema;
  }
}