Change set_unit_usdt() for Simulation
This commit is contained in:
parent
13f1e59e7a
commit
9d7e001860
|
|
@ -10,6 +10,7 @@ use rust_decimal::{prelude::ToPrimitive, Decimal, RoundingStrategy};
|
|||
use rust_decimal_macros::dec;
|
||||
use serde_json::{Result, Value};
|
||||
use sqlx::FromRow;
|
||||
use crate::coex::order_team::DBlist;
|
||||
|
||||
#[derive(Debug, FromRow)]
|
||||
pub struct AssetInfo {
|
||||
|
|
@ -23,6 +24,22 @@ pub struct AssetInfo {
|
|||
pub unit_trade_usdt: Decimal,
|
||||
}
|
||||
|
||||
impl DBlist for AssetInfo {
|
||||
fn new() -> AssetInfo {
|
||||
let a = AssetInfo {
|
||||
initial_usdt: Decimal::new(0, 8),
|
||||
current_total_usdt: Decimal::new(0, 8),
|
||||
profit: Decimal::new(0, 8),
|
||||
realtime_expected_total_usdt: 0.0,
|
||||
realtime_profit: 0.0,
|
||||
available_usdt: Decimal::new(0, 8),
|
||||
is_tradable: 0,
|
||||
unit_trade_usdt: Decimal::new(0, 8),
|
||||
};
|
||||
a
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, FromRow)]
|
||||
pub struct WalletInfo {
|
||||
pub asset: String,
|
||||
|
|
@ -30,26 +47,46 @@ pub struct WalletInfo {
|
|||
pub locked: Decimal,
|
||||
}
|
||||
|
||||
impl DBlist for WalletInfo {
|
||||
fn new() -> WalletInfo {
|
||||
let a = WalletInfo {
|
||||
asset: String::new(),
|
||||
free: Decimal::new(0, 8),
|
||||
locked: Decimal::new(0, 8),
|
||||
};
|
||||
a
|
||||
}
|
||||
}
|
||||
|
||||
// set unit_trade_usdt
|
||||
pub async fn set_unit_usdt() {
|
||||
let asset_info = select_asset_manage_announcement().await;
|
||||
let mut set_unit_trade_usdt = Decimal::new(0, 8);
|
||||
|
||||
// define protect_rate and unit_trade_usdt as high as total_usdt_amount
|
||||
if dec!(0.0) <= asset_info.current_total_usdt && asset_info.current_total_usdt < dec!(1000.0) {
|
||||
if RUNNING_MODE == SIMUL {
|
||||
set_unit_trade_usdt = dec!(100.0); // $100 for each trade
|
||||
// set_unit_trade_usdt = decimal_mul(asset_info.current_total_usdt, dec!(0.8)); // 80% of total usdt
|
||||
} else if dec!(1000.0) <= asset_info.current_total_usdt
|
||||
{
|
||||
// set_unit_trade_usdt = dec!(150.0); // $150 for each trade
|
||||
set_unit_trade_usdt = decimal_mul(asset_info.current_total_usdt, dec!(0.1));
|
||||
let truncated = decimal_mul(decimal_mul(set_unit_trade_usdt, dec!(0.1)).trunc(), dec!(10));
|
||||
let difference = decimal_sub(set_unit_trade_usdt, truncated);
|
||||
} else if RUNNING_MODE == REAL {
|
||||
// define protect_rate and unit_trade_usdt as high as total_usdt_amount
|
||||
if dec!(0.0) <= asset_info.current_total_usdt && asset_info.current_total_usdt < dec!(1000.0) {
|
||||
set_unit_trade_usdt = dec!(50.0); // $100 for each trade
|
||||
// set_unit_trade_usdt = decimal_mul(asset_info.current_total_usdt, dec!(0.8)); // 80% of total usdt
|
||||
} else if dec!(1000.0) <= asset_info.current_total_usdt
|
||||
{
|
||||
// set_unit_trade_usdt = dec!(150.0); // $150 for each trade
|
||||
set_unit_trade_usdt = decimal_mul(asset_info.current_total_usdt, dec!(0.05));
|
||||
|
||||
if difference >= dec!(5) {
|
||||
set_unit_trade_usdt = decimal_add(truncated, dec!(5));
|
||||
} else {
|
||||
set_unit_trade_usdt = truncated;
|
||||
if set_unit_trade_usdt <= dec!(20) {
|
||||
set_unit_trade_usdt = dec!(0);
|
||||
} else {
|
||||
let truncated = decimal_mul(decimal_mul(set_unit_trade_usdt, dec!(0.1)).trunc(), dec!(10));
|
||||
let difference = decimal_sub(set_unit_trade_usdt, truncated);
|
||||
|
||||
if difference >= dec!(5) {
|
||||
set_unit_trade_usdt = decimal_add(truncated, dec!(5));
|
||||
} else {
|
||||
set_unit_trade_usdt = truncated;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -396,11 +433,7 @@ pub async fn select_asset_manage_announcement() -> AssetInfo {
|
|||
|
||||
// fetch free usdt from wallet
|
||||
pub async fn fetch_free_usdt() -> Decimal {
|
||||
let wallet_info = WalletInfo {
|
||||
asset: String::new(),
|
||||
free: Decimal::new(0, 8),
|
||||
locked: Decimal::new(0, 8),
|
||||
};
|
||||
let wallet_info = WalletInfo::new();
|
||||
let select_table_name = {
|
||||
if RUNNING_MODE == SIMUL || RUNNING_MODE == REAL {
|
||||
String::from("wallet")
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user