Przeglądaj źródła

开单大小模拟。

skyffire 1 rok temu
rodzic
commit
c6dedd1735
1 zmienionych plików z 9 dodań i 7 usunięć
  1. 9 7
      src/msv.rs

+ 9 - 7
src/msv.rs

@@ -223,7 +223,6 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
         // 获取时间范围内的深度数据、买一及卖一价数据
         let mut max_size = Decimal::ZERO;
         let mut min_size = Decimal::ONE_THOUSAND * Decimal::ONE_THOUSAND;
-        let mut max_spread = Decimal::ZERO;
         loop {
             // 下标合法性判断
             if depth_index >= simple_depths.len() {
@@ -237,17 +236,11 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
             // 这一秒的深度最大值、最小值
             max_size = max(max_size, depth.size);
             min_size = min(min_size, depth.size);
-            // 这一秒的差价最大值
-            let spread = depth.a1 - depth.b1;
-            max_spread = max(spread, max_spread);
             // 下标步近
             depth_index += 1;
         }
 
         // ====================================== 智能填充数据 ===============================================
-        // 价差
-        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 {
             final_depth_data.last().unwrap()[1]
@@ -264,6 +257,15 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
         };
         final_depth_data.push(vec![index_timestamp, rst_size]);
 
+        // 建议开仓距离
+        let mut rst_spread = if rst_size == Decimal::ZERO {
+            Decimal::ZERO
+        } else {
+            dec!(100000) / rst_size
+        };
+        rst_spread.rescale(6);
+        final_spread_data.push(vec![index_timestamp, rst_spread]);
+
         // 波动率数据处理
         // 如果这两个值为0,则代表这mills_back毫秒以内是没有数据的,填充0数据,使得x轴是完整的
         if max_msv_data == Decimal::ZERO {