Refactor buy_coin()
This commit is contained in:
parent
140d65eae0
commit
b88f779926
|
|
@ -114,42 +114,30 @@ pub struct MarketCapIndex {
|
||||||
// buy coin
|
// buy coin
|
||||||
pub async fn buy_coin(
|
pub async fn buy_coin(
|
||||||
client: &Client,
|
client: &Client,
|
||||||
coin_price_vec: &Vec<CoinPriceData>,
|
|
||||||
exchange_info_vec: &Vec<ExchangeInfo>,
|
exchange_info_vec: &Vec<ExchangeInfo>,
|
||||||
trade_fee_vec: &Vec<TradeFee>,
|
trade_fee_vec: &Vec<TradeFee>,
|
||||||
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||||
// check conditions for buying
|
// check conditions for buying
|
||||||
set_is_tradable().await;
|
|
||||||
let mut is_tradable = get_is_tradable().await;
|
|
||||||
let mut suggested_coin = get_suggested_coin_list().await;
|
let mut suggested_coin = get_suggested_coin_list().await;
|
||||||
let mut delete_condition = String::from("WHERE ");
|
let mut delete_condition = String::from("WHERE ");
|
||||||
let mut is_exist_delete_symbol: bool = false;
|
let mut is_exist_delete_symbol: bool = false;
|
||||||
|
|
||||||
if is_tradable == true && !suggested_coin.is_empty() {
|
if !suggested_coin.is_empty() {
|
||||||
// && (signal_decision.first().unwrap().decision == "KEEP" || signal_decision.first().unwrap().decision == "UP") {
|
// && (signal_decision.first().unwrap().decision == "KEEP" || signal_decision.first().unwrap().decision == "UP") {
|
||||||
let unit_trade_usdt = fetch_unit_trade_usdt().await;
|
let unit_trade_usdt = fetch_unit_trade_usdt().await;
|
||||||
|
|
||||||
let server_epoch = server_epoch().await;
|
let server_epoch = server_epoch().await;
|
||||||
let mut filtered_suggested_coin_vec: Vec<&SuggestedCoin> = Vec::new();
|
let mut filtered_suggested_coin_vec: Vec<&SuggestedCoin> = Vec::new();
|
||||||
|
|
||||||
// filtering symbols to buy
|
// filtering symbols to buy
|
||||||
suggested_coin.reverse();
|
|
||||||
for element in &suggested_coin {
|
for element in &suggested_coin {
|
||||||
let price_index = coin_price_vec
|
|
||||||
.iter()
|
|
||||||
.position(|x| *x.symbol == element.symbol);
|
|
||||||
|
|
||||||
if price_index.is_some()
|
if element.already_buy == 0
|
||||||
&& element.already_buy == 0
|
|
||||||
&& server_epoch - element.registered_server_epoch <= 600_000
|
&& server_epoch - element.registered_server_epoch <= 600_000
|
||||||
// 600_000 (600 secs = 10 mins)
|
// 600_000 (600 secs = 10 mins)
|
||||||
{
|
{
|
||||||
filtered_suggested_coin_vec.push(element);
|
filtered_suggested_coin_vec.push(element);
|
||||||
delete_condition.push_str("id = ");
|
|
||||||
delete_condition.push_str(element.id.to_string().as_str());
|
|
||||||
delete_condition.push_str(" OR ");
|
|
||||||
is_exist_delete_symbol = false;
|
is_exist_delete_symbol = false;
|
||||||
} else if server_epoch - element.registered_server_epoch >= 1_800_000 {
|
} else if server_epoch - element.registered_server_epoch > 600_000 {
|
||||||
delete_condition.push_str("id = ");
|
delete_condition.push_str("id = ");
|
||||||
delete_condition.push_str(element.id.to_string().as_str());
|
delete_condition.push_str(element.id.to_string().as_str());
|
||||||
delete_condition.push_str(" OR ");
|
delete_condition.push_str(" OR ");
|
||||||
|
|
@ -157,7 +145,10 @@ pub async fn buy_coin(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !filtered_suggested_coin_vec.is_empty() {
|
set_is_tradable().await;
|
||||||
|
let mut is_tradable = get_is_tradable().await;
|
||||||
|
|
||||||
|
if is_tradable == true && !filtered_suggested_coin_vec.is_empty() {
|
||||||
let available_usdt = get_available_usdt().await;
|
let available_usdt = get_available_usdt().await;
|
||||||
let vec_len = Decimal::new(filtered_suggested_coin_vec.len() as i64, 0);
|
let vec_len = Decimal::new(filtered_suggested_coin_vec.len() as i64, 0);
|
||||||
let mut used_usdt = Decimal::new(0, 8);
|
let mut used_usdt = Decimal::new(0, 8);
|
||||||
|
|
@ -253,37 +244,6 @@ pub async fn buy_coin(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// delete the coin record in [suggested_coin_list]
|
|
||||||
if is_exist_delete_symbol == true {
|
|
||||||
delete_condition.pop();
|
|
||||||
delete_condition.pop();
|
|
||||||
delete_condition.pop();
|
|
||||||
delete_condition.pop();
|
|
||||||
delete_condition.push(';');
|
|
||||||
let suggested_coin_list_table_name = String::from("suggested_coin_list");
|
|
||||||
delete_record(&suggested_coin_list_table_name, &delete_condition)
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let server_epoch = server_epoch().await;
|
|
||||||
let mut filtered_suggested_coin_vec: Vec<&SuggestedCoin> = Vec::new();
|
|
||||||
|
|
||||||
// filtering symbols to buy
|
|
||||||
for element in &suggested_coin {
|
|
||||||
if ((element.registerer != 5 || element.registerer != 6)
|
|
||||||
&& server_epoch - element.registered_server_epoch > 65_000)
|
|
||||||
|| ((element.registerer == 5 || element.registerer == 6)
|
|
||||||
&& server_epoch - element.registered_server_epoch >= 65_000)
|
|
||||||
{
|
|
||||||
// 10000 (10 secs), 600_000 (10 mins), 7_200_000 (120 mins)
|
|
||||||
filtered_suggested_coin_vec.push(element);
|
|
||||||
delete_condition.push_str("id = ");
|
|
||||||
delete_condition.push_str(element.id.to_string().as_str());
|
|
||||||
delete_condition.push_str(" OR ");
|
|
||||||
is_exist_delete_symbol = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete the coin record in [suggested_coin_list]
|
// delete the coin record in [suggested_coin_list]
|
||||||
if is_exist_delete_symbol == true {
|
if is_exist_delete_symbol == true {
|
||||||
|
|
@ -297,7 +257,8 @@ pub async fn buy_coin(
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user