1、合约止盈止损单在减仓单成交之后再取消

This commit is contained in:
2025-04-11 09:06:09 +08:00
parent a9fc1c87f5
commit d4c8e692a7
10 changed files with 142 additions and 86 deletions

View File

@ -158,6 +158,8 @@ func handleReduceFilled(db *gorm.DB, preOrder *DbModels.LinePreOrder) {
return
}
//取消委托中的止盈止损
cancelTakeProfitByReduce(db, apiUserInfo, preOrder.Symbol, preOrder.MainId, preOrder.SymbolType)
lock := helper.NewRedisLock(fmt.Sprintf(rediskey.FutReducecCallback, preOrder.ApiId, preOrder.Symbol), 120, 20, 100*time.Millisecond)
if ok, err := lock.AcquireWait(context.Background()); err != nil {
@ -179,6 +181,36 @@ func handleReduceFilled(db *gorm.DB, preOrder *DbModels.LinePreOrder) {
}
}
// 减仓成功后取消止盈止损
func cancelTakeProfitByReduce(db *gorm.DB, apiUserInfo DbModels.LineApiUser, symbol string, mainId int, symbolType int) {
orders, err := GetSymbolTakeAndStop(db, mainId, symbolType)
futApi := FutRestApi{}
if err != nil {
logger.Errorf("mainId:%d 获取委托中的止盈止损失败:%v", mainId, err)
}
orderSns := make([]string, 0)
for _, v := range orders {
if v.OrderType != 1 && v.OrderType != 2 {
continue
}
orderSns = append(orderSns, v.OrderSn)
}
arr := utility.SplitSlice(orderSns, 10)
for _, v := range arr {
err := futApi.CancelBatchFutOrder(apiUserInfo, symbol, v)
if err != nil {
logger.Errorf("mainId:%d 取消止盈止损失败:%v", mainId, err)
}
}
}
// 减仓处理止盈止损
func FutTakeProfit(db *gorm.DB, preOrder *DbModels.LinePreOrder, apiUserInfo DbModels.LineApiUser, tradeSet models2.TradeSet,
positionData positiondto.PositionDto, orderExt DbModels.LinePreOrderExt, manualTakeRatio, manualStopRatio decimal.Decimal) bool {