1
This commit is contained in:
@ -88,6 +88,13 @@ func futTriggerOrder(db *gorm.DB, v *dto.PreOrderRedisList, item string, futApi
|
||||
return
|
||||
}
|
||||
|
||||
//判断是否有已触发交易对
|
||||
count, _ := GetSymbolTriggerCount(db, v.Symbol, 2)
|
||||
|
||||
if count > 0 {
|
||||
return
|
||||
}
|
||||
|
||||
price, _ := decimal.NewFromString(v.Price)
|
||||
num, _ := decimal.NewFromString(preOrder.Num)
|
||||
|
||||
@ -108,7 +115,7 @@ func futTriggerOrder(db *gorm.DB, v *dto.PreOrderRedisList, item string, futApi
|
||||
}
|
||||
preOrderVal, _ := sonic.MarshalString(&v)
|
||||
|
||||
if err := futApi.OrderPlace(db, params); err != nil {
|
||||
if err := futApi.OrderPlaceLoop(db, params, 3); err != nil {
|
||||
log.Error("下单失败", v.Symbol, " err:", err)
|
||||
err := db.Model(&DbModels.LinePreOrder{}).Where("id =? and status='0'", preOrder.Id).Updates(map[string]interface{}{"status": "2", "desc": err.Error()}).Error
|
||||
|
||||
@ -218,35 +225,35 @@ func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRes
|
||||
return
|
||||
}
|
||||
|
||||
var err error
|
||||
for x := 1; x <= 4; x++ {
|
||||
err = futApi.CancelFutOrder(apiInfo, takeOrder.Symbol, takeOrder.OrderSn)
|
||||
|
||||
if err == nil || strings.Contains(err.Error(), "取消订单被拒绝") {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
|
||||
}
|
||||
err := CancelFutOrderByOrderSnLoop(apiInfo, takeOrder.Symbol, takeOrder.OrderSn)
|
||||
|
||||
if err != nil {
|
||||
log.Error("合约止盈撤单失败", err)
|
||||
return
|
||||
}
|
||||
|
||||
price := reduceOrder.Price.Mul(decimal.NewFromInt(1).Sub(setting.ReducePremium.Div(decimal.NewFromInt(100)))).Truncate(int32(tradeSet.PriceDigit))
|
||||
num := utility.StrToDecimal(takeOrder.Num).Truncate(int32(tradeSet.AmountDigit))
|
||||
var positionSide string
|
||||
|
||||
params := FutOrderPlace{
|
||||
ApiId: reduceOrder.ApiId,
|
||||
Side: reduceOrder.Side,
|
||||
OrderType: "LIMIT",
|
||||
Symbol: reduceOrder.Symbol,
|
||||
Price: price,
|
||||
Quantity: num,
|
||||
NewClientOrderId: reduceOrder.OrderSn,
|
||||
if reduceOrder.Side == "BUY" {
|
||||
positionSide = "SHORT"
|
||||
} else {
|
||||
positionSide = "LONG"
|
||||
}
|
||||
|
||||
if err := futApi.OrderPlace(db, params); err != nil {
|
||||
// params := FutOrderPlace{
|
||||
// ApiId: reduceOrder.ApiId,
|
||||
// Side: reduceOrder.Side,
|
||||
// OrderType: "STOP",
|
||||
// Symbol: reduceOrder.Symbol,
|
||||
// Price: price,
|
||||
// StopPrice: price,
|
||||
// Quantity: num,
|
||||
// NewClientOrderId: reduceOrder.OrderSn,
|
||||
// }
|
||||
|
||||
if err := futApi.ClosePositionLoop(reduceOrder.Symbol, reduceOrder.OrderSn, num, reduceOrder.Side, positionSide, apiInfo, "LIMIT", "0", price, 3); err != nil {
|
||||
log.Errorf("合约减仓挂单失败 id:%s err:%v", reduceOrder.Id, err)
|
||||
}
|
||||
|
||||
@ -349,7 +356,7 @@ func FutAddPositionTrigger(db *gorm.DB, v *AddPositionList, item string, futApi
|
||||
}
|
||||
preOrderVal, _ := sonic.MarshalString(&v)
|
||||
|
||||
if err := futApi.OrderPlace(db, params); err != nil {
|
||||
if err := futApi.OrderPlaceLoop(db, params, 3); err != nil {
|
||||
log.Error("下单失败", v.Symbol, " err:", err)
|
||||
err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status =0", preOrder.Id).Updates(map[string]interface{}{"status": "2", "desc": err.Error()}).Error
|
||||
|
||||
|
||||
Reference in New Issue
Block a user