1、主单增加减仓、加仓状态

2、bug修复
This commit is contained in:
2025-02-20 12:00:04 +08:00
parent b132ee879b
commit ade768c28a
13 changed files with 312 additions and 52 deletions

View File

@ -9,6 +9,7 @@ import (
"go-admin/common/global"
"go-admin/common/helper"
"go-admin/models"
"go-admin/models/binancedto"
"go-admin/models/futuresdto"
"go-admin/pkg/httputils"
"go-admin/pkg/utility"
@ -936,3 +937,66 @@ func (e FutRestApi) GetFutSymbolLastPrice(targetSymbol string) (lastPrice decima
// }
return lastPrice
}
func (e FutRestApi) GetOrderByOrderSn(symbol, orderSn string, apiUserInfo DbModels.LineApiUser) (order binancedto.BinanceFutureOrder, err error) {
result := binancedto.BinanceFutureOrder{}
params := map[string]string{
"symbol": symbol,
"origClientOrderId": orderSn,
}
client := GetClient(&apiUserInfo)
body, code, err := client.SendFuturesAuth("/fapi/v1/order", "GET", params)
if err != nil || code != 200 {
log.Error("查询合约委托 参数:", params)
log.Error("查询合约委托失败 code:", code)
log.Error("查询合约委托失败 err:", err)
dataMap := make(map[string]interface{})
if err.Error() != "" {
if err := sonic.Unmarshal([]byte(err.Error()), &dataMap); err != nil {
return result, fmt.Errorf("api_id:%d 交易对:%s 查询订单失败:%+v", apiUserInfo.Id, symbol, err.Error())
}
}
code, ok := dataMap["code"]
if ok {
return result, fmt.Errorf("api_id:%d 交易对:%s 查询订单失败:%s", apiUserInfo.Id, symbol, ErrorMaps[code.(float64)])
}
if strings.Contains(err.Error(), "Unknown order sent.") {
return result, fmt.Errorf("api_id:%d 交易对:%s 查询订单失败:%+v", apiUserInfo.Id, symbol, ErrorMaps[-2011])
}
return result, fmt.Errorf("api_id:%d 交易对:%s 查询订单失败:%+v", apiUserInfo.Id, symbol, err.Error())
}
sonic.Unmarshal(body, &result)
if result.OrderID == 0 {
return result, fmt.Errorf("api_id:%d 交易对:%s 查询订单失败:%+v", apiUserInfo.Id, symbol, "订单不存在")
}
return result, nil
}
/*
查询现货委托
*/
// 根据订单号获取订单信息,如果获取失败,则进行重试
func (e FutRestApi) GetOrderByOrderSnLoop(symbol, ordersn string, apiUserInfo DbModels.LineApiUser, retryCount int) (order binancedto.BinanceFutureOrder, err error) {
result, err := e.GetOrderByOrderSn(symbol, ordersn, apiUserInfo)
// 如果获取失败,则进行重试
if err != nil {
// 调用GetOrderByOrderSn方法获取订单信息
for x := 1; x < retryCount; x++ {
// 如果获取成功,则跳出循环
result, err = e.GetOrderByOrderSn(symbol, ordersn, apiUserInfo)
if err == nil {
break
}
}
}
// 返回订单信息和错误信息
return result, err
}