calc method
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;
}
}