From 924ccf220300a62618c8af75c343fe17a24415a0 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 25 May 2022 15:37:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A9=BA=E4=BA=A4=E5=8F=89=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E9=99=90=E4=BB=B7=E5=8D=95=E5=86=8D=E5=8D=96=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spot/D21OrderPublishBusiness.cs | 50 +++++++------------ .../TradeBusiness/BaseTradeBusiness.cs | 16 ++++++ .../TradeBusiness/Spot/D21TradeBusiness.cs | 6 +++ SDKAdapter/APIClient/BinanceAPIClient.cs | 2 +- 4 files changed, 42 insertions(+), 32 deletions(-) diff --git a/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs b/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs index 25d0758..2d802c8 100644 --- a/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs +++ b/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs @@ -134,25 +134,25 @@ namespace Binance.TradeRobot.Business updateUserList = new List>(); insertUserAccountProfitLossRecordList = new List(); - if (spotOrderPublishInfo.OrderType == Enums.OrderType.MARKET) - { - //市价卖单完全成交,取消尚未触发的限价止损单 - try - { - CancelStopLossOrder(robot, apiClient); - } - catch (Exception ex) - { - logList.Add(new ExecutionLog() - { - Id = idGenerator.NewLong(), - SourceSingal = Enums.SingalType.订单推送, - RobotId = robot.Id, - CreateTime = DateTime.Now, - Content = $"取消止损单失败,{ex.Message}" - }); - } - } + //if (spotOrderPublishInfo.OrderType == Enums.OrderType.MARKET) + //{ + //市价卖单完全成交,取消尚未触发的限价止损单 + //try + //{ + // CancelStopLossOrder(robot, apiClient); + //} + //catch (Exception ex) + //{ + // logList.Add(new ExecutionLog() + // { + // Id = idGenerator.NewLong(), + // SourceSingal = Enums.SingalType.订单推送, + // RobotId = robot.Id, + // CreateTime = DateTime.Now, + // Content = $"取消止损单失败,{ex.Message}" + // }); + //} + //} var interest = 0M; //借币利息 var loanAmount = robot.RobotAccount.LoanAmount; //借币金额 @@ -297,17 +297,5 @@ namespace Binance.TradeRobot.Business Content = $"{(isFirstStopLoss ? 1 : 2)}级止损挂单成功,订单号:{stopOrderId},挂单数量:{stopQuantity}" }); } - - private void CancelStopLossOrder(D21PolicyRobotResponse d21Robot, BaseAPIClient baseAPIClient) - { - var stopLossOrderIdList = fsql.Select().Where(o => o.OrderType == Enums.OrderType.STOP_LOSS_LIMIT && - o.State == Enums.SpotOrderState.Created && - o.RobotId == d21Robot.Id).ToList(o => o.Id); - if (stopLossOrderIdList == null || stopLossOrderIdList.Count() == 0) - return; - - foreach (var stopLossOrderId in stopLossOrderIdList) - baseAPIClient.CancelIsolateMarginOrder(d21Robot.Symbol, stopLossOrderId); - } } } diff --git a/Binance.TradeRobot.Business/Business/TradeBusiness/BaseTradeBusiness.cs b/Binance.TradeRobot.Business/Business/TradeBusiness/BaseTradeBusiness.cs index 1eba94e..ae50bfd 100644 --- a/Binance.TradeRobot.Business/Business/TradeBusiness/BaseTradeBusiness.cs +++ b/Binance.TradeRobot.Business/Business/TradeBusiness/BaseTradeBusiness.cs @@ -2,8 +2,10 @@ using Binance.TradeRobot.Model.Db; using Binance.TradeRobot.Model.Dto; using Microsoft.Extensions.Caching.Memory; +using SDKAdapter.APIClient; using System; using System.Collections.Generic; +using System.Linq; using System.Text; using Yitter.IdGenerator; @@ -53,5 +55,19 @@ namespace Binance.TradeRobot.Business var random = new Random(guid.GetHashCode()); return $"{Convert.ToChar(random.Next(97, 123))}{guid.ToString().Substring(0, 4)}_{robotId}_{(int)tradePolicy}"; } + + protected void CancelStopLossOrder(RobotResponse d21Robot, BaseAPIClient baseAPIClient = null) + { + if (baseAPIClient == null) + baseAPIClient = GetBaseAPIClient(d21Robot.ExchangeId, d21Robot.ExchangeAPIKey.AccountId, d21Robot.ExchangeAPIKey.APIKey, d21Robot.ExchangeAPIKey.SecretKey); + var stopLossOrderIdList = fsql.Select().Where(o => o.OrderType == Enums.OrderType.STOP_LOSS_LIMIT && + o.State == Enums.SpotOrderState.Created && + o.RobotId == d21Robot.Id).ToList(o => o.Id); + if (stopLossOrderIdList == null || stopLossOrderIdList.Count() == 0) + return; + + foreach (var stopLossOrderId in stopLossOrderIdList) + baseAPIClient.CancelIsolateMarginOrder(d21Robot.Symbol, stopLossOrderId); + } } } diff --git a/Binance.TradeRobot.Business/Business/TradeBusiness/Spot/D21TradeBusiness.cs b/Binance.TradeRobot.Business/Business/TradeBusiness/Spot/D21TradeBusiness.cs index 120c95c..012b789 100644 --- a/Binance.TradeRobot.Business/Business/TradeBusiness/Spot/D21TradeBusiness.cs +++ b/Binance.TradeRobot.Business/Business/TradeBusiness/Spot/D21TradeBusiness.cs @@ -304,8 +304,14 @@ namespace Binance.TradeRobot.Business } #endregion + #region 取消止损限价单 + step = "取消止损限价单"; + CancelStopLossOrder(robot); + #endregion + #region 验证卖币数量 step = "验证卖币数量"; + Thread.Sleep(1000); var saleQuantity = robot.RobotAccount.SpotCurrencyQuantity.CutDecimal(symbolInfo.SaleQuantityAccuracy); if (saleQuantity == 0M) throw new BusinessException("没有足够的卖币数量"); diff --git a/SDKAdapter/APIClient/BinanceAPIClient.cs b/SDKAdapter/APIClient/BinanceAPIClient.cs index ed4570b..353a074 100644 --- a/SDKAdapter/APIClient/BinanceAPIClient.cs +++ b/SDKAdapter/APIClient/BinanceAPIClient.cs @@ -137,7 +137,7 @@ namespace SDKAdapter.APIClient public override void CancelIsolateMarginOrder(string symbol, long orderId) { - _ = binanceClient.SpotApi.Trading.CancelMarginOrderAsync(symbol, orderId, isIsolated: true); + _ = binanceClient.SpotApi.Trading.CancelMarginOrderAsync(symbol, orderId, isIsolated: true).Result; } } }