This commit is contained in:
2025-02-18 15:40:45 +08:00
parent 08a7da607f
commit 935fc36b5a
7 changed files with 95 additions and 53 deletions

View File

@ -254,6 +254,12 @@ func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRes
if err := futApi.ClosePositionLoop(reduceOrder.Symbol, reduceOrder.OrderSn, num, reduceOrder.Side, positionSide, apiInfo, "LIMIT", "0", price, 3); err != nil {
log.Errorf("合约减仓挂单失败 id%s err:%v", reduceOrder.Id, err)
if err2 := db.Model(&DbModels.LinePreOrder{}).
Where("id = ? AND status =0", reduceOrder.Id).
Updates(map[string]interface{}{"status": 2, "desc": err.Error()}).Error; err2 != nil {
log.Errorf("合约减仓更新状态失败 id%s err:%v", reduceOrder.Id, err2)
}
}
if _, err := helper.DefaultRedis.LRem(key, item); err != nil {

View File

@ -158,6 +158,7 @@ func handleReduceFilled(db *gorm.DB, preOrder *DbModels.LinePreOrder) {
}
totalNum := getFuturesPositionAvailableQuantity(db, apiUserInfo, preOrder, tradeSet)
totalNum = totalNum.Truncate(int32(tradeSet.AmountDigit))
futApi := FutRestApi{}
for _, v := range orders {
if v.OrderType == 1 {
@ -383,10 +384,10 @@ func handleFutMainOrderFilled(db *gorm.DB, preOrder *models.LinePreOrder) {
futApi := FutRestApi{}
num := getFuturesPositionAvailableQuantity(db, apiInfo, preOrder, tradeSet)
num = num.Truncate(int32(tradeSet.AmountDigit))
for _, order := range orders {
price := utility.StrToDecimal(order.Price).Truncate(int32(tradeSet.PriceDigit))
num = num.Truncate(int32(tradeSet.AmountDigit))
order.Price = price.String()
if order.OrderType == 4 {

View File

@ -217,10 +217,10 @@ func SpotStopLossTrigger(db *gorm.DB, stopOrder dto.StopLossRedisList, spotApi S
for x := 1; x <= 4; x++ {
err = spotApi.CancelOpenOrderByOrderSn(apiInfo, takeOrder.Symbol, takeOrder.OrderSn)
if err == nil {
if err == nil || strings.Contains(err.Error(), "该交易对没有订单") {
err = nil
break
}
}
if err != nil {
@ -350,6 +350,12 @@ func SpotReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, spotApi SpotRest
if err := spotApi.OrderPlaceLoop(db, params, 3); err != nil {
log.Errorf("现货减仓挂单失败 id%s err:%v", reduceOrder.Id, err)
if err2 := db.Model(&DbModels.LinePreOrder{}).
Where("id =? AND status =0", reduceOrder.Id).
Updates(map[string]interface{}{"status": 2, "desc": err.Error()}).Error; err2 != nil {
log.Errorf("修改现货减仓状态失败 id%s err:%v", reduceOrder.Id, err2)
}
}
if _, err := helper.DefaultRedis.LRem(key, item); err != nil {

View File

@ -527,7 +527,7 @@ func processTakeProfitAndStopLossOrders(db *gorm.DB, preOrder *models.LinePreOrd
num := getSpotPositionAvailableQuantity(db, apiInfo, preOrder, tradeSet)
if err := db.Model(&DbModels.LinePreOrder{}).
Where("pid = ? AND order_category = 1 AND order_type > 0 AND status = '0' ", preOrder.Id).
Where("pid = ? AND order_type > 0 AND status = '0' ", preOrder.Id).
Find(&orders).Error; err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
logger.Error("订单回调查询止盈止损单失败:", err)
return