浏览代码

优化算法。

skyffire 1 年之前
父节点
当前提交
f11578e7f4
共有 1 个文件被更改,包括 8 次插入4 次删除
  1. 8 4
      src/msv.rs

+ 8 - 4
src/msv.rs

@@ -145,8 +145,8 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
         }
 
         // 获取到range毫秒以后的预定价格,计算回去的幅度
-        let mut future_ref_price_sum = trade.price;
-        let mut future_ref_count = Decimal::ONE;
+        let mut future_ref_price_sum = Decimal::ZERO;
+        let mut future_ref_count = Decimal::ZERO;
         let mut future_range_index = index + 1;
         loop {
             // 下标合法性判断
@@ -158,7 +158,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
             let range_time = flag_trade.time - trade.time;
 
             // 判断该ticker是否是range ms以外
-            if range_time > mills_back && future_ref_count > Decimal::TEN {
+            if range_time > mills_back && future_ref_count > Decimal::ZERO {
                 break;
             }
 
@@ -166,7 +166,11 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
             future_ref_price_sum += flag_trade.price;
             future_ref_count += Decimal::ONE;
         }
-        let future_ref_price = future_ref_price_sum / future_ref_count;
+        let future_ref_price = if future_ref_count < Decimal::ONE {
+            trade.price
+        } else {
+            future_ref_price_sum / future_ref_count
+        };
 
         // 计算过去至多100条数据的sigma值 sigma^2 = (1 / (tn-t0))*sum((S(tk) - S(tk-1)) ^ 2)
         let mut sigma_index = index - 1;