1
This commit is contained in:
@ -275,9 +275,9 @@ func (e *AddPosition) CalculateAmount(req dto.ManuallyCover, totalNum, lastPrice
|
||||
|
||||
// 主单平仓删除缓存
|
||||
// mainOrderId 主单id
|
||||
// coverType 1现货->合约 2->合约->合约 3合约->现货
|
||||
func MainClosePositionClearCache(mainOrderId int, coverType int) {
|
||||
if coverType == 1 {
|
||||
// symbolType 1现货 2合约
|
||||
func MainClosePositionClearCache(mainId int, symbolType int) {
|
||||
if symbolType == 1 {
|
||||
keySpotStop := fmt.Sprintf(rediskey.SpotStopLossList, global.EXCHANGE_BINANCE)
|
||||
keySpotAddposition := fmt.Sprintf(rediskey.SpotAddPositionList, global.EXCHANGE_BINANCE)
|
||||
spotStopArray, _ := helper.DefaultRedis.GetAllList(keySpotStop)
|
||||
@ -290,7 +290,7 @@ func MainClosePositionClearCache(mainOrderId int, coverType int) {
|
||||
log.Error("MainClosePositionClearCache Unmarshal err:", err)
|
||||
}
|
||||
|
||||
if position.Pid == mainOrderId {
|
||||
if position.MainId == mainId {
|
||||
helper.DefaultRedis.LRem(keySpotAddposition, item)
|
||||
}
|
||||
}
|
||||
@ -300,7 +300,7 @@ func MainClosePositionClearCache(mainOrderId int, coverType int) {
|
||||
log.Error("MainClosePositionClearCache Unmarshal err:", err)
|
||||
}
|
||||
|
||||
if stop.PId == mainOrderId {
|
||||
if stop.MainId == mainId {
|
||||
helper.DefaultRedis.LRem(keySpotStop, item)
|
||||
}
|
||||
}
|
||||
@ -318,7 +318,7 @@ func MainClosePositionClearCache(mainOrderId int, coverType int) {
|
||||
log.Error("MainClosePositionClearCache Unmarshal err:", err)
|
||||
}
|
||||
|
||||
if position.Pid == mainOrderId {
|
||||
if position.MainId == mainId {
|
||||
helper.DefaultRedis.LRem(keyFutAddposition, item)
|
||||
}
|
||||
}
|
||||
@ -328,7 +328,7 @@ func MainClosePositionClearCache(mainOrderId int, coverType int) {
|
||||
log.Error("MainClosePositionClearCache Unmarshal err:", err)
|
||||
}
|
||||
|
||||
if stop.PId == mainOrderId {
|
||||
if stop.MainId == mainId {
|
||||
helper.DefaultRedis.LRem(keyFutStop, item)
|
||||
}
|
||||
}
|
||||
@ -352,3 +352,61 @@ func getPreOrder(db *gorm.DB, orderSn interface{}) (*DbModels.LinePreOrder, erro
|
||||
}
|
||||
return preOrder, nil
|
||||
}
|
||||
|
||||
// 取消主单下的止盈止损
|
||||
// mainId 主单id
|
||||
// symbolType 1现货 2合约
|
||||
func cancelSymbolTakeAndStop(db *gorm.DB, mainId int, symbolType int) error {
|
||||
orders, err := GetSymbolTakeAndStop(db, mainId, symbolType)
|
||||
errStr := ""
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, order := range orders {
|
||||
apiUserInfo, _ := GetApiInfo(order.ApiId)
|
||||
if apiUserInfo.Id == 0 {
|
||||
logger.Errorf("cancelSymbolTakeAndStop 查询api用户失败 apiid:%v ordersn:%s", order.ApiId, order.OrderSn)
|
||||
}
|
||||
|
||||
switch {
|
||||
case order.OrderType == 1 && symbolType == 1:
|
||||
err = CancelOpenOrderByOrderSnLoop(apiUserInfo, order.Symbol, order.OrderSn)
|
||||
|
||||
if err != nil {
|
||||
errStr += fmt.Sprintf("取消止盈失败,订单号:%s,错误:%v ", order.OrderSn, err)
|
||||
}
|
||||
case order.OrderType == 2 && symbolType == 1:
|
||||
key := fmt.Sprintf(rediskey.SpotStopLossList, global.EXCHANGE_BINANCE)
|
||||
stoplosss, _ := helper.DefaultRedis.GetAllList(key)
|
||||
stop := dto.StopLossRedisList{}
|
||||
|
||||
for _, item := range stoplosss {
|
||||
sonic.Unmarshal([]byte(item), &stop)
|
||||
|
||||
if stop.MainId == order.MainId {
|
||||
_, err2 := helper.DefaultRedis.LRem(key, item)
|
||||
|
||||
if err2 != nil {
|
||||
logger.Errorf("移除止损缓存失败 err:%v", err2)
|
||||
}
|
||||
}
|
||||
}
|
||||
case order.OrderType == 1 && symbolType == 2:
|
||||
err = CancelFutOrderByOrderSnLoop(apiUserInfo, order.Symbol, order.OrderSn)
|
||||
|
||||
if err != nil {
|
||||
errStr += fmt.Sprintf("取消止盈失败,订单号:%s,错误:%v ", order.OrderSn, err)
|
||||
}
|
||||
case order.OrderType == 2 && symbolType == 2:
|
||||
err = CancelFutOrderByOrderSnLoop(apiUserInfo, order.Symbol, order.OrderSn)
|
||||
|
||||
if err != nil {
|
||||
errStr += fmt.Sprintf("取消止损失败,订单号:%s,错误:%v ", order.OrderSn, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user