|
|
@@ -25,7 +25,7 @@ pub struct Rank {
|
|
|
const TWENTY: Decimal = dec!(20);
|
|
|
const SIXTY: Decimal = dec!(60);
|
|
|
const TWO_HUNDRED: Decimal = dec!(200);
|
|
|
-const TEN_THOUSAND: Decimal = dec!(10000);
|
|
|
+// const TEN_THOUSAND: Decimal = dec!(10000);
|
|
|
|
|
|
// 根据最终的msv计算排行榜
|
|
|
pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String, Indicators>>) -> Value {
|
|
|
@@ -81,18 +81,18 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
|
|
|
|
|
|
// msv_score计算规则
|
|
|
let mut msv_score = if msv_abs_total > Decimal::ZERO {
|
|
|
- effective_count * (epr_total / msv_abs_total) * SIXTY * msv_abs_avg
|
|
|
+ effective_count * (epr_total / msv_abs_total) * SIXTY * msv_abs_max
|
|
|
} else {
|
|
|
Decimal::ZERO
|
|
|
};
|
|
|
msv_score.rescale(2);
|
|
|
|
|
|
// liquidity_score
|
|
|
- let mut liquidity_score = (liquidity_avg / Decimal::ONE_THOUSAND) * TWENTY;
|
|
|
+ let mut liquidity_score = (liquidity_avg / Decimal::ONE_THOUSAND) * TWENTY * msv_abs_max;
|
|
|
liquidity_score.rescale(2);
|
|
|
|
|
|
// frequency_score计算规则
|
|
|
- let mut frequency_score = (effective_count / Decimal::ONE_HUNDRED) * TWENTY;
|
|
|
+ let mut frequency_score = (effective_count / Decimal::ONE_HUNDRED) * TWENTY * msv_abs_max;
|
|
|
frequency_score.rescale(2);
|
|
|
|
|
|
let score = msv_score + liquidity_score + frequency_score;
|