1、合约止盈止损单在减仓单成交之后再取消
This commit is contained in:
@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user