Procházet zdrojové kódy

增加查询全部币对的ct_val

JiahengHe před 8 měsíci
rodič
revize
c9a96f11cf

+ 7 - 1
standard/src/binance_swap.rs

@@ -1,4 +1,4 @@
-use std::collections::BTreeMap;
+use std::collections::{BTreeMap, HashMap};
 use std::io::{Error, ErrorKind};
 use std::result::Result;
 use std::str::FromStr;
@@ -222,6 +222,12 @@ impl Platform for BinanceSwap {
         }
     }
 
+    async fn get_market_ct_val_map(&mut self) -> Result<HashMap<String, Decimal>, Error> {
+        let mut ct_val_map = HashMap::new();
+        // 所有ct_val为1
+        Ok(ct_val_map)
+    }
+
     async fn get_market(&mut self) -> Result<Market, Error> {
         let symbol_format = utils::format_symbol(self.symbol.clone(), "");
         let res_data = self.request.get_exchange_info().await;

+ 7 - 1
standard/src/bitget_swap.rs

@@ -1,4 +1,4 @@
-use std::collections::{BTreeMap};
+use std::collections::{BTreeMap, HashMap};
 use exchanges::bitget_swap_rest::BitgetSwapRest;
 use std::io::{Error, ErrorKind};
 use tokio::sync::mpsc::Sender;
@@ -359,6 +359,12 @@ impl Platform for BitgetSwap {
         self.get_market_symbol(self.symbol.clone()).await
     }
 
+    async fn get_market_ct_val_map(&mut self) -> Result<HashMap<String, Decimal>, Error> {
+        let mut ct_val_map = HashMap::new();
+        // 所有ct_val为1 暂只为交易量统计服务
+        Ok(ct_val_map)
+    }
+
     async fn get_market_symbol(&mut self, symbol: String) -> Result<Market, Error> {
         let symbol_format = utils::format_symbol(symbol.clone(), "");
         let response = self.request.get_contracts(symbol_format.clone()).await;

+ 7 - 1
standard/src/bybit_swap.rs

@@ -1,4 +1,4 @@
-use std::collections::{BTreeMap};
+use std::collections::{BTreeMap, HashMap};
 use std::io::{Error, ErrorKind};
 use std::str::FromStr;
 use tokio::sync::mpsc::Sender;
@@ -272,6 +272,12 @@ impl Platform for BybitSwap {
         }
     }
 
+    async fn get_market_ct_val_map(&mut self) -> Result<HashMap<String, Decimal>, Error> {
+        let mut ct_val_map = HashMap::new();
+        // 所有ct_val为1
+        Ok(ct_val_map)
+    }
+
     async fn get_market(&mut self) -> Result<Market, Error> {
         let symbol = self.symbol_uppercase.clone();
         let res_data = self.request.get_instruments_info(symbol.clone()).await;

+ 7 - 1
standard/src/coinex_swap.rs

@@ -1,4 +1,4 @@
-use std::collections::{BTreeMap};
+use std::collections::{BTreeMap, HashMap};
 use std::io::{Error, ErrorKind};
 use std::str::FromStr;
 use tokio::sync::mpsc::Sender;
@@ -301,6 +301,12 @@ impl Platform for CoinexSwap {
         }
     }
 
+    async fn get_market_ct_val_map(&mut self) -> Result<HashMap<String, Decimal>, Error> {
+        let mut ct_val_map = HashMap::new();
+        // 所有ct_val为1
+        Ok(ct_val_map)
+    }
+
     async fn get_market(&mut self) -> Result<Market, Error> {
         let symbol_array: Vec<&str> = self.symbol.split("_").collect();
         let symbol = format!("{}{}", symbol_array[0], symbol_array[1]);

+ 19 - 1
standard/src/gate_swap.rs

@@ -1,4 +1,4 @@
-use std::collections::{BTreeMap};
+use std::collections::{BTreeMap, HashMap};
 use std::io::{Error, ErrorKind};
 use std::str::FromStr;
 use tokio::sync::mpsc::Sender;
@@ -278,6 +278,24 @@ impl Platform for GateSwap {
         }
     }
 
+    async fn get_market_ct_val_map(&mut self) -> Result<HashMap<String, Decimal>, Error> {
+        let symbol_array: Vec<&str> = self.symbol.split("_").collect();
+        let res_data = self.request.get_market_details(symbol_array[1].to_string().to_lowercase()).await;
+
+        if res_data.code == 200 {
+            let mut ct_val_map = HashMap::new();
+            let res_data_json = res_data.data.as_array().unwrap();
+            for item in res_data_json.iter() {
+                let name = item["name"].as_str().unwrap();
+                let ct_val = Decimal::from_str(item["quanto_multiplier"].as_str().unwrap()).unwrap();
+                ct_val_map.insert(name.to_string(), ct_val);
+            }
+            Ok(ct_val_map)
+        } else {
+            Err(Error::new(ErrorKind::Other, res_data.to_string()))
+        }
+    }
+
     async fn get_market(&mut self) -> Result<Market, Error> {
         let symbol_array: Vec<&str> = self.symbol.split("_").collect();
         let res_data = self.request.get_market_details(symbol_array[1].to_string().to_lowercase()).await;

+ 4 - 1
standard/src/lib.rs

@@ -1,12 +1,13 @@
 use std::collections::{BTreeMap, HashMap};
 use std::{fmt, vec};
 use std::fmt::Formatter;
-use std::io::{Error};
+use std::io::{Error, ErrorKind};
 use async_trait::async_trait;
 use rust_decimal::Decimal;
 use serde_json::Value;
 use serde::{Serialize, Deserialize};
 use tokio::time::Instant;
+use tracing::error;
 use global::trace_stack::TraceStack;
 use crate::exchange::ExchangeEnum;
 
@@ -645,6 +646,8 @@ pub trait Platform {
     async fn get_record(&mut self, interval: String) -> Result<Vec<Record>, Error>;
     // 获取市场行情自定义交易对
     async fn get_ticker_symbol(&mut self, symbol: String) -> Result<Ticker, Error>;
+    // 获取所有币对的ct_val映射
+    async fn get_market_ct_val_map(&mut self) -> Result<HashMap<String, Decimal>, Error>;
     // 查询所有的市场信息
     async fn get_market(&mut self) -> Result<Market, Error>;
     // 查询所有的市场信息自定义交易对