Prechádzať zdrojové kódy

分数计算公式调整15。

skyffire 1 rok pred
rodič
commit
3904176be4
2 zmenil súbory, kde vykonal 5 pridanie a 13 odobranie
  1. 1 1
      README.MD
  2. 4 12
      src/rank.rs

+ 1 - 1
README.MD

@@ -39,7 +39,7 @@ score = msv_score + liquity_score + frequency_score
 当msv_abs_total = 0时, msv_score = 0
    
 2. liquity_score计算规则
-liquity_score = (liquity_avg / 1000) * 20
+liquidity_score = (liquidity_avg / 1000) * 20
 
 3. frequency_score计算规则
 frequency_score = (effective_count / 100) * 20

+ 4 - 12
src/rank.rs

@@ -1,5 +1,5 @@
 use std::collections::HashMap;
-use rust_decimal::{Decimal, MathematicalOps};
+use rust_decimal::{Decimal};
 use rust_decimal_macros::dec;
 use serde::{Deserialize, Serialize};
 use serde_json::Value;
@@ -79,6 +79,7 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
         };
         liquidity_avg.rescale(0);
 
+        // ======================== 最终计算 =========================
         // msv_score计算规则
         let mut msv_score = if msv_abs_total > Decimal::ZERO && epr_total > Decimal::ZERO {
             (msv_abs_avg * epr_total / msv_abs_total) * SIXTY
@@ -88,20 +89,11 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
         msv_score.rescale(2);
 
         // liquidity_score
-        let liquidity_k = liquidity_avg / Decimal::ONE_THOUSAND;
-        let mut liquidity_score = if liquidity_k > Decimal::TEN {
-            TWENTY + Decimal::ONE / (Decimal::ONE + Decimal::TEN - liquidity_k)
-        } else {
-            Decimal::TEN * liquidity_k.sqrt().unwrap()
-        };
+        let mut liquidity_score = (liquidity_avg / Decimal::ONE_THOUSAND) * TWENTY;
         liquidity_score.rescale(2);
 
         // frequency_score计算规则
-        let mut frequency_score = if effective_count > Decimal::ZERO {
-            (Decimal::ONE + effective_count).ln()
-        } else {
-            Decimal::ZERO
-        };
+        let mut frequency_score = (effective_count / Decimal::ONE_HUNDRED) * TWENTY;
         frequency_score.rescale(2);
 
         let mut score = msv_score * liquidity_score * frequency_score;