calc method

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

Implementation

@override
void calc(List<KLineEntity> dataList) {
  final periods = calcParams.first;
  final p = periods - 1;
  double tpSum = 0;
  final tpList = [];
  for (int i = 0; i < dataList.length; i++) {
    final kline = dataList[i];
    kline.cci = null;
    final tp = (kline.high + kline.low + kline.close) / 3;
    tpSum += tp;
    tpList.add(tp);
    if (i >= p) {
      final maTp = tpSum / periods;
      final sliceTpList = tpList.sublist(i - p, i + 1);
      final sum = sliceTpList.fold(0.0, (s, tp) {
        s += (tp - maTp).abs();
        return s;
      });
      final md = sum / periods;
      kline.cci = md != 0 ? ((tp - maTp) / md / 0.015) : 0;
      final agoTp = (dataList[i - p].high +
              dataList[i - p].low +
              dataList[i - p].close) /
          3;
      tpSum -= agoTp;
    }
  }
}