setLastKlineData method
String
setLastKlineData(
- dynamic codeId,
- dynamic interval,
- dynamic data
)
Implementation
String setLastKlineData(codeId, interval, data) {
if (codeId != currentCodeId || interval != currentInterval) {
return '';
}
//如果该周期没有数据 则无法处理直接return
if (klineData.isEmpty) return '';
//判断是更新还是增加还是无效tick
var obj = callTickToKline(lastBeginT, data['time'], interval);
if (obj['type'] == 0) {
//更新最后一根数据
var lobj = klineData[klineData.length - 1];
//更新最高最低值
if (data['close'] > lobj['high']) {
lobj['high'] = data['close'];
} else if (data['close'] < lobj['low']) {
lobj['low'] = data['close'];
}
//更新收盘价
lobj['close'] = data['close'];
//更新持仓量
lobj['volume'] = data['volume'];
} else if (obj['type'] == 1) {
//新增一根数据
klineData.add({
'time': obj['not'],
'open': data['close'],
'high': data['close'],
'low': data['close'],
'close': data['close'],
'volume': data['volume'],
'amo':data['amo'],
'codeId': codeId,
'interval': interval,
});
//k线长度
kDataL = klineData.length;
//最后一根k线开始时间
lastBeginT = obj['not']; //最后一根周期的开始时间
} else {
//无效tick
}
return obj['type'] == 1 ? 'ADD' : 'UPDATE';
}