|
|
@@ -90,7 +90,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
// 获取账号信息
|
|
|
async fn get_account(&mut self) -> Result<Account, Error> {
|
|
|
- let symbol_array: Vec<&str> = self.symbol.split("_").collect();
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_array: Vec<&str> = symbol_mapper.split("_").collect();
|
|
|
let res_data = self.request.get_account(symbol_array[1].to_string()).await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
|
@@ -119,7 +120,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn get_position(&mut self) -> Result<Vec<Position>, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let ct_val = self.market.ct_val;
|
|
|
let res_data = self.request.get_position(symbol_format).await;
|
|
|
if res_data.code == "200" {
|
|
|
@@ -133,7 +135,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn get_positions(&mut self) -> Result<Vec<Position>, Error> {
|
|
|
- let symbol_array: Vec<&str> = self.symbol.split("_").collect();
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_array: Vec<&str> = symbol_mapper.split("_").collect();
|
|
|
let res_data = self.request.get_positions(symbol_array[1].to_string()).await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
|
@@ -149,7 +152,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn get_ticker(&mut self) -> Result<Ticker, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let res_data = self.request.get_ticker(symbol_format).await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
|
@@ -172,7 +176,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn get_ticker_symbol(&mut self, symbol: String) -> Result<Ticker, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper, ""));
|
|
|
let res_data = self.request.get_ticker(symbol_format).await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
|
@@ -195,11 +200,13 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn get_market(&mut self) -> Result<Market, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let res_data = self.request.get_market_details().await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
|
let res_data_json: Vec<serde_json::Value> = serde_json::from_str(res_data_str).unwrap();
|
|
|
+
|
|
|
let market_info = res_data_json.iter().find(|item| item["symbol"].as_str().unwrap() == symbol_format);
|
|
|
match market_info {
|
|
|
None => {
|
|
|
@@ -208,7 +215,9 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
Some(value) => {
|
|
|
let base_asset = value["baseCurrency"].as_str().unwrap_or("").to_string();
|
|
|
+ let base_asset_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, base_asset.as_str());
|
|
|
let quote_asset = value["quoteCurrency"].as_str().unwrap_or("").to_string();
|
|
|
+ let quote_asset_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, quote_asset.as_str());
|
|
|
let tick_size = Decimal::from_f64(value["tickSize"].as_f64().unwrap()).unwrap();
|
|
|
let min_qty = Decimal::from_f64(value["lotSize"].as_f64().unwrap()).unwrap();
|
|
|
let ct_val = Decimal::from_f64(value["multiplier"].as_f64().unwrap()).unwrap();
|
|
|
@@ -219,9 +228,9 @@ impl Platform for KucoinSwap {
|
|
|
let min_notional = min_qty * ct_val;
|
|
|
|
|
|
let result = Market {
|
|
|
- symbol: format!("{}_{}", base_asset, quote_asset),
|
|
|
- base_asset,
|
|
|
- quote_asset,
|
|
|
+ symbol: format!("{}_{}", base_asset_mapper, quote_asset_mapper),
|
|
|
+ base_asset: base_asset_mapper,
|
|
|
+ quote_asset: quote_asset_mapper,
|
|
|
tick_size,
|
|
|
amount_size,
|
|
|
price_precision,
|
|
|
@@ -241,7 +250,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn get_market_symbol(&mut self, symbol: String) -> Result<Market, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let res_data = self.request.get_market_details().await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
|
@@ -254,7 +264,9 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
Some(value) => {
|
|
|
let base_asset = value["baseCurrency"].as_str().unwrap_or("").to_string();
|
|
|
+ let base_asset_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, base_asset.as_str());
|
|
|
let quote_asset = value["quoteCurrency"].as_str().unwrap_or("").to_string();
|
|
|
+ let quote_asset_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, quote_asset.as_str());
|
|
|
let tick_size = Decimal::from_f64(value["tickSize"].as_f64().unwrap()).unwrap();
|
|
|
let min_qty = Decimal::from_f64(value["lotSize"].as_f64().unwrap()).unwrap();
|
|
|
let ct_val = Decimal::from_f64(value["multiplier"].as_f64().unwrap()).unwrap();
|
|
|
@@ -265,9 +277,9 @@ impl Platform for KucoinSwap {
|
|
|
let min_notional = min_qty * ct_val;
|
|
|
|
|
|
let result = Market {
|
|
|
- symbol: format!("{}_{}", base_asset, quote_asset),
|
|
|
- base_asset,
|
|
|
- quote_asset,
|
|
|
+ symbol: format!("{}_{}", base_asset_mapper, quote_asset_mapper),
|
|
|
+ base_asset: base_asset_mapper,
|
|
|
+ quote_asset: quote_asset_mapper,
|
|
|
tick_size,
|
|
|
amount_size,
|
|
|
price_precision,
|
|
|
@@ -300,7 +312,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn get_orders_list(&mut self, status: &str) -> Result<Vec<Order>, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let ct_val = self.market.ct_val;
|
|
|
let res_data = self.request.get_orders(status.to_string(), symbol_format.clone()).await;
|
|
|
if res_data.code == "200" {
|
|
|
@@ -316,7 +329,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn take_order(&mut self, custom_id: &str, origin_side: &str, price: Decimal, amount: Decimal) -> Result<Order, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let ct_val = self.market.ct_val;
|
|
|
let mut params = json!({
|
|
|
"clientOid": custom_id,
|
|
|
@@ -367,7 +381,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn take_order_symbol(&mut self, symbol: String, ct_val: Decimal, custom_id: &str, origin_side: &str, price: Decimal, amount: Decimal) -> Result<Order, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let mut params = json!({
|
|
|
"clientOid": custom_id,
|
|
|
"symbol": symbol_format,
|
|
|
@@ -444,7 +459,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn cancel_orders(&mut self) -> Result<Vec<Order>, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let res_data = self.request.cancel_orders(symbol_format).await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
|
@@ -503,7 +519,8 @@ impl Platform for KucoinSwap {
|
|
|
}
|
|
|
|
|
|
async fn set_auto_deposit_status(&mut self, status: bool) -> Result<String, Error> {
|
|
|
- let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
|
|
|
+ let symbol_mapper = utils::symbol_mapper(ExchangeEnum::KucoinSwap, self.symbol.as_str());
|
|
|
+ let symbol_format = format!("{}M", utils::format_symbol(symbol_mapper.clone(), ""));
|
|
|
let res_data = self.request.auto_deposit_status(symbol_format, status).await;
|
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|