1、减仓后减仓
This commit is contained in:
@ -270,7 +270,7 @@ func JudgeSpotReduce(trade models.TradeSet) {
|
||||
tradePrice, _ := decimal.NewFromString(trade.LastPrice)
|
||||
//减仓单减仓策略
|
||||
reduceReduceListKey := fmt.Sprintf(rediskey.SpotOrderReduceStrategyList, global.EXCHANGE_BINANCE)
|
||||
orderReduceVal, _ := helper.DefaultRedis.GetAllList(reduceReduceListKey)
|
||||
orderReduceVal, _ := helper.DefaultRedis.HGetAllFields(reduceReduceListKey)
|
||||
reduceOrderStrategy := dto.LineOrderReduceStrategyResp{}
|
||||
|
||||
for _, item := range orderReduceVal {
|
||||
@ -290,14 +290,14 @@ func JudgeSpotReduce(trade models.TradeSet) {
|
||||
return
|
||||
} else if ok {
|
||||
defer lock.Release()
|
||||
hasrecord, _ := helper.DefaultRedis.IsElementInList(reduceReduceListKey, item)
|
||||
hasrecord, _ := helper.DefaultRedis.HExists(reduceReduceListKey, utility.IntTostring(reduceOrderStrategy.OrderId), item)
|
||||
|
||||
if !hasrecord {
|
||||
log.Debug("减仓缓存中不存在", item)
|
||||
return
|
||||
}
|
||||
|
||||
order, err := CreateReduceReduceOrder(db, reduceOrderStrategy.OrderId, item2.Price, item2.Num, trade.AmountDigit)
|
||||
order, err := CreateReduceReduceOrder(db, reduceOrderStrategy.OrderId, item2.Price, item2.Num, trade.PriceDigit)
|
||||
|
||||
if err != nil {
|
||||
log.Errorf("%d 生成订单失败", reduceOrderStrategy.OrderId)
|
||||
@ -312,7 +312,7 @@ func JudgeSpotReduce(trade models.TradeSet) {
|
||||
reduceOrder.OrderSn = order.OrderSn
|
||||
reduceOrder.Price = item2.Price
|
||||
reduceOrder.Num = item2.Num
|
||||
if SpotReduceTrigger(db, reduceOrder, spotApi, setting, key, item, true) {
|
||||
if SpotReduceTrigger(db, reduceOrder, spotApi, setting, reduceReduceListKey, item, true, reduceOrderStrategy.OrderId) {
|
||||
reduceOrderStrategy.Items[index].Actived = true
|
||||
allActive := true
|
||||
orderId := utility.IntToString(reduceOrderStrategy.OrderId)
|
||||
@ -358,14 +358,16 @@ func JudgeSpotReduce(trade models.TradeSet) {
|
||||
orderPrice.Cmp(decimal.Zero) > 0 &&
|
||||
tradePrice.Cmp(decimal.Zero) > 0 {
|
||||
|
||||
SpotReduceTrigger(db, reduceOrder, spotApi, setting, key, item, false)
|
||||
SpotReduceTrigger(db, reduceOrder, spotApi, setting, key, item, false, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 触发现货减仓
|
||||
func SpotReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, spotApi SpotRestApi, setting DbModels.LineSystemSetting, key, item string, isStrategy bool) bool {
|
||||
// isStrategy 是否是策略减仓单
|
||||
// reduceId 策略主减仓单id
|
||||
func SpotReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, spotApi SpotRestApi, setting DbModels.LineSystemSetting, key, item string, isStrategy bool, reduceId int) bool {
|
||||
tradeSet, err := cacheservice.GetTradeSet(global.EXCHANGE_BINANCE, reduceOrder.Symbol, 0)
|
||||
result := true
|
||||
|
||||
@ -385,7 +387,13 @@ func SpotReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, spotApi SpotRest
|
||||
log.Error("查询止盈单失败")
|
||||
return false
|
||||
}
|
||||
hasrecord, _ := helper.DefaultRedis.IsElementInList(key, item)
|
||||
var hasrecord bool
|
||||
|
||||
if isStrategy {
|
||||
hasrecord, _ = helper.DefaultRedis.HExists(key, utility.IntToString(reduceId), item)
|
||||
} else {
|
||||
hasrecord, _ = helper.DefaultRedis.IsElementInList(key, item)
|
||||
}
|
||||
|
||||
if !hasrecord {
|
||||
log.Debug("减仓缓存中不存在", item)
|
||||
|
||||
Reference in New Issue
Block a user