1
This commit is contained in:
@ -153,7 +153,7 @@ func JudgeFuturesReduce(trade models.TradeSet) {
|
||||
}
|
||||
|
||||
db := GetDBConnection()
|
||||
spotApi := SpotRestApi{}
|
||||
futApi := FutRestApi{}
|
||||
setting, err := GetSystemSetting(db)
|
||||
|
||||
if err != nil {
|
||||
@ -161,13 +161,6 @@ func JudgeFuturesReduce(trade models.TradeSet) {
|
||||
return
|
||||
}
|
||||
|
||||
tradeSet, err := GetTradeSet(trade.Coin+trade.Currency, 0)
|
||||
|
||||
if err != nil {
|
||||
log.Error("获取交易设置失败")
|
||||
return
|
||||
}
|
||||
|
||||
for _, item := range reduceVal {
|
||||
reduceOrder := ReduceListItem{}
|
||||
if err := sonic.Unmarshal([]byte(item), &reduceOrder); err != nil {
|
||||
@ -184,14 +177,20 @@ func JudgeFuturesReduce(trade models.TradeSet) {
|
||||
((strings.ToUpper(reduceOrder.Side) == "SELL" && orderPrice.Cmp(tradePrice) >= 0) ||
|
||||
(strings.ToUpper(reduceOrder.Side) == "BUY" && orderPrice.Cmp(tradePrice) <= 0)) {
|
||||
|
||||
SpotReduceTrigger(db, reduceOrder, spotApi, setting, tradeSet, key, item)
|
||||
FuturesReduceTrigger(db, reduceOrder, futApi, setting, key, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 触发合约减仓
|
||||
func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRestApi, setting DbModels.LineSystemSetting, tradeSet models.TradeSet, key, item string) {
|
||||
func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRestApi, setting DbModels.LineSystemSetting, key, item string) {
|
||||
tradeSet, _ := GetTradeSet(reduceOrder.Symbol, 1)
|
||||
|
||||
if tradeSet.LastPrice == "" {
|
||||
return
|
||||
}
|
||||
|
||||
lock := helper.NewRedisLock(fmt.Sprintf(rediskey.FutTrigger, reduceOrder.ApiId, reduceOrder.Symbol), 20, 5, 100*time.Millisecond)
|
||||
|
||||
if ok, err := lock.AcquireWait(context.Background()); err != nil {
|
||||
@ -205,6 +204,13 @@ func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRes
|
||||
return
|
||||
}
|
||||
|
||||
hasrecord, _ := helper.DefaultRedis.IsElementInList(key, item)
|
||||
|
||||
if !hasrecord {
|
||||
log.Debug("减仓缓存中不存在", item)
|
||||
return
|
||||
}
|
||||
|
||||
apiInfo, _ := GetApiInfo(takeOrder.ApiId)
|
||||
|
||||
if apiInfo.Id == 0 {
|
||||
@ -216,7 +222,8 @@ func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRes
|
||||
for x := 1; x <= 4; x++ {
|
||||
err = futApi.CancelFutOrder(apiInfo, takeOrder.Symbol, takeOrder.OrderSn)
|
||||
|
||||
if err == nil {
|
||||
if err == nil || strings.Contains(err.Error(), "取消订单被拒绝") {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user