Procházet zdrojové kódy

不限制price_diff

skyffire před 1 rokem
rodič
revize
a90d892909
1 změnil soubory, kde provedl 9 přidání a 14 odebrání
  1. 9 14
      src/symbol_filter.rs

+ 9 - 14
src/symbol_filter.rs

@@ -69,12 +69,12 @@ fn calc_volatility_div_price_diff(records: Value) -> Decimal {
         return Decimal::ZERO
     }
 
-    let first_record = records_array[records_array.len() - 1].clone();
-    let last_record = records_array[0].clone();
-    let open = Decimal::from_str(first_record["open"].as_str().unwrap().to_string().as_str()).unwrap();
-    let close = Decimal::from_str(last_record["close"].as_str().unwrap().to_string().as_str()).unwrap();
+    // let first_record = records_array[records_array.len() - 1].clone();
+    // let last_record = records_array[0].clone();
+    // let open = Decimal::from_str(first_record["open"].as_str().unwrap().to_string().as_str()).unwrap();
+    // let close = Decimal::from_str(last_record["close"].as_str().unwrap().to_string().as_str()).unwrap();
 
-    let price_diff = (Decimal::ONE_HUNDRED * (close - open) / open).abs();
+    // let price_diff = (Decimal::ONE_HUNDRED * (close - open) / open).abs();
     let mut volatility = Decimal::ZERO;
     let mut up = Decimal::ZERO;
     let mut down = Decimal::ZERO;
@@ -93,16 +93,11 @@ fn calc_volatility_div_price_diff(records: Value) -> Decimal {
         }
     }
 
-    let mut vdpd = if price_diff.is_zero() {
-        Decimal::ONE_THOUSAND
+    let up_down_diff = (up - down).abs();
+    let mut vdpd = if up_down_diff.is_zero() {
+        Decimal::TWO * volatility
     } else {
-        let up_down_diff = (up - down).abs();
-
-        if up_down_diff.is_zero() {
-            Decimal::TWO * volatility / price_diff
-        } else {
-            (Decimal::ONE / up_down_diff) * volatility / price_diff
-        }
+        (Decimal::ONE / up_down_diff) * volatility
     };
     vdpd.rescale(6);