From fff4834a128ef8c721ee13b0a173a8f3d7fd92b4 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 27 Apr 2022 04:14:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=8A=A82.1=E7=AD=96?= =?UTF-8?q?=E7=95=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Binance.TradeRobot.API.xml | 26 +++- .../Controllers/RobotController.cs | 32 ++++- .../Controllers/SpotPolicyController.cs | 30 ++++ .../Binance.TradeRobot.Business.xml | 19 ++- .../Business/RobotBusiness.cs | 55 +++++-- .../Business/SpotPolicyBusiness.cs | 39 +++++ .../Base/MappingProfiles.cs | 16 ++- .../Binance.TradeRobot.Model.xml | 136 ++++++++++++++---- .../Db/Policy/Spot/D21Policy.cs | 40 +++++- Binance.TradeRobot.Model/Db/Robot/Robot.cs | 40 +++++- .../Db/Robot/RobotAccount.cs | 2 +- .../EditPyramidPolicyRequest.cs} | 4 +- .../Request/Robot/AddD21PolicyRobotRequest.cs | 41 ------ .../SpotPolicy/EditD21PolicyRequest.cs | 59 ++++++++ 14 files changed, 433 insertions(+), 106 deletions(-) create mode 100644 Binance.TradeRobot.API/Controllers/SpotPolicyController.cs create mode 100644 Binance.TradeRobot.Business/Business/SpotPolicyBusiness.cs rename Binance.TradeRobot.Model/Dto/Request/{Robot/AddPyramidPolicyRobotRequest.cs => PrepPolicy/EditPyramidPolicyRequest.cs} (87%) delete mode 100644 Binance.TradeRobot.Model/Dto/Request/Robot/AddD21PolicyRobotRequest.cs create mode 100644 Binance.TradeRobot.Model/Dto/Request/SpotPolicy/EditD21PolicyRequest.cs diff --git a/Binance.TradeRobot.API/Binance.TradeRobot.API.xml b/Binance.TradeRobot.API/Binance.TradeRobot.API.xml index 8cb7238..3cec8e8 100644 --- a/Binance.TradeRobot.API/Binance.TradeRobot.API.xml +++ b/Binance.TradeRobot.API/Binance.TradeRobot.API.xml @@ -31,17 +31,29 @@ - + + + 开启机器人 + + + + + + 停止机器人 + + + + 创建金字塔策略机器人 - + - + 创建动2.1策略机器人 - + @@ -49,6 +61,12 @@ + + + 编辑动2.1策略 + + + 用户登录 diff --git a/Binance.TradeRobot.API/Controllers/RobotController.cs b/Binance.TradeRobot.API/Controllers/RobotController.cs index 8d38e25..8acb9b2 100644 --- a/Binance.TradeRobot.API/Controllers/RobotController.cs +++ b/Binance.TradeRobot.API/Controllers/RobotController.cs @@ -17,24 +17,44 @@ namespace Binance.TradeRobot.API.Controllers this.robotBusiness = robotBusiness; } + /// + /// 开启机器人 + /// + /// + [HttpPost("{robotId}")] + public void StartRobot([FromRoute] long robotId) + { + robotBusiness.StartRobot(robotId); + } + + /// + /// 停止机器人 + /// + /// + [HttpPost("{robotId}")] + public void StopRobot([FromRoute] long robotId) + { + robotBusiness.StopRobot(robotId); + } + /// /// 创建金字塔策略机器人 /// - /// + /// [HttpPost] - public void AddPyramidPolicyRobot([FromBody] AddPyramidPolicyRobotRequest addPyramidPolicyRobotRequest) + public void AddPyramidPolicyRobot([FromBody] AddRobotRequest addRobotRequest) { - robotBusiness.AddPyramidPolicyRobot(addPyramidPolicyRobotRequest); + robotBusiness.AddPyramidPolicyRobot(addRobotRequest); } /// /// 创建动2.1策略机器人 /// - /// + /// [HttpPost] - public void AddD21PolicyRobot([FromBody] AddD21PolicyRobotRequest addD21PolicyRobotRequest) + public void AddD21PolicyRobot([FromBody] AddRobotRequest addRobotRequest) { - robotBusiness.AddD21PolicyRobot(addD21PolicyRobotRequest); + robotBusiness.AddD21PolicyRobot(addRobotRequest); } /// diff --git a/Binance.TradeRobot.API/Controllers/SpotPolicyController.cs b/Binance.TradeRobot.API/Controllers/SpotPolicyController.cs new file mode 100644 index 0000000..81be016 --- /dev/null +++ b/Binance.TradeRobot.API/Controllers/SpotPolicyController.cs @@ -0,0 +1,30 @@ +using Binance.TradeRobot.Business; +using Binance.TradeRobot.Model.Dto; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace Binance.TradeRobot.API.Controllers +{ + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + public class SpotPolicyController : BaseApiController + { + private SpotPolicyBusiness spotPolicyBusiness; + + public SpotPolicyController(SpotPolicyBusiness spotPolicyBusiness) + { + this.spotPolicyBusiness = spotPolicyBusiness; + } + + /// + /// 编辑动2.1策略 + /// + /// + [HttpPost] + public void EditD21Policy([FromBody] EditD21PolicyRequest editD21PolicyRequest) + { + spotPolicyBusiness.EditD21Policy(editD21PolicyRequest); + } + } +} diff --git a/Binance.TradeRobot.Business/Binance.TradeRobot.Business.xml b/Binance.TradeRobot.Business/Binance.TradeRobot.Business.xml index 1588b16..df414b2 100644 --- a/Binance.TradeRobot.Business/Binance.TradeRobot.Business.xml +++ b/Binance.TradeRobot.Business/Binance.TradeRobot.Business.xml @@ -28,17 +28,28 @@ 机器人Id - + 添加金字塔策略机器人 - + - + 添加动2.1策略机器人 - + + + + + 获取动2.1策略机器人列表 + + + + + + 现货策略 + diff --git a/Binance.TradeRobot.Business/Business/RobotBusiness.cs b/Binance.TradeRobot.Business/Business/RobotBusiness.cs index 7c3b541..9186379 100644 --- a/Binance.TradeRobot.Business/Business/RobotBusiness.cs +++ b/Binance.TradeRobot.Business/Business/RobotBusiness.cs @@ -6,6 +6,7 @@ using Binance.TradeRobot.Model.Db; using Binance.TradeRobot.Model.Dto; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; +using System; using System.Collections.Generic; using System.Data.Common; using Yitter.IdGenerator; @@ -45,6 +46,16 @@ namespace Binance.TradeRobot.Business throw new BusinessException("同一个交易所账号下只允许存在一个交易对"); } + public void StartRobot(long robotId) + { + + } + + public void StopRobot(long robotId) + { + + } + /// /// 添加机器人和账户 /// @@ -61,6 +72,9 @@ namespace Binance.TradeRobot.Business TradePolicy = addRobotRequest.TradePolicy, BusinessType = addRobotRequest.TradePolicy.GetBusinessType(), ExchangeId = addRobotRequest.ExchangeId, + CreateTime = DateTime.Now, + RunningTime = 0, + State = Enums.RobotState.Stop }).WithTransaction(tran).ExecuteAffrows(); fsql.Insert(new RobotAccount() @@ -77,16 +91,16 @@ namespace Binance.TradeRobot.Business /// /// 添加金字塔策略机器人 /// - /// - public void AddPyramidPolicyRobot(AddPyramidPolicyRobotRequest addPyramidPolicyRobotRequest) + /// + public void AddPyramidPolicyRobot(AddRobotRequest addRobotRequest) { - CheckRobotRegister(addPyramidPolicyRobotRequest, out ExchangeAPIKey exchangeAPIKey); - var pyramidPolicy = addPyramidPolicyRobotRequest.Map(); + CheckRobotRegister(addRobotRequest, out ExchangeAPIKey exchangeAPIKey); + var pyramidPolicy = new PyramidPolicy(); pyramidPolicy.Id = idGenerator.NewLong(); fsql.Transaction(() => { var tran = fsql.Ado.TransactionCurrentThread; - pyramidPolicy.RobotId = AddRobotWithTran(addPyramidPolicyRobotRequest, tran); + pyramidPolicy.RobotId = AddRobotWithTran(addRobotRequest, tran); fsql.Insert(pyramidPolicy).ExecuteAffrows(); }); @@ -96,20 +110,30 @@ namespace Binance.TradeRobot.Business /// /// 添加动2.1策略机器人 /// - /// - public void AddD21PolicyRobot(AddD21PolicyRobotRequest addD21PolicyRobotRequest) + /// + public void AddD21PolicyRobot(AddRobotRequest addRobotRequest) { - CheckRobotRegister(addD21PolicyRobotRequest, out _); - var d21Policy = addD21PolicyRobotRequest.Map(); - d21Policy.Id = idGenerator.NewLong(); + CheckRobotRegister(addRobotRequest, out _); + var d21Policy = new D21Policy() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + ExecutionMode = Enums.ExecutionMode.Both, + IsEnabledIncreasePurchase = true, + IsEnableRemedyForErrorCrossSignal = true + }; fsql.Transaction(() => { var tran = fsql.Ado.TransactionCurrentThread; - d21Policy.RobotId = AddRobotWithTran(addD21PolicyRobotRequest, tran); + d21Policy.RobotId = AddRobotWithTran(addRobotRequest, tran); fsql.Insert(d21Policy).ExecuteAffrows(); }); } + /// + /// 获取动2.1策略机器人列表 + /// + /// public IList GetD21PolicyRobotList() { var robotList = fsql.Select().InnerJoin((r, ra, d) => r.Id == ra.RobotId) @@ -140,7 +164,14 @@ namespace Binance.TradeRobot.Business D21PeriodicSignal = d.PeriodicSignal, D21PolicyId = d.Id, D21Position = d.Position, - D21StopLossRatio = d.StopLossRatio + D21Assets = d.Assets, + D21Level1PositionStopLossRatio = d.Level1PositionStopLossRatio, + D21Level1PriceStopLossRatio = d.Level1PriceStopLossRatio, + D21Level2PositionStopLossRatio = d.Level2PositionStopLossRatio, + D21Level2PriceStopLossRatio = d.Level2PriceStopLossRatio, + D21MaxExchangeLoanRatio = d.MaxExchangeLoanRatio, + D21MaxSystemLoanRatio = d.MaxSystemLoanRatio, + D21CreateTime = d.CreateTime }).Map>(); diff --git a/Binance.TradeRobot.Business/Business/SpotPolicyBusiness.cs b/Binance.TradeRobot.Business/Business/SpotPolicyBusiness.cs new file mode 100644 index 0000000..0892cce --- /dev/null +++ b/Binance.TradeRobot.Business/Business/SpotPolicyBusiness.cs @@ -0,0 +1,39 @@ +using Binance.TradeRobot.Common.DI; +using Binance.TradeRobot.Common.Extensions; +using Binance.TradeRobot.Model.Base; +using Binance.TradeRobot.Model.Db; +using Binance.TradeRobot.Model.Dto; +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Text; +using Yitter.IdGenerator; + +namespace Binance.TradeRobot.Business +{ + /// + /// 现货策略 + /// + [BatchRegistration(ServiceLifetime.Singleton, RegistrationType.Self)] + public class SpotPolicyBusiness : BaseBusiness + { + public SpotPolicyBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache) : base(fsql, logManager, idGenerator, memoryCache) + { + + } + + public void EditD21Policy(EditD21PolicyRequest editD21PolicyRequest) + { + var d21policy = fsql.Select(editD21PolicyRequest.Id).ToOne(); + if (d21policy == null) + throw new BusinessException("d21策略不存在"); + editD21PolicyRequest.Map(d21policy); + fsql.Update().SetSource(d21policy).ExecuteAffrows(); + + /*取消历史委托订单*/ + + /*检查是否有持仓 如果有重新下委托单*/ + } + } +} diff --git a/Binance.TradeRobot.Model/Base/MappingProfiles.cs b/Binance.TradeRobot.Model/Base/MappingProfiles.cs index 9ac3a42..4a9ef0d 100644 --- a/Binance.TradeRobot.Model/Base/MappingProfiles.cs +++ b/Binance.TradeRobot.Model/Base/MappingProfiles.cs @@ -16,9 +16,6 @@ namespace Binance.TradeRobot.Model.Base CreateMap(); CreateMap(); - CreateMap(); - CreateMap(); - CreateMap().ForPath(t => t.RobotAccount.Id, opt => opt.MapFrom(f => f.RobotAccountId)) .ForPath(t => t.RobotAccount.RobotId, opt => opt.MapFrom(f => f.Id)) .ForPath(t => t.RobotAccount.SoptCurrentcyAmount, opt => opt.MapFrom(f => f.SoptCurrentcyAmount)) @@ -35,9 +32,18 @@ namespace Binance.TradeRobot.Model.Base .ForPath(t => t.D21Policy.IsEnableRemedyForErrorCrossSignal, opt => opt.MapFrom(f => f.D21IsEnableRemedyForErrorCrossSignal)) .ForPath(t => t.D21Policy.PeriodicSignal, opt => opt.MapFrom(f => f.D21PeriodicSignal)) .ForPath(t => t.D21Policy.MaxFollowPurchaseRatio, opt => opt.MapFrom(f => f.D21MaxFollowPurchaseRatio)) - .ForPath(t => t.D21Policy.StopLossRatio, opt => opt.MapFrom(f => f.D21StopLossRatio)) .ForPath(t => t.D21Policy.CreateTime, opt => opt.MapFrom(f => f.D21CreateTime)) - .ForPath(t => t.D21Policy.ExecutionMode, opt => opt.MapFrom(f => f.D21ExecutionMode)); + .ForPath(t => t.D21Policy.ExecutionMode, opt => opt.MapFrom(f => f.D21ExecutionMode)) + .ForPath(t => t.D21Policy.Assets, opt => opt.MapFrom(f => f.D21Assets)) + .ForPath(t => t.D21Policy.MaxExchangeLoanRatio, opt => opt.MapFrom(f => f.D21MaxExchangeLoanRatio)) + .ForPath(t => t.D21Policy.MaxSystemLoanRatio, opt => opt.MapFrom(f => f.D21MaxSystemLoanRatio)) + .ForPath(t => t.D21Policy.Level1PositionStopLossRatio, opt => opt.MapFrom(f => f.D21Level1PositionStopLossRatio)) + .ForPath(t => t.D21Policy.Level1PriceStopLossRatio, opt => opt.MapFrom(f => f.D21Level1PriceStopLossRatio)) + .ForPath(t => t.D21Policy.Level2PositionStopLossRatio, opt => opt.MapFrom(f => f.D21Level2PositionStopLossRatio)) + .ForPath(t => t.D21Policy.Level2PriceStopLossRatio, opt => opt.MapFrom(f => f.D21Level2PriceStopLossRatio)); + + CreateMap(); + CreateMap(); } } } diff --git a/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml b/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml index cf27d2d..4dc3a8a 100644 --- a/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml +++ b/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml @@ -209,6 +209,16 @@ 最大追高比例 + + + 最大系统借币比例 + + + + + 最大交易所借币比例 + + 信号周期 @@ -219,9 +229,29 @@ 仓位 - + + + 配置资产 + + + + + 一级止损-成交价亏损比例 + + + + + 一级止损-仓位止损比例 + + + + + 二级止损-成交价亏损比例 + + + - 止损比例 + 二级止损-仓位止损比例 @@ -294,6 +324,16 @@ 最大追高比例 + + + 最大系统借币比例 + + + + + 最大交易所借币比例 + + 信号周期 @@ -304,9 +344,29 @@ 仓位 - + + + 资产配置 + + + - 止损比例 + 一级止损-成交价亏损比例 + + + + + 一级止损-仓位止损比例 + + + + + 二级止损-成交价亏损比例 + + + + + 二级止损-仓位止损比例 @@ -339,7 +399,7 @@ 总借币金额 - + 现货持仓均价 @@ -414,64 +474,84 @@ 交易策略 - + - 是否开启增购 + 信号周期 - + - 是否开启错误信号补救 + 杠杆倍数 - + - 最大追高比例 + 仓位 - + - 信号周期 + 金字塔 - + - 仓位 + 交易对 + + + + + 交易所APIKeyId - + - 止损比例 + 最大系统借币比例 - + + + 最大交易所借币比例 + + + + + 最大追高比例 + + + 信号周期 - + - 杠杆倍数 + 仓位(USDT) - + - 仓位 + 配置资产 - + - 金字塔 + 一级止损-成交价亏损比例 - + - 交易对 + 一级止损-仓位止损比例 - + - 交易所APIKeyId + 二级止损-成交价亏损比例 + + + + + 二级止损-仓位止损比例 diff --git a/Binance.TradeRobot.Model/Db/Policy/Spot/D21Policy.cs b/Binance.TradeRobot.Model/Db/Policy/Spot/D21Policy.cs index 8e1f938..13b493b 100644 --- a/Binance.TradeRobot.Model/Db/Policy/Spot/D21Policy.cs +++ b/Binance.TradeRobot.Model/Db/Policy/Spot/D21Policy.cs @@ -39,6 +39,18 @@ namespace Binance.TradeRobot.Model.Db [Column(DbType = "decimal(18,2)")] public decimal MaxFollowPurchaseRatio { get; set; } = 0.0M; + /// + /// 最大系统借币比例 + /// + [Column(DbType = "decimal(18,2)")] + public decimal MaxSystemLoanRatio { get; set; } = 0.0M; + + /// + /// 最大交易所借币比例 + /// + [Column(DbType = "decimal(18,2)")] + public decimal MaxExchangeLoanRatio { get; set; } = 0.00M; + /// /// 信号周期 /// @@ -55,10 +67,34 @@ namespace Binance.TradeRobot.Model.Db public long RobotId { get; set; } /// - /// 止损比例 + /// 配置资产 + /// + [Column(DbType = "decimal(18,8)")] + public decimal Assets { get; set; } = 0.0M; + + /// + /// 一级止损-成交价亏损比例 + /// + [Column(DbType = "decimal(18,2)")] + public decimal Level1PriceStopLossRatio { get; set; } = 0.0M; + + /// + /// 一级止损-仓位止损比例 + /// + [Column(DbType = "decimal(18,2)")] + public decimal Level1PositionStopLossRatio { get; set; } = 0.0M; + + /// + /// 二级止损-成交价亏损比例 + /// + [Column(DbType = "decimal(18,2)")] + public decimal Level2PriceStopLossRatio { get; set; } = 0.0M; + + /// + /// 二级止损-仓位止损比例 /// [Column(DbType = "decimal(18,2)")] - public decimal StopLossRatio { get; set; } = 0.0M; + public decimal Level2PositionStopLossRatio { get; set; } = 0.0M; } } diff --git a/Binance.TradeRobot.Model/Db/Robot/Robot.cs b/Binance.TradeRobot.Model/Db/Robot/Robot.cs index 31490e7..3fe9b6c 100644 --- a/Binance.TradeRobot.Model/Db/Robot/Robot.cs +++ b/Binance.TradeRobot.Model/Db/Robot/Robot.cs @@ -106,6 +106,18 @@ namespace Binance.TradeRobot.Model.Db [Column(IsIgnore = true)] public decimal D21MaxFollowPurchaseRatio { get; set; } = 0.0M; + /// + /// 最大系统借币比例 + /// + [Column(IsIgnore = true)] + public decimal D21MaxSystemLoanRatio { get; set; } = 0.00M; + + /// + /// 最大交易所借币比例 + /// + [Column(IsIgnore = true)] + public decimal D21MaxExchangeLoanRatio { get; set; } = 0.00M; + /// /// 信号周期 /// @@ -119,10 +131,34 @@ namespace Binance.TradeRobot.Model.Db public decimal D21Position { get; set; } = 0.0M; /// - /// 止损比例 + /// 资产配置 + /// + [Column(IsIgnore = true)] + public decimal D21Assets { get; set; } = 0.0M; + + /// + /// 一级止损-成交价亏损比例 + /// + [Column(IsIgnore = true)] + public decimal D21Level1PriceStopLossRatio { get; set; } = 0.0M; + + /// + /// 一级止损-仓位止损比例 + /// + [Column(IsIgnore = true)] + public decimal D21Level1PositionStopLossRatio { get; set; } = 0.0M; + + /// + /// 二级止损-成交价亏损比例 + /// + [Column(IsIgnore = true)] + public decimal D21Level2PriceStopLossRatio { get; set; } = 0.0M; + + /// + /// 二级止损-仓位止损比例 /// [Column(IsIgnore = true)] - public decimal D21StopLossRatio { get; set; } + public decimal D21Level2PositionStopLossRatio { get; set; } = 0.0M; [Column(IsIgnore = true)] public DateTime D21CreateTime { get; set; } diff --git a/Binance.TradeRobot.Model/Db/Robot/RobotAccount.cs b/Binance.TradeRobot.Model/Db/Robot/RobotAccount.cs index 76d90a1..d1830d3 100644 --- a/Binance.TradeRobot.Model/Db/Robot/RobotAccount.cs +++ b/Binance.TradeRobot.Model/Db/Robot/RobotAccount.cs @@ -53,7 +53,7 @@ namespace Binance.TradeRobot.Model.Db /// 现货持仓均价 /// [Column(IsIgnore = true)] - public decimal SpotCurrencyAcgPrice + public decimal SpotCurrencyAvgPrice { get { diff --git a/Binance.TradeRobot.Model/Dto/Request/Robot/AddPyramidPolicyRobotRequest.cs b/Binance.TradeRobot.Model/Dto/Request/PrepPolicy/EditPyramidPolicyRequest.cs similarity index 87% rename from Binance.TradeRobot.Model/Dto/Request/Robot/AddPyramidPolicyRobotRequest.cs rename to Binance.TradeRobot.Model/Dto/Request/PrepPolicy/EditPyramidPolicyRequest.cs index ae46774..a1613a6 100644 --- a/Binance.TradeRobot.Model/Dto/Request/Robot/AddPyramidPolicyRobotRequest.cs +++ b/Binance.TradeRobot.Model/Dto/Request/PrepPolicy/EditPyramidPolicyRequest.cs @@ -2,8 +2,10 @@ namespace Binance.TradeRobot.Model.Dto { - public class AddPyramidPolicyRobotRequest : AddRobotRequest + public class EditPyramidPolicyRequest { + public long Id { get; set; } + /// /// 信号周期 /// diff --git a/Binance.TradeRobot.Model/Dto/Request/Robot/AddD21PolicyRobotRequest.cs b/Binance.TradeRobot.Model/Dto/Request/Robot/AddD21PolicyRobotRequest.cs deleted file mode 100644 index d0f84e5..0000000 --- a/Binance.TradeRobot.Model/Dto/Request/Robot/AddD21PolicyRobotRequest.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Binance.TradeRobot.Model.Base; - -namespace Binance.TradeRobot.Model.Dto -{ - public class AddD21PolicyRobotRequest : AddRobotRequest - { - public Enums.ExecutionMode ExecutionMode { get; set; } = Enums.ExecutionMode.Both; - - /// - /// 是否开启增购 - /// - - public bool IsEnabledIncreasePurchase { get; set; } = true; - - /// - /// 是否开启错误信号补救 - /// - - public bool IsEnableRemedyForErrorCrossSignal { get; set; } = true; - - /// - /// 最大追高比例 - /// - public decimal MaxFollowPurchaseRatio { get; set; } = 0.0M; - - /// - /// 信号周期 - /// - public Enums.SignalPeriod PeriodicSignal { get; set; } - - /// - /// 仓位 - /// - public decimal Position { get; set; } = 0.0M; - - /// - /// 止损比例 - /// - public decimal StopLossRatio { get; set; } - } -} diff --git a/Binance.TradeRobot.Model/Dto/Request/SpotPolicy/EditD21PolicyRequest.cs b/Binance.TradeRobot.Model/Dto/Request/SpotPolicy/EditD21PolicyRequest.cs new file mode 100644 index 0000000..214630f --- /dev/null +++ b/Binance.TradeRobot.Model/Dto/Request/SpotPolicy/EditD21PolicyRequest.cs @@ -0,0 +1,59 @@ +using Binance.TradeRobot.Model.Base; + +namespace Binance.TradeRobot.Model.Dto +{ + public class EditD21PolicyRequest + { + public long Id { get; set; } + + /// + /// 最大系统借币比例 + /// + public decimal MaxSystemLoanRatio { get; set; } = 0.00M; + + /// + /// 最大交易所借币比例 + /// + public decimal MaxExchangeLoanRatio { get; set; } = 0.00M; + + /// + /// 最大追高比例 + /// + public decimal MaxFollowPurchaseRatio { get; set; } = 0.0M; + + /// + /// 信号周期 + /// + public Enums.SignalPeriod PeriodicSignal { get; set; } + + /// + /// 仓位(USDT) + /// + public decimal Position { get; set; } = 0.0M; + + /// + /// 配置资产 + /// + public decimal Assets { get; set; } = 0.0M; + + /// + /// 一级止损-成交价亏损比例 + /// + public decimal Level1PriceStopLossRatio { get; set; } = 0.0M; + + /// + /// 一级止损-仓位止损比例 + /// + public decimal Level1PositionStopLossRatio { get; set; } = 0.0M; + + /// + /// 二级止损-成交价亏损比例 + /// + public decimal Level2PriceStopLossRatio { get; set; } = 0.0M; + + /// + /// 二级止损-仓位止损比例 + /// + public decimal Level2PositionStopLossRatio { get; set; } = 0.0M; + } +}