ccxt_exchanges/bitget/rest/futures/
margin.rs1use super::super::super::signed_request::HttpMethod;
4use super::super::super::{Bitget, symbol::BitgetSymbolConverter};
5use ccxt_core::{Error, Result};
6
7impl Bitget {
8 pub async fn set_margin_mode_impl(&self, symbol: &str, mode: &str) -> Result<()> {
12 let exchange_id = BitgetSymbolConverter::unified_to_exchange(symbol);
13 let product_type = BitgetSymbolConverter::product_type_from_symbol(symbol);
14 let margin_coin = Self::margin_coin_from_symbol(symbol);
15
16 let margin_mode = match mode.to_lowercase().as_str() {
17 "isolated" => "isolated",
18 "cross" | "crossed" => "crossed",
19 _ => {
20 return Err(Error::invalid_request(format!(
21 "Invalid margin mode: {}. Must be 'isolated' or 'cross'",
22 mode
23 )));
24 }
25 };
26
27 self.signed_request("/api/v2/mix/account/set-margin-mode")
28 .method(HttpMethod::Post)
29 .param("symbol", &exchange_id)
30 .param("productType", product_type)
31 .param("marginCoin", margin_coin)
32 .param("marginMode", margin_mode)
33 .execute()
34 .await?;
35
36 Ok(())
37 }
38}