|
|
@@ -140,22 +140,10 @@ impl GateSwapRest {
|
|
|
}
|
|
|
|
|
|
//合约交易下单
|
|
|
- pub async fn take_order(&self,
|
|
|
+ pub async fn swap_order(&self,
|
|
|
settle: String,
|
|
|
- contract: String,
|
|
|
- size: i64,
|
|
|
- reduce_only: bool,
|
|
|
- price: String,
|
|
|
+ params: serde_json::Value,
|
|
|
) -> ResponseData {
|
|
|
- let params = serde_json::json!({
|
|
|
- "contract":contract,
|
|
|
- "size":size
|
|
|
- });
|
|
|
- // let mut btree_map: BTreeMap<String, String> = BTreeMap::new();
|
|
|
- // btree_map.insert("contract".to_string(), contract);
|
|
|
- // btree_map.insert("size".to_string(), size.to_string());
|
|
|
-
|
|
|
-
|
|
|
let data = self.request("POST".to_string(),
|
|
|
"/api/v4".to_string(),
|
|
|
format!("/futures/{}/orders", settle),
|
|
|
@@ -164,7 +152,64 @@ impl GateSwapRest {
|
|
|
).await;
|
|
|
data
|
|
|
}
|
|
|
-
|
|
|
+ //设置持仓模式
|
|
|
+ pub async fn setting_dual_mode(&self,
|
|
|
+ settle: String,
|
|
|
+ dual_mode: bool,
|
|
|
+ ) -> ResponseData {
|
|
|
+ let params = serde_json::json!({
|
|
|
+ "dual_mode":dual_mode,
|
|
|
+ });
|
|
|
+ let data = self.request("POST".to_string(),
|
|
|
+ "/api/v4".to_string(),
|
|
|
+ format!("/futures/{}/dual_mode", settle),
|
|
|
+ true,
|
|
|
+ params.to_string(),
|
|
|
+ ).await;
|
|
|
+ data
|
|
|
+ }
|
|
|
+ //更新双仓模式下的杠杆
|
|
|
+ pub async fn setting_dual_leverage(&self,
|
|
|
+ settle: String,
|
|
|
+ symbol: String,
|
|
|
+ leverage: String,
|
|
|
+ ) -> ResponseData {
|
|
|
+ let params = serde_json::json!({
|
|
|
+ "leverage":leverage,
|
|
|
+ });
|
|
|
+ let data = self.request("POST".to_string(),
|
|
|
+ "/api/v4".to_string(),
|
|
|
+ format!("/futures/{}/dual_comp/positions/{}/leverage", settle, symbol),
|
|
|
+ true,
|
|
|
+ params.to_string(),
|
|
|
+ ).await;
|
|
|
+ data
|
|
|
+ }
|
|
|
+ //交易账户互转
|
|
|
+ pub async fn wallet_transfers(&self,
|
|
|
+ currency:String,
|
|
|
+ from:String,
|
|
|
+ to:String,
|
|
|
+ amount:String,
|
|
|
+ currency_pair:String,
|
|
|
+ settle:String,
|
|
|
+ ) -> ResponseData {
|
|
|
+ let params = serde_json::json!({
|
|
|
+ "currency":settle,
|
|
|
+ "from":from,
|
|
|
+ "to":to,
|
|
|
+ "amount":amount,
|
|
|
+ "currency_pair":currency_pair,
|
|
|
+ "settle":settle,
|
|
|
+ });
|
|
|
+ let data = self.request("POST".to_string(),
|
|
|
+ "/api/v4".to_string(),
|
|
|
+ format!("/wallet/transfers"),
|
|
|
+ true,
|
|
|
+ params.to_string(),
|
|
|
+ ).await;
|
|
|
+ data
|
|
|
+ }
|
|
|
|
|
|
/*******************************************************************************************************/
|
|
|
/*****************************************工具函数********************************************************/
|
|
|
@@ -177,7 +222,7 @@ impl GateSwapRest {
|
|
|
is_login: bool,
|
|
|
params: String) -> ResponseData
|
|
|
{
|
|
|
- println!("login_param:{:?}", self.login_param);
|
|
|
+ // println!("login_param:{:?}", self.login_param);
|
|
|
//解析账号信息
|
|
|
let mut access_key = "".to_string();
|
|
|
let mut secret_key = "".to_string();
|
|
|
@@ -206,7 +251,7 @@ impl GateSwapRest {
|
|
|
headers.insert("Content-Type", "application/json".parse().unwrap());
|
|
|
|
|
|
body = params.clone();
|
|
|
- println!("---body:{}", body);
|
|
|
+ // println!("---body:{}", body);
|
|
|
}
|
|
|
|
|
|
//是否需要登陆-- 组装sing
|
|
|
@@ -224,13 +269,13 @@ impl GateSwapRest {
|
|
|
body.clone(),
|
|
|
timestamp.clone(),
|
|
|
);
|
|
|
- println!("sing:{}", sing);
|
|
|
+ // println!("sing:{}", sing);
|
|
|
//组装header
|
|
|
headers.extend(Self::headers(access_key, timestamp, sing));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- println!("headers:{:?}", headers);
|
|
|
+ // println!("headers:{:?}", headers);
|
|
|
let mut get_response = self.rest.http_toll(
|
|
|
format!("{}{}", prefix_url.clone(), request_url.clone()),
|
|
|
requesst_type.to_string(),
|
|
|
@@ -271,9 +316,9 @@ impl GateSwapRest {
|
|
|
params_str,
|
|
|
hashed_payload,
|
|
|
t);
|
|
|
- println!("**********", );
|
|
|
- println!("组装数据:{}", message);
|
|
|
- println!("**********", );
|
|
|
+ // println!("**********", );
|
|
|
+ // println!("组装数据:{}", message);
|
|
|
+ // println!("**********", );
|
|
|
|
|
|
let mut mac = Hmac::<Sha512>::new_varkey(secret_key.as_bytes()).expect("Failed to create HMAC");
|
|
|
mac.update(message.as_bytes());
|