1、有更新,还没测完,暂时归档
This commit is contained in:
@ -785,9 +785,6 @@ func processTakeProfitAndStopLossOrders(db *gorm.DB, preOrder *models.LinePreOrd
|
||||
totalNum := num.Mul(decimal.NewFromFloat(0.998)).Truncate(int32(tradeSet.AmountDigit))
|
||||
num = totalNum
|
||||
|
||||
// if orderExt.TakeProfitNumRatio.Cmp(decimal.Zero) > 0 && orderExt.TakeProfitNumRatio.Cmp(decimal.NewFromInt(100)) < 0 {
|
||||
// num = num.Mul(orderExt.TakeProfitNumRatio.Div(decimal.NewFromInt(100))).Truncate(int32(tradeSet.AmountDigit))
|
||||
// }
|
||||
//止盈止损
|
||||
for _, order := range orders {
|
||||
order.Num = num.String()
|
||||
@ -828,8 +825,6 @@ func processTakeProfitAndStopLossOrders(db *gorm.DB, preOrder *models.LinePreOrd
|
||||
}
|
||||
|
||||
processStopLossOrder(order)
|
||||
// case 4: //减仓
|
||||
// processSpotReduceOrder(order)
|
||||
}
|
||||
}
|
||||
|
||||
@ -908,7 +903,7 @@ func processTakeProfitOrder(db *gorm.DB, spotApi SpotRestApi, order models.LineP
|
||||
|
||||
if err != nil {
|
||||
logger.Error("现货止盈下单失败:", order.OrderSn, " err:", err)
|
||||
if err := db.Model(&DbModels.LinePreOrder{}).Where("id = ?", order.Id).
|
||||
if err = db.Model(&DbModels.LinePreOrder{}).Where("id = ?", order.Id).
|
||||
Updates(map[string]interface{}{"status": "2", "desc": err.Error(), "num": params.Quantity, "rate": order.Rate, "price": order.Price}).Error; err != nil {
|
||||
logger.Error("现货止盈下单失败,更新状态失败:", order.OrderSn, " err:", err)
|
||||
}
|
||||
@ -924,8 +919,47 @@ func processTakeProfitOrder(db *gorm.DB, spotApi SpotRestApi, order models.LineP
|
||||
}
|
||||
}
|
||||
|
||||
// 止盈 放到止盈缓存中
|
||||
// Deprecated 暂时没用
|
||||
func processTakeProfitOrderNew(db *gorm.DB, spotApi SpotRestApi, order models.LinePreOrder) error {
|
||||
tradeSet, _ := cacheservice.GetTradeSet(global.EXCHANGE_BINANCE, order.Symbol, 1)
|
||||
|
||||
if tradeSet.Coin == "" {
|
||||
logger.Error("获取交易对失败")
|
||||
return errors.New("获取交易对失败")
|
||||
}
|
||||
|
||||
price, _ := decimal.NewFromString(order.Price)
|
||||
price = price.Truncate(int32(tradeSet.PriceDigit))
|
||||
takeOrder := dto.TakeProfitRedisList{
|
||||
Id: order.Id,
|
||||
MainId: order.MainId,
|
||||
PId: order.Pid,
|
||||
ApiId: order.ApiId,
|
||||
OrderTye: order.OrderType,
|
||||
OrderCategory: order.OrderCategory,
|
||||
Price: price,
|
||||
SymbolType: order.SymbolType,
|
||||
Symbol: order.Symbol,
|
||||
Site: order.Site,
|
||||
OrderSn: order.OrderSn,
|
||||
}
|
||||
|
||||
takeVal, _ := sonic.MarshalString(&takeOrder)
|
||||
takeKey := fmt.Sprintf(rediskey.SpotTakeList, global.EXCHANGE_BINANCE)
|
||||
|
||||
if takeVal == "" {
|
||||
return errors.New("takeVal is empty")
|
||||
}
|
||||
|
||||
if err := helper.DefaultRedis.RPushList(takeKey, takeVal); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 处理止损订单
|
||||
// order 止损单
|
||||
func processStopLossOrder(order models.LinePreOrder) error {
|
||||
price := utility.StrToDecimal(order.Price)
|
||||
stopLoss := dto.StopLossRedisList{
|
||||
@ -955,6 +989,52 @@ func processStopLossOrder(order models.LinePreOrder) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 处理止损订单 直接下到交易所
|
||||
// Deprecated: 现在不用,等止盈不挂到交易所得时候使用
|
||||
func processStopLossOrderNew(db *gorm.DB, spotApi SpotRestApi, order models.LinePreOrder) error {
|
||||
tradeSet, _ := cacheservice.GetTradeSet(global.EXCHANGE_BINANCE, order.Symbol, 1)
|
||||
|
||||
if tradeSet.Coin == "" {
|
||||
logger.Error("获取交易对失败")
|
||||
return errors.New("获取交易对失败")
|
||||
}
|
||||
|
||||
price, _ := decimal.NewFromString(order.Price)
|
||||
|
||||
params := OrderPlacementService{
|
||||
ApiId: order.ApiId,
|
||||
Symbol: order.Symbol,
|
||||
Side: order.Site,
|
||||
Price: price.Truncate(int32(tradeSet.PriceDigit)),
|
||||
Quantity: utility.StrToDecimal(order.Num),
|
||||
Type: "STOP_LOSS_LIMIT",
|
||||
TimeInForce: "GTC",
|
||||
StopPrice: price.Truncate(int32(tradeSet.PriceDigit)),
|
||||
NewClientOrderId: order.OrderSn,
|
||||
}
|
||||
|
||||
err := spotApi.OrderPlaceLoop(db, params, 3)
|
||||
|
||||
if err != nil {
|
||||
logger.Error("现货止损下单失败:", order.OrderSn, " err:", err)
|
||||
if err = db.Model(&DbModels.LinePreOrder{}).Where("id = ?", order.Id).
|
||||
Updates(map[string]interface{}{"status": "2", "desc": err.Error(), "num": params.Quantity, "rate": order.Rate, "price": order.Price}).Error; err != nil {
|
||||
logger.Error("现货止损下单失败,更新状态失败:", order.OrderSn, " err:", err)
|
||||
}
|
||||
} else {
|
||||
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? ", order.Id).
|
||||
Updates(map[string]interface{}{"trigger_time": time.Now(), "rate": order.Rate, "price": order.Price, "num": order.Num}).Error; err != nil {
|
||||
logger.Error("更新现货止损单触发事件 ordersn:", order.OrderSn)
|
||||
}
|
||||
if err := db.Model(&DbModels.LinePreOrder{}).Where("id = ? and status ='0'", order.Id).
|
||||
Updates(map[string]interface{}{"status": "1"}).Error; err != nil {
|
||||
logger.Error("现货止损下单成功,更新状态失败:", order.OrderSn, " err:", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 循环取消订单
|
||||
func CancelOpenOrderByOrderSnLoop(apiInfo DbModels.LineApiUser, symbol string, orderSn string) error {
|
||||
spotApi := SpotRestApi{}
|
||||
|
||||
Reference in New Issue
Block a user