Jelajahi Sumber

修复下标错位的问题。

skyffire 1 tahun lalu
induk
melakukan
c27cca91b3
1 mengubah file dengan 9 tambahan dan 4 penghapusan
  1. 9 4
      src/msv.rs

+ 9 - 4
src/msv.rs

@@ -198,7 +198,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
         let mut sigma = sigma_square.sqrt().unwrap();
         sigma.rescale(6);
         // 计算过去至多100个sigma值的平均值
-        if sigma_data.len() > 0 {
+        let sigma_ma = if sigma_data.len() > 0 {
             let mut sigma_ma_index = sigma_data.len();
             let mut sigma_total = Decimal::ZERO;
             let mut sigma_count = Decimal::ZERO;
@@ -215,10 +215,10 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
             let mut sigma_ma = sigma_total / sigma_count;
             sigma_ma.rescale(6);
 
-            sigma_data.push(vec![trade.time, sigma, sigma_ma]);
+            sigma_ma
         } else {
-            sigma_data.push(vec![trade.time, sigma, sigma]);
-        }
+            sigma
+        };
 
         // ==================== 波动逻辑计算 ====================
         let last_price = trade.price;
@@ -255,14 +255,19 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
 
                     epr_data.remove(epr_data.len() - 1);
                     epr_data.push(vec![trade.time, epr]);
+
+                    sigma_data.remove(sigma_data.len() - 1);
+                    sigma_data.push(vec![trade.time, sigma, sigma_ma]);
                 }
             } else {
                 msv_data.push(vec![trade.time, rate, dissociation]);
                 epr_data.push(vec![trade.time, epr]);
+                sigma_data.push(vec![trade.time, sigma, sigma_ma]);
             }
         } else {
             msv_data.push(vec![trade.time, rate, dissociation]);
             epr_data.push(vec![trade.time, epr]);
+            sigma_data.push(vec![trade.time, sigma, sigma_ma]);
         }
     }