|
@@ -1,9 +1,13 @@
|
|
|
use std::str::FromStr;
|
|
use std::str::FromStr;
|
|
|
|
|
+use std::time::Duration;
|
|
|
|
|
+
|
|
|
use rust_decimal::Decimal;
|
|
use rust_decimal::Decimal;
|
|
|
use rust_decimal_macros::dec;
|
|
use rust_decimal_macros::dec;
|
|
|
use tracing::{error, info};
|
|
use tracing::{error, info};
|
|
|
|
|
+
|
|
|
use crate::binance_swap::binance_swap_standard;
|
|
use crate::binance_swap::binance_swap_standard;
|
|
|
use crate::gate_swap::gate_swap_standard;
|
|
use crate::gate_swap::gate_swap_standard;
|
|
|
|
|
+use crate::okx_swap::okx_swap_standard;
|
|
|
use crate::struct_standard::{AggTrades, Trades};
|
|
use crate::struct_standard::{AggTrades, Trades};
|
|
|
|
|
|
|
|
pub async fn get_gate_ticker_info(symbol: &str, start_at: &str, end_at: &str) -> Vec<Trades> {
|
|
pub async fn get_gate_ticker_info(symbol: &str, start_at: &str, end_at: &str) -> Vec<Trades> {
|
|
@@ -84,9 +88,75 @@ pub async fn get_binance_ticker_info(symbol: &str, start_at: &str, end_at: &str)
|
|
|
// symbol: agg_trades.symbol,
|
|
// symbol: agg_trades.symbol,
|
|
|
// create_time: agg_trades.create_time,
|
|
// create_time: agg_trades.create_time,
|
|
|
// size: agg_trades.size,
|
|
// size: agg_trades.size,
|
|
|
- // price: agg_trades.price,
|
|
|
|
|
|
|
+ // price: agg_trades.price,z
|
|
|
// })
|
|
// })
|
|
|
// }
|
|
// }
|
|
|
}
|
|
}
|
|
|
ticker_info_list
|
|
ticker_info_list
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+pub(crate) async fn get_okx_ticker_info(symbol: &str, start_at: &str, end_at: &str) -> Vec<Trades> {
|
|
|
|
|
+ // let mut start_at_d = Decimal::from_str(start_at).unwrap();
|
|
|
|
|
+ let end_at_d = Decimal::from_str(end_at).unwrap();
|
|
|
|
|
+
|
|
|
|
|
+ // let end_time = if end_at_d - start_at_d > dec!(3600) { (start_at_d + dec!(3600)).to_string() } else { end_at_d.to_string() };
|
|
|
|
|
+ // start_at_d = if start_at != "" { format!("{}{}", start_at, "000") } else { "".to_string() }.parse().unwrap();
|
|
|
|
|
+ let end_at_d_str = if end_at != "" { format!("{}{}", end_at_d.to_string(), "000") } else { "".to_string() };
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ info!("正在查询 okx 信息,请稍后!");
|
|
|
|
|
+ info!("当前时间---{:?}---{:?}",start_at,end_at);
|
|
|
|
|
+
|
|
|
|
|
+ let mut list_array: Vec<Trades> = vec![];
|
|
|
|
|
+ let ticker_one = okx_swap_standard::standard_history_candles(symbol, "", end_at_d_str.as_str()).await.unwrap();
|
|
|
|
|
+ if ticker_one.len() > 0 {
|
|
|
|
|
+ let ticker_0 = ticker_one.get(0).cloned();
|
|
|
|
|
+ let ticker_size = ticker_one.get(ticker_one.len() - 1).cloned();
|
|
|
|
|
+ if ticker_one.len() > 0 {
|
|
|
|
|
+ let mut create_time_0 = ticker_0.unwrap().create_time;
|
|
|
|
|
+ let mut create_time_size = ticker_size.unwrap().create_time;
|
|
|
|
|
+ info!("第一次查询范畴--{:?}---{:?}",create_time_0,create_time_size);
|
|
|
|
|
+ list_array.extend(ticker_one.clone());
|
|
|
|
|
+
|
|
|
|
|
+ let mut i = 1;
|
|
|
|
|
+ loop {
|
|
|
|
|
+ tokio::time::sleep(Duration::from_millis(500)).await;
|
|
|
|
|
+ i = i + 1;
|
|
|
|
|
+ let start_at_str = format!("{}000", start_at);
|
|
|
|
|
+ // info!("比较:{:?}-{:?}",start_at_str , create_time_size);
|
|
|
|
|
+ if start_at_str < create_time_size {
|
|
|
|
|
+ let ticker_one2 = okx_swap_standard::standard_history_candles(symbol, "", create_time_size.as_ref()).await.unwrap();
|
|
|
|
|
+
|
|
|
|
|
+ let ticker_0_2 = ticker_one2.get(0).cloned();
|
|
|
|
|
+ let ticker_size_2 = ticker_one2.get(ticker_one.len() - 1).cloned();
|
|
|
|
|
+
|
|
|
|
|
+ create_time_0 = ticker_0_2.unwrap().create_time;
|
|
|
|
|
+ create_time_size = ticker_size_2.unwrap().create_time;
|
|
|
|
|
+ info!("第{:?}次查询范畴--{:?}---{:?}",i,create_time_0,create_time_size);
|
|
|
|
|
+ list_array.extend(ticker_one2.clone());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ info!("查询完毕!");
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ info!("没有数据,无法拿到时间戳")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ let mut set = std::collections::HashSet::new();
|
|
|
|
|
+ list_array.clone().into_iter().filter(|e| set.insert(e.clone())).collect()
|
|
|
|
|
+ //
|
|
|
|
|
+ // list_array = list_array.iter().filter(|item| item.create_time <= end_at.to_string()).cloned().collect();
|
|
|
|
|
+ // let mut ticker_info_list: Vec<Trades> = vec![];
|
|
|
|
|
+ // for agg_trades in list_array.clone() {
|
|
|
|
|
+ // ticker_info_list.push(Trades {
|
|
|
|
|
+ // id: agg_trades.start_id,
|
|
|
|
|
+ // symbol: agg_trades.symbol,
|
|
|
|
|
+ // create_time: agg_trades.create_time,
|
|
|
|
|
+ // size: agg_trades.size,
|
|
|
|
|
+ // price: agg_trades.price,
|
|
|
|
|
+ // })
|
|
|
|
|
+ // }
|
|
|
|
|
+ // ticker_info_list
|
|
|
}
|
|
}
|