|
|
@@ -1,6 +1,7 @@
|
|
|
use std::str::FromStr;
|
|
|
use chrono::{NaiveDateTime};
|
|
|
use rust_decimal::Decimal;
|
|
|
+use rust_decimal::prelude::ToPrimitive;
|
|
|
use tracing::{error, info};
|
|
|
use crate::export::html::ExportExchangeTickerInfo;
|
|
|
use crate::struct_standard::Trades;
|
|
|
@@ -21,12 +22,12 @@ async fn main() {
|
|
|
logs::init_log_with_info();
|
|
|
|
|
|
let config = utils::utils::get_config_info("./config.toml");
|
|
|
- let clone_config = config.clone();
|
|
|
- if http::proxy::ParsingDetail::http_enable_proxy(clone_config.proxy_address) {
|
|
|
+ let config_clone = config.clone();
|
|
|
+ if http::proxy::ParsingDetail::http_enable_proxy(config_clone.proxy_address) {
|
|
|
info!("检测有代理配置,配置走代理");
|
|
|
}
|
|
|
// robot_data::robot_data_standard::standard_robot_info("localhost_test_account_fresh", "1702010000", "1702031000").await;
|
|
|
- let symbol = clone_config.symbol;
|
|
|
+ let symbol = config_clone.symbol;
|
|
|
let start_at = NaiveDateTime::parse_from_str(&config.range_time[0].clone(), "%Y-%m-%d %H:%M:%S").unwrap().timestamp() - 8 * 3600;
|
|
|
let end_at = NaiveDateTime::parse_from_str(&config.range_time[1].clone(), "%Y-%m-%d %H:%M:%S").unwrap().timestamp() - 8 * 3600;
|
|
|
|
|
|
@@ -38,46 +39,49 @@ async fn main() {
|
|
|
let exchange_result = match exchange_up.as_str() {
|
|
|
"BINANCE" => {
|
|
|
let recall_ticker_info = handle_ticker::get_binance_ticker_info(&symbol, &recall_start_at.to_string(), &end_at.to_string()).await;
|
|
|
- let ticker_info: Vec<Trades> = recall_ticker_info.iter().filter(|item| item.create_time.parse::<i64>().unwrap() >= start_at).cloned().collect();
|
|
|
+ let ticker_info: Vec<Trades> = recall_ticker_info.iter().filter(|item| item.create_time.parse::<i64>().unwrap() >= start_at * 1000).cloned().collect();
|
|
|
let mut max_price = Decimal::ZERO;
|
|
|
for trades in ticker_info.clone() {
|
|
|
let trades_price = Decimal::from_str(&trades.price).unwrap();
|
|
|
max_price = if trades_price > max_price { trades_price } else { max_price };
|
|
|
};
|
|
|
+ let start_index = recall_ticker_info.len() - ticker_info.len() - config_clone.recall_max_count.to_usize().unwrap();
|
|
|
ExportExchangeTickerInfo {
|
|
|
name: exchange.to_string(),
|
|
|
ticker_info,
|
|
|
- recall_ticker_info,
|
|
|
+ recall_ticker_info: recall_ticker_info[start_index..].to_vec(),
|
|
|
max_price: max_price.to_string(),
|
|
|
}
|
|
|
}
|
|
|
"GATE" => {
|
|
|
let recall_ticker_info = handle_ticker::get_gate_ticker_info(&symbol, &recall_start_at.to_string(), &end_at.to_string()).await;
|
|
|
- let ticker_info: Vec<Trades> = recall_ticker_info.iter().filter(|item| item.create_time.parse::<i64>().unwrap() >= start_at).cloned().collect();
|
|
|
+ let ticker_info: Vec<Trades> = recall_ticker_info.iter().filter(|item| item.create_time.parse::<i64>().unwrap() >= start_at * 1000).cloned().collect();
|
|
|
let mut max_price = Decimal::ZERO;
|
|
|
for trades in ticker_info.clone() {
|
|
|
let trades_price = Decimal::from_str(&trades.price).unwrap();
|
|
|
max_price = if trades_price > max_price { trades_price } else { max_price };
|
|
|
};
|
|
|
+ let start_index = recall_ticker_info.len() - ticker_info.len() - config_clone.recall_max_count.to_usize().unwrap();
|
|
|
ExportExchangeTickerInfo {
|
|
|
name: exchange.to_string(),
|
|
|
ticker_info,
|
|
|
- recall_ticker_info,
|
|
|
+ recall_ticker_info: recall_ticker_info[start_index..].to_vec(),
|
|
|
max_price: max_price.to_string(),
|
|
|
}
|
|
|
}
|
|
|
"OKX" => {
|
|
|
let recall_ticker_info = handle_ticker::get_okx_ticker_info(&symbol, &recall_start_at.to_string(), &end_at.to_string()).await;
|
|
|
- let ticker_info: Vec<Trades> = recall_ticker_info.iter().filter(|item| item.create_time.parse::<i64>().unwrap() >= start_at).cloned().collect();
|
|
|
+ let ticker_info: Vec<Trades> = recall_ticker_info.iter().filter(|item| item.create_time.parse::<i64>().unwrap() >= start_at * 1000).cloned().collect();
|
|
|
let mut max_price = Decimal::ZERO;
|
|
|
for trades in ticker_info.clone() {
|
|
|
let trades_price = Decimal::from_str(&trades.price).unwrap();
|
|
|
max_price = if trades_price > max_price { trades_price } else { max_price };
|
|
|
};
|
|
|
+ let start_index = recall_ticker_info.len() - ticker_info.len() - config_clone.recall_max_count.to_usize().unwrap();
|
|
|
ExportExchangeTickerInfo {
|
|
|
name: exchange.to_string(),
|
|
|
ticker_info,
|
|
|
- recall_ticker_info,
|
|
|
+ recall_ticker_info: recall_ticker_info[start_index..].to_vec(),
|
|
|
max_price: max_price.to_string(),
|
|
|
}
|
|
|
}
|