diff --git a/src/future/mod.rs b/src/future/mod.rs index e3c90c4..74b5ca8 100644 --- a/src/future/mod.rs +++ b/src/future/mod.rs @@ -13,9 +13,7 @@ use crate::future::table_mgmt::select_listuped_positions; #[derive(Debug, PartialEq, Clone, sqlx::Type)] pub enum Position { - #[sqlx(rename = "long")] Long, - #[sqlx(rename = "short")] Short } @@ -124,7 +122,7 @@ pub struct PositionCoinList { pub status: String, pub symbol: String, pub order_id: u64, - pub position: Position, + pub position: String, pub registered_server_epoch: i64, pub transact_time: i64, pub close_time: i64, @@ -148,7 +146,7 @@ impl PositionCoinList { status: String::new(), symbol: String::new(), order_id: 0, - position: Position::Short, + position: String::new(), registered_server_epoch: 0, transact_time: 0, close_time: 0, diff --git a/src/future/order.rs b/src/future/order.rs index f5593e7..244f03a 100644 --- a/src/future/order.rs +++ b/src/future/order.rs @@ -20,7 +20,7 @@ use serde_json::Value; use sqlx::FromRow; use std::collections::HashMap; use tokio::time::*; -use super::{hmac_signature, REAL, SIMUL, TEST, RUNNING_MODE, FUTURES_URL, FUTURES_URL_TEST, API_KEY, API_KEY_TESTNET, Position, FuturesExchangeInfo, PositionCoinList, FuturesTradeFee, EntryCoinInfo, select_listuped_positions}; +use super::{hmac_signature, REAL, SIMUL, TEST, RUNNING_MODE, FUTURES_URL, FUTURES_URL_TEST, API_KEY, API_KEY_TESTNET, FuturesExchangeInfo, PositionCoinList, FuturesTradeFee, EntryCoinInfo, select_listuped_positions}; use crate::strategy_team::future_strategy; pub enum TimeInForce { @@ -108,7 +108,6 @@ pub async fn entry_position( // order the symbol based on base_qty_ordered and current_price limit_order_entry( - &element.position, &element, futures_exchange_info_map, trade_fee, @@ -130,7 +129,6 @@ pub async fn entry_position( } pub async fn limit_order_entry( - position: &Position, entry_coin_info: &PositionCoinList, exchange_info_map: &HashMap, trade_fee: Decimal, @@ -157,11 +155,7 @@ pub async fn limit_order_entry( (String::from("base_qty_fee_adjusted"), simul_base_qty_fee_adjusted.to_string()) ]; - if *position == Position::Long { - update_values.push((String::from("position"), String::from("Long"))); - } else if *position == Position::Short { - update_values.push((String::from("position"), String::from("Short"))); - } + update_values.push((String::from("position"), entry_coin_info.position.clone())); let update_condition = vec![(String::from("id"), entry_coin_info.id.to_string())]; update_record3(&update_table_name, &update_values, &update_condition) @@ -170,7 +164,7 @@ pub async fn limit_order_entry( sub_future_available_usdt(used_usdt).await; - println!("SIMUL {} {}", position.to_string(), entry_coin_info.symbol); + println!("SIMUL {} {}", entry_coin_info.position, entry_coin_info.symbol); } else { // building URL and API-keys let mut url = String::new(); @@ -191,7 +185,7 @@ pub async fn limit_order_entry( // add parameters into URL url_build.push_str("&symbol="); url_build.push_str(&entry_coin_info.symbol); - if *position == Position::Long { + if entry_coin_info.position.contains("Long") { url_build.push_str("&side=BUY"); } else { url_build.push_str("&side=SELL"); @@ -243,10 +237,10 @@ pub async fn limit_order_entry( update_values.push((String::from("status"), String::from("NEW"))); } else if T.get("status").unwrap().as_str().unwrap() == "FILLED" { update_values.push((String::from("status"), String::from("FILLED"))); - println!("{} {}", position.to_string(), entry_coin_info.symbol); + println!("{} {}", entry_coin_info.position, entry_coin_info.symbol); } else if T.get("status").unwrap().as_str().unwrap() == "PARTIALLY_FILLED" { update_values.push((String::from("status"), String::from("PARTIALLY_FILLED"))); - println!("Partially filled {} {}", position.to_string(), entry_coin_info.symbol); + println!("Partially filled {} {}", entry_coin_info.position, entry_coin_info.symbol); } let base_qty_ordered = rust_decimal::prelude::FromStr::from_str( diff --git a/src/future/table_mgmt.rs b/src/future/table_mgmt.rs index 9a6d15c..0d53fdf 100644 --- a/src/future/table_mgmt.rs +++ b/src/future/table_mgmt.rs @@ -1,4 +1,4 @@ -use super::{hmac_signature, REAL, SIMUL, TEST, RUNNING_MODE, FUTURES_URL, FUTURES_URL_TEST, API_KEY, API_KEY_TESTNET, Position, FuturesExchangeInfo, PositionCoinList, FuturesTradeFee}; +use super::{hmac_signature, REAL, SIMUL, TEST, RUNNING_MODE, FUTURES_URL, FUTURES_URL_TEST, API_KEY, API_KEY_TESTNET, FuturesExchangeInfo, PositionCoinList, FuturesTradeFee}; use std::collections::HashMap; use rust_decimal::{Decimal, RoundingStrategy}; use crate::database_control::*; @@ -213,7 +213,7 @@ async fn update_repeat_task( // RoundingStrategy::ToZero, // ); let mut pure_profit_percent; - if element.position == Position::Long { + if element.position.contains("Long") { pure_profit_percent = ((expected_get_usdt.to_f64().unwrap() / element.used_usdt.to_f64().unwrap()) - 1.0)