Kaynağa Gözat

优化一些名字问题。

skyffire 1 yıl önce
ebeveyn
işleme
8e5a7794b6
1 değiştirilmiş dosya ile 19 ekleme ve 69 silme
  1. 19 69
      src/hl_pr_utile.rs

+ 19 - 69
src/hl_pr_utile.rs

@@ -3,15 +3,12 @@ use std::collections::{BTreeMap};
 use std::fs::File;
 use std::io::Write;
 use std::str::FromStr;
-use chrono::{NaiveDateTime, Utc};
+use chrono::{Utc};
 use handlebars::Handlebars;
 use rust_decimal::Decimal;
-use rust_decimal::prelude::{FromPrimitive, ToPrimitive};
 use rust_decimal_macros::dec;
-use serde_json::{json, Value};
 use tracing::{info};
 use crate::export_ticker::get_gate_ticker_info;
-use crate::http::request::get;
 
 #[derive(Debug)]
 pub struct Ticker {
@@ -96,54 +93,16 @@ pub fn parse_str_to_seconds(name_html: &mut String, time_str: &str) -> i64 {
     }
 }
 
-pub async fn pull_gate_ticker(ticker_map: &mut BTreeMap<u64, Ticker>, start_at: i64, end_at: i64, time_interval: i64, symbol: String) {
-    let mut from_time = start_at;
-    loop {
-        let to_time = from_time + time_interval;
-        let time_str_start_view = NaiveDateTime::from_timestamp_millis(((from_time) + 8 * 3600) * 1000).unwrap().format("%Y-%m-%d %H:%M:%S%.3f").to_string();
-        let time_str_end_view = NaiveDateTime::from_timestamp_millis(((to_time) + 8 * 3600) * 1000).unwrap().format("%Y-%m-%d %H:%M:%S%.3f").to_string();
-        info!("----拉取时间:{:?}---{:?}", time_str_start_view, time_str_end_view);
-        //查询数据按照间隔20分钟
-        let url = "https://api.gateio.ws/api/v4/futures/usdt/trades";
-        let params = json!({
-            "contract": symbol,
-            "from": from_time,
-            "to": to_time,
-            "limit": "1000"
-        });
-        let res_data = get(url, params.to_string(), None).await;
-        if res_data.code == "200" {
-            let res_data_str = res_data.data;
-
-            let json_value: Value = serde_json::from_str(&res_data_str).unwrap();
-            if let Some(tickers) = json_value.as_array() {
-                info!("数据数量:{:?}", tickers.len());
-                // 倒序插入,可以保证使用最新的ticker进行计算,最新的ticker可以代表行情的一个最新情况
-                for ticker_json in tickers.iter().rev() {
-                    let key_f64 = ticker_json["create_time_ms"].as_f64().unwrap() * 1000.0;
-                    let key = key_f64.to_u64().unwrap();
-
-                    let price_str = ticker_json["price"].as_str().unwrap();
-                    let amount_i64 = ticker_json["size"].as_i64().unwrap();
-                    let ticker = Ticker {
-                        create_time: Decimal::from_u64(key).unwrap(),
-                        price: Decimal::from_str(price_str).unwrap(),
-                        amount: Decimal::from_i64(amount_i64).unwrap(),
-                    };
-
-                    // key是id,value是json
-                    ticker_map.insert(key, ticker);
-                }
-            }
-
-            from_time = from_time + time_interval;
-        } else {
-            info!("数据请求错误: {:?},重试。", res_data);
-        }
-
-        if from_time > end_at {
-            break;
-        }
+pub async fn pull_gate_ticker(ticker_map: &mut BTreeMap<u64, Ticker>, start_at: i64, end_at: i64, symbol: String) {
+    let trades_list = get_gate_ticker_info(&symbol, &start_at.to_string(), &end_at.to_string()).await;
+    for trades in trades_list {
+        let key = trades.create_time.parse::<u64>().unwrap();
+        let ticker = Ticker {
+            create_time: Decimal::from_str(&trades.create_time).unwrap(),
+            price: Decimal::from_str(&trades.price).unwrap(),
+            amount:Decimal::from_str(&trades.size).unwrap(),
+        };
+        ticker_map.insert(key, ticker);
     }
 }
 
@@ -215,21 +174,10 @@ pub fn calc_gate_ticker_amplitude(ticker_map: BTreeMap<u64, Ticker>) -> BTreeMap
     return amplitude_map;
 }
 
-pub async fn export_gate_ticker(start_at: i64, end_at: i64, time_interval: i64, symbol: String) -> BTreeMap<Decimal, Decimal> {
+pub async fn export_gate_ticker(start_at: i64, end_at: i64, symbol: String) -> BTreeMap<Decimal, Decimal> {
     let mut ticker_map: BTreeMap<u64, Ticker> = BTreeMap::new();
-
-    let trades_list = get_gate_ticker_info(&symbol,&start_at.to_string(),&end_at.to_string()).await;
-    for trades in trades_list{
-        let key = trades.create_time.parse::<u64>().unwrap();
-        let ticker = Ticker {
-            create_time: Decimal::from_str(&trades.create_time).unwrap(),
-            price: Decimal::from_str(&trades.price).unwrap(),
-            amount:Decimal::from_str(&trades.size).unwrap(),
-        };
-        ticker_map.insert(key, ticker);
-    }
     // 获取ticker数据
-    // pull_gate_ticker(&mut ticker_map, start_at, end_at, time_interval, symbol).await;
+    pull_gate_ticker(&mut ticker_map, start_at, end_at, symbol).await;
     let len = ticker_map.len();
     info!("网络层执行完毕,总数据量条数:{}。", len);
 
@@ -241,7 +189,7 @@ pub async fn export_gate_ticker(start_at: i64, end_at: i64, time_interval: i64,
     return amplitude_map;
 }
 
-pub async fn export_ticker(symbol: &str, exchange: &str, time_range_str: &str, time_interval: i64) {
+pub async fn export_ticker(symbol: &str, exchange: &str, time_range_str: &str) {
     // 只是显示在网页上,记录选择的时间周期
     let mut name_html = Default::default();
     // 从此刻往前算时间
@@ -254,7 +202,7 @@ pub async fn export_ticker(symbol: &str, exchange: &str, time_range_str: &str, t
     let amplitude_map;
     match exchange.to_uppercase().as_str() {
         "GATE" => {
-            amplitude_map = export_gate_ticker(start_at, end_at, time_interval, symbol.to_uppercase()).await;
+            amplitude_map = export_gate_ticker(start_at, end_at, symbol.to_uppercase()).await;
         }
         _ => {
             panic!("交易所输入错误!")
@@ -262,6 +210,7 @@ pub async fn export_ticker(symbol: &str, exchange: &str, time_range_str: &str, t
     };
 
     export_html(name_html.as_str(),
+                symbol,
                 amplitude_map.keys().cloned().collect(),
                 amplitude_map.values().cloned().collect())
 }
@@ -269,15 +218,16 @@ pub async fn export_ticker(symbol: &str, exchange: &str, time_range_str: &str, t
 #[allow(dead_code)]
 //生成html
 pub fn export_html(name_html: &str,
+                   symbol: &str,
                    x_values: Vec<Decimal>,
                    y_values: Vec<Decimal>) {
     info!("正在生成网页,请稍候……");
-    let path = "./新版无敌大数据ticker.html".to_string();
+    let path = format!("./{}新版无敌大数据ticker.html", symbol);
     // 创建 Handlebars 实例
     let mut handlebars = Handlebars::new();
 
     let data = serde_json::json!({
-        "chart_title": format!("{}新版无敌大数据Ticker", name_html),
+        "chart_title": format!("{}的{}新版无敌大数据Ticker", name_html, symbol),
         "x_values": x_values,
         "y_values": y_values,
     });