Browse Source

修改为4小时

DESKTOP-NE65RNK\Citrus_limon 1 year ago
parent
commit
ac01f23a06

+ 1 - 1
src/binance_usdt_swap_data_listener.rs

@@ -67,7 +67,7 @@ pub async fn run_listener(is_shutdown_arc: Arc<AtomicBool>) {
     tokio::spawn(async move {
         loop {
             let end_timestamp = Utc::now().timestamp_millis();
-            let start_timestamp = end_timestamp - 60 * 1000 * 60;
+            let start_timestamp = end_timestamp - 60 * 1000 * 60 * 4;
             for symbol in symbols.clone() {
                 let trades_value = collect_special_trades_json(start_timestamp, end_timestamp, EXCHANGE_NAME, &symbol).await;
                 let trades = parse_json_to_trades(trades_value);

+ 1 - 1
src/coinex_usdt_swap_data_listener.rs

@@ -68,7 +68,7 @@ pub async fn run_listener(is_shutdown_arc: Arc<AtomicBool>) {
     tokio::spawn(async move {
         loop {
             let end_timestamp = Utc::now().timestamp_millis();
-            let start_timestamp = end_timestamp - 60 * 1000 * 60;
+            let start_timestamp = end_timestamp - 60 * 1000 * 60 * 4;
             for symbol in symbols.clone() {
                 let trades_value = collect_special_trades_json(start_timestamp, end_timestamp, EXCHANGE_NAME, &symbol).await;
                 let trades = parse_json_to_trades(trades_value);

+ 1 - 1
src/gate_usdt_swap_data_listener.rs

@@ -70,7 +70,7 @@ pub async fn run_listener(is_shutdown_arc: Arc<AtomicBool>) {
     tokio::spawn(async move {
         loop {
             let end_timestamp = Utc::now().timestamp_millis();
-            let start_timestamp = end_timestamp - 60 * 1000 * 60;
+            let start_timestamp = end_timestamp - 60 * 1000 * 60 * 4;
             for symbol in symbols.clone() {
                 let trades_value = collect_special_trades_json(start_timestamp, end_timestamp, EXCHANGE_NAME, &symbol).await;
                 let trades = parse_json_to_trades(trades_value);

+ 1 - 1
src/mexc_usdt_swap_data_listener.rs

@@ -72,7 +72,7 @@ pub async fn run_listener(is_shutdown_arc: Arc<AtomicBool>) {
     tokio::spawn(async move {
         loop {
             let end_timestamp = Utc::now().timestamp_millis();
-            let start_timestamp = end_timestamp - 60 * 1000 * 60;
+            let start_timestamp = end_timestamp - 60 * 1000 * 60 * 4;
             for symbol in symbols.clone() {
                 let trades_value = collect_special_trades_json(start_timestamp, end_timestamp, EXCHANGE_NAME, &symbol).await;
                 let trades = parse_json_to_trades(trades_value);

+ 1 - 1
src/phemex_usdt_swap_data_listener.rs

@@ -76,7 +76,7 @@ pub async fn run_listener(is_shutdown_arc: Arc<AtomicBool>) {
     tokio::spawn(async move {
         loop {
             let end_timestamp = Utc::now().timestamp_millis();
-            let start_timestamp = end_timestamp - 60 * 1000 * 60;
+            let start_timestamp = end_timestamp - 60 * 1000 * 60 * 4;
             for symbol in loc_symbols.clone() {
                 let trades_value = collect_special_trades_json(start_timestamp, end_timestamp, EXCHANGE_NAME, &symbol).await;
                 let trades = parse_json_to_trades(trades_value);

+ 11 - 2
src/rank.rs

@@ -24,6 +24,7 @@ pub struct Rank {
     liquidity_avg: Decimal,
     is_binance: bool,
 }
+pub
 
 const ONE_QUARTER: Decimal = dec!(0.25);
 const ONE_PERCENT: Decimal = dec!(0.01);
@@ -46,15 +47,23 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
         let mut effective_epr_count = Decimal::ZERO;
         let mut epr_total = Decimal::ZERO;
         let mut epr_max = Decimal::ZERO;
+
+        let start_time = indicators.msv[0][0];
+        let end_time = indicators.msv[indicators.msv.len() - 1][0];
+        let timing_difference = end_time - start_time;
+        // 0.175 0.225 0.275 0.325
+
         for (index, value) in indicators.msv.iter().enumerate() {
             let msv_abs_value = value[1].abs();
 
             if msv_abs_value <= Decimal::ZERO {
                 continue;
             }
+            let a_scale = ((value[0] - start_time) / timing_difference).round_dp(2) + dec!(0.25);
 
+            let scale = if a_scale > Decimal::ONE { Decimal::ONE } else { a_scale };
             msv_count += Decimal::ONE;
-            msv_abs_total += msv_abs_value;
+            msv_abs_total += msv_abs_value * scale;
 
             if msv_abs_value > msv_abs_max {
                 msv_abs_max = msv_abs_value
@@ -63,7 +72,7 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
             let epr = &indicators.eprs[index];
             if epr[1] > msv_abs_value * ONE_QUARTER || epr[1].abs() > ONE_PERCENT {
                 effective_epr_count += Decimal::ONE;
-                epr_total += epr[1];
+                epr_total += epr[1] * scale;
 
                 if value[1] > epr_max {
                     epr_max = value[1]