gepangpang před 2 roky
rodič
revize
429a3b4c39

+ 55 - 0
exchange_data_formatter/src/bitget_handle.rs

@@ -0,0 +1,55 @@
+use serde::{Deserialize, Serialize};
+use rust_decimal::Decimal;
+use rust_decimal_macros::dec;
+use tracing::error;
+use crate::{Account, Market, Order, Position, PositionModeEnum, Ticker, utils};
+
+/// Binance交易所账户信息请求数据结构
+/// - 接口`"/fapi/v2/balance"`
+///
+/// struct SwapAccount
+/// - `account_alias`: String, 账户唯一识别码
+/// - `asset`: String, 资产
+/// - `balance`: Decimal, 总余额
+/// - `cross_wallet_balance`: Decimal, 全仓余额
+/// - `cross_un_pnl`: Decimal, 全仓持仓未实现盈亏
+/// - `available_balance`: Decimal, 下单可用余额
+/// - `max_withdraw_amount`: Decimal, 最大可转出余额
+/// - `margin_available`: bool, 是否可用作联合保证金
+/// - `update_time`: i64,时间戳
+#[derive(Debug, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+struct SpotAccount {
+    coin: String,
+    available: String,
+    frozen: Decimal,
+    locked: Decimal,
+    limit_available: Decimal,
+    u_time: String,
+}
+/// 处理合约本位货币账户信息
+///
+/// pub(crate) fn handle_swap_account(data: String, symbol: String) -> Account;
+///
+/// - `data`:String, 交易所返回账户信息,JsonString
+/// - `symbol`:String, 交易币对
+pub(crate) fn handle_swap_account(data: String, symbol: String) -> Account {
+    let symbol_array: Vec<&str> = symbol.split("_").collect();
+    let balance_info_list: Vec<SwapAccount> = serde_json::from_str(&data).unwrap();
+    let balance_info = balance_info_list.iter().find(|item| item.asset == symbol_array[1]);
+    match balance_info {
+        None => {
+            panic!("格式化Binance账号信息错误,未找到该本位货币!\nhandle_account: balance_info={:?}", balance_info)
+        }
+        Some(value) => {
+            Account {
+                balance: value.balance,
+                available_balance: value.available_balance,
+                frozen_balance: value.balance - value.available_balance,
+                stocks: dec!(0),
+                available_stocks: dec!(0),
+                frozen_stocks: dec!(0),
+            }
+        }
+    }
+}

+ 1 - 0
standard/Cargo.toml

@@ -8,6 +8,7 @@ edition = "2021"
 [dependencies]
 global = { path = "../global" }
 exchanges = { path = "../exchanges" }
+exchange_data_formatter = { path = "../exchange_data_formatter" }
 tokio = { version = "1.31.0", features = ["full"] }
 async-trait = "0.1.73"
 serde_json = "1.0.105"