This commit is contained in:
2025-02-14 09:43:49 +08:00
parent 97037adbbb
commit 8fbfcbf285
19 changed files with 755 additions and 288 deletions

View File

@ -88,6 +88,13 @@ func futTriggerOrder(db *gorm.DB, v *dto.PreOrderRedisList, item string, futApi
return
}
//判断是否有已触发交易对
count, _ := GetSymbolTriggerCount(db, v.Symbol, 2)
if count > 0 {
return
}
price, _ := decimal.NewFromString(v.Price)
num, _ := decimal.NewFromString(preOrder.Num)
@ -108,7 +115,7 @@ func futTriggerOrder(db *gorm.DB, v *dto.PreOrderRedisList, item string, futApi
}
preOrderVal, _ := sonic.MarshalString(&v)
if err := futApi.OrderPlace(db, params); err != nil {
if err := futApi.OrderPlaceLoop(db, params, 3); err != nil {
log.Error("下单失败", v.Symbol, " err:", err)
err := db.Model(&DbModels.LinePreOrder{}).Where("id =? and status='0'", preOrder.Id).Updates(map[string]interface{}{"status": "2", "desc": err.Error()}).Error
@ -218,35 +225,35 @@ func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRes
return
}
var err error
for x := 1; x <= 4; x++ {
err = futApi.CancelFutOrder(apiInfo, takeOrder.Symbol, takeOrder.OrderSn)
if err == nil || strings.Contains(err.Error(), "取消订单被拒绝") {
err = nil
break
}
}
err := CancelFutOrderByOrderSnLoop(apiInfo, takeOrder.Symbol, takeOrder.OrderSn)
if err != nil {
log.Error("合约止盈撤单失败", err)
return
}
price := reduceOrder.Price.Mul(decimal.NewFromInt(1).Sub(setting.ReducePremium.Div(decimal.NewFromInt(100)))).Truncate(int32(tradeSet.PriceDigit))
num := utility.StrToDecimal(takeOrder.Num).Truncate(int32(tradeSet.AmountDigit))
var positionSide string
params := FutOrderPlace{
ApiId: reduceOrder.ApiId,
Side: reduceOrder.Side,
OrderType: "LIMIT",
Symbol: reduceOrder.Symbol,
Price: price,
Quantity: num,
NewClientOrderId: reduceOrder.OrderSn,
if reduceOrder.Side == "BUY" {
positionSide = "SHORT"
} else {
positionSide = "LONG"
}
if err := futApi.OrderPlace(db, params); err != nil {
// params := FutOrderPlace{
// ApiId: reduceOrder.ApiId,
// Side: reduceOrder.Side,
// OrderType: "STOP",
// Symbol: reduceOrder.Symbol,
// Price: price,
// StopPrice: price,
// Quantity: num,
// NewClientOrderId: reduceOrder.OrderSn,
// }
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)
}
@ -349,7 +356,7 @@ func FutAddPositionTrigger(db *gorm.DB, v *AddPositionList, item string, futApi
}
preOrderVal, _ := sonic.MarshalString(&v)
if err := futApi.OrderPlace(db, params); err != nil {
if err := futApi.OrderPlaceLoop(db, params, 3); err != nil {
log.Error("下单失败", v.Symbol, " err:", err)
err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status =0", preOrder.Id).Updates(map[string]interface{}{"status": "2", "desc": err.Error()}).Error