Эх сурвалжийг харах

去除卖一卖一价格显示、新增价差显示。

skyffire 1 жил өмнө
parent
commit
368870e2e8
2 өөрчлөгдсөн 9 нэмэгдсэн , 48 устгасан
  1. 3 7
      README.MD
  2. 6 41
      src/msv.rs

+ 3 - 7
README.MD

@@ -31,13 +31,9 @@
             ["1715653817313", "1"],         // [时间戳, 流动性量]
             ["1715653817313", "1"],         // [时间戳, 流动性量]
             ["1715653817316", "0"],         // [时间戳, 流动性量]
             ["1715653817316", "0"],         // [时间戳, 流动性量]
         ],
         ],
-        "a1s": [                            // 卖一集合
-            ["1715653817313", "1"],         // [时间戳, 卖一价]
-            ["1715653817316", "2"],         // [时间戳, 卖一价]
-        ],
-        "b1s": [                            // 买一集合                            
-            ["1715653817313", "1"],         // [时间戳, 买一价]
-            ["1715653817316", "0"],         // [时间戳, 买一价]
+        "spreads": [                        // 价差集合                           
+            ["1715653817313", "1"],         // [时间戳, 价差1]
+            ["1715653817316", "0"],         // [时间戳, 价差2]
         ],
         ],
         "total_size": 3,                    // 总trades条数
         "total_size": 3,                    // 总trades条数
         "result_size": 1,                   // 指标数据条数
         "result_size": 1,                   // 指标数据条数

+ 6 - 41
src/msv.rs

@@ -178,19 +178,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
     let mut depth_index = 0;
     let mut depth_index = 0;
     let mut final_depth_data: Vec<Vec<Decimal>> = vec![];
     let mut final_depth_data: Vec<Vec<Decimal>> = vec![];
 
 
-    let mut final_a1s_data: Vec<Vec<Decimal>> = vec![];
-    let mut final_b1s_data: Vec<Vec<Decimal>> = vec![];
-    let a1_first = if simple_depths.len() > 0 {
-        simple_depths[0].a1
-    } else {
-        Decimal::ZERO
-    };
-    let b1_first = if simple_depths.len() > 0 {
-        simple_depths[0].b1
-    } else {
-        Decimal::ZERO
-    };
-    let mid_price = (a1_first + b1_first) / Decimal::TWO;
+    let mut final_spread_data: Vec<Vec<Decimal>> = vec![];
 
 
     let mut index_timestamp = Decimal::from_i64(start_time).unwrap();
     let mut index_timestamp = Decimal::from_i64(start_time).unwrap();
     let last_timestamp = Decimal::from_i64(end_time).unwrap();
     let last_timestamp = Decimal::from_i64(end_time).unwrap();
@@ -199,6 +187,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
         let mut max_msv_data = Decimal::ZERO;
         let mut max_msv_data = Decimal::ZERO;
         let mut max_msv_diss_data = Decimal::ZERO;
         let mut max_msv_diss_data = Decimal::ZERO;
 
 
+        // ====================================== 数据生产 ===============================================
         // 获取时间范围内的波动率数据
         // 获取时间范围内的波动率数据
         loop {
         loop {
             // 下标合法性判断
             // 下标合法性判断
@@ -229,7 +218,6 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
         // 获取时间范围内的深度数据、买一及卖一价数据
         // 获取时间范围内的深度数据、买一及卖一价数据
         let mut max_size = Decimal::ZERO;
         let mut max_size = Decimal::ZERO;
         let mut min_size = Decimal::ONE_THOUSAND * Decimal::ONE_THOUSAND;
         let mut min_size = Decimal::ONE_THOUSAND * Decimal::ONE_THOUSAND;
-        let mut max_spread_index = 0usize;
         let mut max_spread = Decimal::ZERO;
         let mut max_spread = Decimal::ZERO;
         loop {
         loop {
             // 下标合法性判断
             // 下标合法性判断
@@ -246,36 +234,14 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
             min_size = min(min_size, depth.size);
             min_size = min(min_size, depth.size);
             // 这一秒的差价最大值
             // 这一秒的差价最大值
             let spread = depth.a1 - depth.b1;
             let spread = depth.a1 - depth.b1;
-            if spread > max_spread {
-                max_spread = spread;
-                max_spread_index = depth_index;
-            }
+            max_spread = max(spread, max_spread);
             // 下标步近
             // 下标步近
             depth_index += 1;
             depth_index += 1;
         }
         }
 
 
         // ====================================== 智能填充数据 ===============================================
         // ====================================== 智能填充数据 ===============================================
-        // 价差及买一、卖一数据处理
-        if simple_depths.len() > 0 {
-            // 数据填充
-            if max_spread_index == 0 {
-                if final_a1s_data.len() > 0 && final_b1s_data.len() > 0 {
-                    final_a1s_data.push(vec![index_timestamp, final_a1s_data.last().unwrap()[1]]);
-                    final_b1s_data.push(vec![index_timestamp, final_b1s_data.last().unwrap()[1]]);
-                } else {
-                    final_a1s_data.push(vec![index_timestamp, Decimal::ZERO]);
-                    final_b1s_data.push(vec![index_timestamp, Decimal::ZERO]);
-                }
-            } else {
-                let depth = &simple_depths[max_spread_index];
-
-                final_a1s_data.push(vec![index_timestamp, depth.a1 - mid_price]);
-                final_b1s_data.push(vec![index_timestamp, depth.b1 - mid_price]);
-            }
-        } else {
-            final_a1s_data.push(vec![index_timestamp, Decimal::ZERO]);
-            final_b1s_data.push(vec![index_timestamp, Decimal::ZERO]);
-        }
+        // 价差
+        final_spread_data.push(vec![index_timestamp, max_spread]);
 
 
         // 流动性数据叠加
         // 流动性数据叠加
         let rst_size = if (max_size == Decimal::ZERO || min_size == Decimal::ONE_THOUSAND * Decimal::ONE_THOUSAND) && final_depth_data.len() > 0 {
         let rst_size = if (max_size == Decimal::ZERO || min_size == Decimal::ONE_THOUSAND * Decimal::ONE_THOUSAND) && final_depth_data.len() > 0 {
@@ -318,8 +284,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
     json!({
     json!({
         "msv": final_msv_data,
         "msv": final_msv_data,
         "liqs": final_depth_data,
         "liqs": final_depth_data,
-        "a1s": final_a1s_data,
-        "b1s": final_b1s_data,
+        "spreads": final_spread_data,
         "total_size": total_size,
         "total_size": total_size,
         "result_size": result_size,
         "result_size": result_size,
     })
     })