瀏覽代碼

使用截取到的最大值而不是和。

skyffire 1 年之前
父節點
當前提交
6483fda42a
共有 1 個文件被更改,包括 10 次插入4 次删除
  1. 10 4
      src/msv.rs

+ 10 - 4
src/msv.rs

@@ -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 {
             // 下标合法性判断
             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 {
                 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;
         }
+        // 智能填充数据
+        if max_size == Decimal::ZERO && final_depth_data.len() > 0 {
+            max_size = final_depth_data.last().unwrap()[1];
+        }
 
         // 如果这两个值为0,则代表这mills_back毫秒以内是没有数据的,填充0数据,使得x轴是完整的
         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_depth_data.push(vec![index_timestamp, total_size]);
+        final_depth_data.push(vec![index_timestamp, max_size]);
 
         // ---------------- 最后的时间处理 -----------------
         // 对时间进行步近