瀏覽代碼

.ln() fix

skyffire 1 年之前
父節點
當前提交
d2cd146809
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      src/symbol_filter.rs

+ 5 - 1
src/symbol_filter.rs

@@ -76,7 +76,11 @@ fn calc_volatility_div_price_diff(records: Value) -> Decimal {
         let volume = Decimal::from_str(record["volume"].as_str().unwrap().to_string().as_str()).unwrap();
         let mid = (record_high + record_low) / Decimal::TWO;
 
-        volatility += ((volume * mid).ln() * Decimal::ONE_HUNDRED * (record_high - record_low) / mid).ln();
+        volatility += if volume * mid == Decimal::ZERO {
+             Decimal::ZERO
+        } else {
+            ((volume * mid).ln() * Decimal::ONE_HUNDRED * (record_high - record_low) / mid).ln()
+        }
     }
 
     let mut vdpd = volatility;