|
@@ -210,7 +210,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 获取时间范围内的深度数据
|
|
// 获取时间范围内的深度数据
|
|
|
- let mut total_size = Decimal::ZERO;
|
|
|
|
|
|
|
+ let mut max_size = Decimal::ZERO;
|
|
|
loop {
|
|
loop {
|
|
|
// 下标合法性判断
|
|
// 下标合法性判断
|
|
|
if depth_index >= simple_depths.len() {
|
|
if depth_index >= simple_depths.len() {
|
|
@@ -220,11 +220,17 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
|
|
|
if index_timestamp < simple_depths[depth_index].time {
|
|
if index_timestamp < simple_depths[depth_index].time {
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
- // 这一秒的所有深度数据求和
|
|
|
|
|
- total_size += simple_depths[depth_index].size;
|
|
|
|
|
|
|
+ // 这一秒的深度最大值
|
|
|
|
|
+ if simple_depths[depth_index].size > max_size {
|
|
|
|
|
+ max_size = simple_depths[depth_index].size;
|
|
|
|
|
+ }
|
|
|
// 下标步近
|
|
// 下标步近
|
|
|
depth_index += 1;
|
|
depth_index += 1;
|
|
|
}
|
|
}
|
|
|
|
|
+ // 智能填充数据
|
|
|
|
|
+ if max_size == Decimal::ZERO && final_depth_data.len() > 0 {
|
|
|
|
|
+ max_size = final_depth_data.last().unwrap()[1];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 如果这两个值为0,则代表这mills_back毫秒以内是没有数据的,填充0数据,使得x轴是完整的
|
|
// 如果这两个值为0,则代表这mills_back毫秒以内是没有数据的,填充0数据,使得x轴是完整的
|
|
|
if max_msv_data == Decimal::ZERO {
|
|
if max_msv_data == Decimal::ZERO {
|
|
@@ -235,7 +241,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
|
|
|
final_msv_data.push(vec![index_timestamp, max_msv_data, max_msv_diss_data]);
|
|
final_msv_data.push(vec![index_timestamp, max_msv_data, max_msv_diss_data]);
|
|
|
}
|
|
}
|
|
|
// 简易的深度数据处理
|
|
// 简易的深度数据处理
|
|
|
- final_depth_data.push(vec![index_timestamp, total_size]);
|
|
|
|
|
|
|
+ final_depth_data.push(vec![index_timestamp, max_size]);
|
|
|
|
|
|
|
|
// ---------------- 最后的时间处理 -----------------
|
|
// ---------------- 最后的时间处理 -----------------
|
|
|
// 对时间进行步近
|
|
// 对时间进行步近
|