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 rust_decimal_macros::dec;
|
||||||
use serde_json::{Result, Value};
|
use serde_json::{Result, Value};
|
||||||
use sqlx::FromRow;
|
use sqlx::FromRow;
|
||||||
|
use crate::coex::order_team::DBlist;
|
||||||
|
|
||||||
#[derive(Debug, FromRow)]
|
#[derive(Debug, FromRow)]
|
||||||
pub struct AssetInfo {
|
pub struct AssetInfo {
|
||||||
|
|
@ -23,6 +24,22 @@ pub struct AssetInfo {
|
||||||
pub unit_trade_usdt: Decimal,
|
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)]
|
#[derive(Debug, FromRow)]
|
||||||
pub struct WalletInfo {
|
pub struct WalletInfo {
|
||||||
pub asset: String,
|
pub asset: String,
|
||||||
|
|
@ -30,19 +47,37 @@ pub struct WalletInfo {
|
||||||
pub locked: Decimal,
|
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
|
// set unit_trade_usdt
|
||||||
pub async fn set_unit_usdt() {
|
pub async fn set_unit_usdt() {
|
||||||
let asset_info = select_asset_manage_announcement().await;
|
let asset_info = select_asset_manage_announcement().await;
|
||||||
let mut set_unit_trade_usdt = Decimal::new(0, 8);
|
let mut set_unit_trade_usdt = Decimal::new(0, 8);
|
||||||
|
|
||||||
|
if RUNNING_MODE == SIMUL {
|
||||||
|
set_unit_trade_usdt = dec!(100.0); // $100 for each trade
|
||||||
|
} else if RUNNING_MODE == REAL {
|
||||||
// define protect_rate and unit_trade_usdt as high as total_usdt_amount
|
// 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 dec!(0.0) <= asset_info.current_total_usdt && asset_info.current_total_usdt < dec!(1000.0) {
|
||||||
set_unit_trade_usdt = dec!(100.0); // $100 for each trade
|
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
|
// 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
|
} 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 = dec!(150.0); // $150 for each trade
|
||||||
set_unit_trade_usdt = decimal_mul(asset_info.current_total_usdt, dec!(0.1));
|
set_unit_trade_usdt = decimal_mul(asset_info.current_total_usdt, dec!(0.05));
|
||||||
|
|
||||||
|
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 truncated = decimal_mul(decimal_mul(set_unit_trade_usdt, dec!(0.1)).trunc(), dec!(10));
|
||||||
let difference = decimal_sub(set_unit_trade_usdt, truncated);
|
let difference = decimal_sub(set_unit_trade_usdt, truncated);
|
||||||
|
|
||||||
|
|
@ -52,6 +87,8 @@ pub async fn set_unit_usdt() {
|
||||||
set_unit_trade_usdt = truncated;
|
set_unit_trade_usdt = truncated;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// update fields in [asset_manage_announcement] table
|
// update fields in [asset_manage_announcement] table
|
||||||
let update_table_name = String::from("asset_manage_announcement");
|
let update_table_name = String::from("asset_manage_announcement");
|
||||||
|
|
@ -396,11 +433,7 @@ pub async fn select_asset_manage_announcement() -> AssetInfo {
|
||||||
|
|
||||||
// fetch free usdt from wallet
|
// fetch free usdt from wallet
|
||||||
pub async fn fetch_free_usdt() -> Decimal {
|
pub async fn fetch_free_usdt() -> Decimal {
|
||||||
let wallet_info = WalletInfo {
|
let wallet_info = WalletInfo::new();
|
||||||
asset: String::new(),
|
|
||||||
free: Decimal::new(0, 8),
|
|
||||||
locked: Decimal::new(0, 8),
|
|
||||||
};
|
|
||||||
let select_table_name = {
|
let select_table_name = {
|
||||||
if RUNNING_MODE == SIMUL || RUNNING_MODE == REAL {
|
if RUNNING_MODE == SIMUL || RUNNING_MODE == REAL {
|
||||||
String::from("wallet")
|
String::from("wallet")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user