Browse Source

新增添加动2.1机器人接口

新增查询动.21机器人接口
master
shanji 3 years ago
parent
commit
3beff6cf5d
  1. 8
      Binance.TradeRobot.API/Binance.TradeRobot.API.xml
  2. 22
      Binance.TradeRobot.API/Controllers/RobotController.cs
  3. 6
      Binance.TradeRobot.Business/Binance.TradeRobot.Business.xml
  4. 92
      Binance.TradeRobot.Business/Business/RobotBusiness.cs
  5. 3
      Binance.TradeRobot.Business/Extensions/RobotExtension.cs
  6. 48
      Binance.TradeRobot.Model/Base/Enums.cs
  7. 21
      Binance.TradeRobot.Model/Base/MappingProfiles.cs
  8. 163
      Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml
  9. 4
      Binance.TradeRobot.Model/Db/Policy/Spot/D21Policy.cs
  10. 93
      Binance.TradeRobot.Model/Db/Robot/Robot.cs
  11. 12
      Binance.TradeRobot.Model/Db/Robot/RobotAccount.cs
  12. 41
      Binance.TradeRobot.Model/Dto/Request/Robot/AddD21PolicyRobotRequest.cs
  13. 8
      Binance.TradeRobot.Model/Dto/Response/Policy/D21PolicyResponse.cs
  14. 7
      Binance.TradeRobot.Model/Dto/Response/Robot/D21PolicyRobotResponse.cs
  15. 8
      Binance.TradeRobot.Model/Dto/Response/Robot/RobotAccountResponse.cs
  16. 27
      Binance.TradeRobot.Model/Dto/Response/Robot/RobotResponse.cs

8
Binance.TradeRobot.API/Binance.TradeRobot.API.xml

@ -33,10 +33,16 @@
</member> </member>
<member name="M:Binance.TradeRobot.API.Controllers.RobotController.AddPyramidPolicyRobot(Binance.TradeRobot.Model.Dto.AddPyramidPolicyRobotRequest)"> <member name="M:Binance.TradeRobot.API.Controllers.RobotController.AddPyramidPolicyRobot(Binance.TradeRobot.Model.Dto.AddPyramidPolicyRobotRequest)">
<summary> <summary>
创建金字塔策略合约机器人 创建金字塔策略机器人
</summary> </summary>
<param name="addPyramidPolicyRobotRequest"></param> <param name="addPyramidPolicyRobotRequest"></param>
</member> </member>
<member name="M:Binance.TradeRobot.API.Controllers.RobotController.AddD21PolicyRobot(Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest)">
<summary>
创建动2.1策略机器人
</summary>
<param name="addD21PolicyRobotRequest"></param>
</member>
<member name="M:Binance.TradeRobot.API.Controllers.UserController.Login(Binance.TradeRobot.Model.Dto.LoginRequest)"> <member name="M:Binance.TradeRobot.API.Controllers.UserController.Login(Binance.TradeRobot.Model.Dto.LoginRequest)">
<summary> <summary>
用户登录 用户登录

22
Binance.TradeRobot.API/Controllers/RobotController.cs

@ -3,6 +3,7 @@ using Binance.TradeRobot.Model.Dto;
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace Binance.TradeRobot.API.Controllers namespace Binance.TradeRobot.API.Controllers
{ {
@ -17,7 +18,7 @@ namespace Binance.TradeRobot.API.Controllers
} }
/// <summary> /// <summary>
/// 创建金字塔策略合约机器人 /// 创建金字塔策略机器人
/// </summary> /// </summary>
/// <param name="addPyramidPolicyRobotRequest"></param> /// <param name="addPyramidPolicyRobotRequest"></param>
[HttpPost] [HttpPost]
@ -25,5 +26,24 @@ namespace Binance.TradeRobot.API.Controllers
{ {
robotBusiness.AddPyramidPolicyRobot(addPyramidPolicyRobotRequest); robotBusiness.AddPyramidPolicyRobot(addPyramidPolicyRobotRequest);
} }
/// <summary>
/// 创建动2.1策略机器人
/// </summary>
/// <param name="addD21PolicyRobotRequest"></param>
public void AddD21PolicyRobot([FromBody] AddD21PolicyRobotRequest addD21PolicyRobotRequest)
{
robotBusiness.AddD21PolicyRobot(addD21PolicyRobotRequest);
}
/// <summary>
/// 获取动2.1机器人列表
/// </summary>
/// <returns></returns>
[HttpGet]
public IList<D21PolicyRobotResponse> GetD21PolicyRobotList()
{
return robotBusiness.GetD21PolicyRobotList();
}
} }
} }

6
Binance.TradeRobot.Business/Binance.TradeRobot.Business.xml

@ -26,6 +26,12 @@
</summary> </summary>
<param name="addPyramidPolicyRobotRequest"></param> <param name="addPyramidPolicyRobotRequest"></param>
</member> </member>
<member name="M:Binance.TradeRobot.Business.RobotBusiness.AddD21PolicyRobot(Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest)">
<summary>
添加动2.1策略机器人
</summary>
<param name="addD21PolicyRobotRequest"></param>
</member>
<member name="M:Binance.TradeRobot.Business.UserBusiness.OneWayAssetChange(System.Int64,System.Decimal,System.Int64,Binance.TradeRobot.Model.Base.Enums.CapitalChangeType,System.String)"> <member name="M:Binance.TradeRobot.Business.UserBusiness.OneWayAssetChange(System.Int64,System.Decimal,System.Int64,Binance.TradeRobot.Model.Base.Enums.CapitalChangeType,System.String)">
<summary> <summary>
单向资产变更 单向资产变更

92
Binance.TradeRobot.Business/Business/RobotBusiness.cs

@ -6,6 +6,7 @@ using Binance.TradeRobot.Model.Db;
using Binance.TradeRobot.Model.Dto; using Binance.TradeRobot.Model.Dto;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System.Collections.Generic;
using System.Data.Common; using System.Data.Common;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -44,28 +45,33 @@ namespace Binance.TradeRobot.Business
throw new BusinessException("同一个交易所账号下只允许存在一个交易对"); throw new BusinessException("同一个交易所账号下只允许存在一个交易对");
} }
private Robot CreateRobot(AddRobotRequest addRobotRequest) /// <summary>
/// 添加机器人和账户
/// </summary>
/// <param name="addRobotRequest"></param>
/// <param name="tran"></param>
/// <returns>机器人Id</returns>
private long AddRobotWithTran(AddRobotRequest addRobotRequest, DbTransaction tran)
{ {
return new Robot() var robotId = idGenerator.NewLong();
fsql.Insert(new Robot()
{ {
Id = idGenerator.NewLong(), Id = robotId,
Symbol = addRobotRequest.Symbol, Symbol = addRobotRequest.Symbol,
TradePolicy = addRobotRequest.TradePolicy, TradePolicy = addRobotRequest.TradePolicy,
BusinessType = addRobotRequest.TradePolicy.GetBusinessType(), BusinessType = addRobotRequest.TradePolicy.GetBusinessType(),
ExchangeId = addRobotRequest.ExchangeId, ExchangeId = addRobotRequest.ExchangeId,
}; }).WithTransaction(tran).ExecuteAffrows();
}
private RobotAccount CreateRobotAccount(long robotId) fsql.Insert(new RobotAccount()
{ {
return new RobotAccount() { Id = idGenerator.NewLong(), RobotId = robotId }; Id = idGenerator.NewLong(),
} RobotId = robotId
}).WithTransaction(tran).ExecuteAffrows();
private void ExecuteAddRobotWithTran(Robot robot, RobotAccount robotAccount, long exchangeAPIKeyId, DbTransaction tran) fsql.Update<ExchangeAPIKey>(addRobotRequest.ExchangeAPIKeyId).WithTransaction(tran).Set(ek => ek.RobotId, robotId).ExecuteAffrows();
{
fsql.Insert(robot).WithTransaction(tran).ExecuteAffrows(); return robotId;
fsql.Insert(robotAccount).WithTransaction(tran).ExecuteAffrows();
fsql.Update<ExchangeAPIKey>(exchangeAPIKeyId).WithTransaction(tran).Set(ek => ek.RobotId, robot.Id).ExecuteAffrows();
} }
/// <summary> /// <summary>
@ -75,20 +81,70 @@ namespace Binance.TradeRobot.Business
public void AddPyramidPolicyRobot(AddPyramidPolicyRobotRequest addPyramidPolicyRobotRequest) public void AddPyramidPolicyRobot(AddPyramidPolicyRobotRequest addPyramidPolicyRobotRequest)
{ {
CheckRobotRegister(addPyramidPolicyRobotRequest, out ExchangeAPIKey exchangeAPIKey); CheckRobotRegister(addPyramidPolicyRobotRequest, out ExchangeAPIKey exchangeAPIKey);
var robot = CreateRobot(addPyramidPolicyRobotRequest);
var robotAccount = CreateRobotAccount(robot.Id);
var pyramidPolicy = addPyramidPolicyRobotRequest.Map<PyramidPolicy>(); var pyramidPolicy = addPyramidPolicyRobotRequest.Map<PyramidPolicy>();
pyramidPolicy.Id = idGenerator.NewLong(); pyramidPolicy.Id = idGenerator.NewLong();
pyramidPolicy.RobotId = robot.Id;
fsql.Transaction(() => fsql.Transaction(() =>
{ {
var tran = fsql.Ado.TransactionCurrentThread; var tran = fsql.Ado.TransactionCurrentThread;
ExecuteAddRobotWithTran(robot, robotAccount, addPyramidPolicyRobotRequest.ExchangeAPIKeyId, tran); pyramidPolicy.RobotId = AddRobotWithTran(addPyramidPolicyRobotRequest, tran);
fsql.Insert(pyramidPolicy).ExecuteAffrows(); fsql.Insert(pyramidPolicy).ExecuteAffrows();
}); });
//调整仓位杠杆倍数 //调整仓位杠杆倍数
}
/// <summary>
/// 添加动2.1策略机器人
/// </summary>
/// <param name="addD21PolicyRobotRequest"></param>
public void AddD21PolicyRobot(AddD21PolicyRobotRequest addD21PolicyRobotRequest)
{
CheckRobotRegister(addD21PolicyRobotRequest, out _);
var d21Policy = addD21PolicyRobotRequest.Map<D21Policy>();
d21Policy.Id = idGenerator.NewLong();
fsql.Transaction(() =>
{
var tran = fsql.Ado.TransactionCurrentThread;
d21Policy.RobotId = AddRobotWithTran(addD21PolicyRobotRequest, tran);
fsql.Insert(d21Policy).ExecuteAffrows();
});
}
public IList<D21PolicyRobotResponse> GetD21PolicyRobotList()
{
var robotList = fsql.Select<Robot, RobotAccount, D21Policy>().InnerJoin((r, ra, d) => r.Id == ra.RobotId)
.InnerJoin((r, ra, d) => r.Id == d.RobotId)
.ToList((r, ra, d) => new Robot()
{
Id = r.Id,
BusinessType = r.BusinessType,
ExchangeId = r.ExchangeId,
Symbol = r.Symbol,
State = r.State,
RunningTime = r.RunningTime,
CreateTime = r.CreateTime,
TradePolicy = r.TradePolicy,
RobotAccountId = ra.Id,
ClosePositionCount = ra.ClosePositionCount,
WinCount = ra.WinCount,
LoanAmount = ra.LoanAmount,
SoptCurrentcyAmount = ra.SoptCurrentcyAmount,
SpotCurrencyQuantity = ra.SpotCurrencyQuantity,
TotalProfit = ra.TotalProfit,
D21ExecutionMode = d.ExecutionMode,
D21IsEnabledIncreasePurchase = d.IsEnabledIncreasePurchase,
D21IsEnableRemedyForErrorCrossSignal = d.IsEnableRemedyForErrorCrossSignal,
D21MaxFollowPurchaseRatio = d.MaxFollowPurchaseRatio,
D21PeriodicSignal = d.PeriodicSignal,
D21PolicyId = d.Id,
D21Position = d.Position,
D21StopLossRatio = d.StopLossRatio
}).Map<IList<D21PolicyRobotResponse>>();
return robotList;
} }
} }
} }

3
Binance.TradeRobot.Business/Extensions/RobotExtension.cs

@ -8,7 +8,8 @@ namespace Binance.TradeRobot.Business.Extensions
private static IDictionary<Enums.TradePolicy, Enums.BusinessType> BusinessTypeDic = new Dictionary<Enums.TradePolicy, Enums.BusinessType>() private static IDictionary<Enums.TradePolicy, Enums.BusinessType> BusinessTypeDic = new Dictionary<Enums.TradePolicy, Enums.BusinessType>()
{ {
{Enums.TradePolicy., Enums.BusinessType.UPrep }, {Enums.TradePolicy., Enums.BusinessType.UPrep },
{ Enums.TradePolicy.v2, Enums.BusinessType.Spot_Margin} { Enums.TradePolicy.v2, Enums.BusinessType.Spot_Margin},
{ Enums.TradePolicy.v21, Enums.BusinessType.Spot_Margin}
}; };
/// <summary> /// <summary>

48
Binance.TradeRobot.Model/Base/Enums.cs

@ -65,36 +65,22 @@ namespace Binance.TradeRobot.Model.Base
} }
/// <summary> /// <summary>
/// 交易策略 动量趋势v2=2,金字塔=11 /// 交易策略 动量趋势v2=0,动量趋势v21=1,金字塔=11
/// </summary> /// </summary>
public enum TradePolicy public enum TradePolicy
{ {
v2 = 2, v2 = 0,
v21 = 1,
= 11 = 11
} }
/// <summary> /// <summary>
/// 信号周期 1m=0,3m=1,5m=2,15m=3,30m=4,1h=5,2h=6,4h=7,6h=8,8h=9,12h=10,1d=11,3d=12,1w=13,1M=14 /// 执行模式 Both=0,OnlyBuy=1,OnlySell=2
/// </summary> /// </summary>
public enum SignalPeriod public enum ExecutionMode
{ {
_1m, Both = 0, OnlyBuy = 1, OnlySell = 2
_3m,
_5m,
_15m,
_30m,
_1h,
_2h,
_4h,
_6h,
_8h,
_12h,
_1d,
_3d,
_1w,
_1M
} }
#endregion #endregion
@ -138,6 +124,28 @@ namespace Binance.TradeRobot.Model.Base
{ {
Buy, Sell Buy, Sell
} }
/// <summary>
/// 信号周期 1m=0,3m=1,5m=2,15m=3,30m=4,1h=5,2h=6,4h=7,6h=8,8h=9,12h=10,1d=11,3d=12,1w=13,1M=14
/// </summary>
public enum SignalPeriod
{
_1m,
_3m,
_5m,
_15m,
_30m,
_1h,
_2h,
_4h,
_6h,
_8h,
_12h,
_1d,
_3d,
_1w,
_1M
}
#endregion #endregion
} }
} }

21
Binance.TradeRobot.Model/Base/MappingProfiles.cs

@ -17,6 +17,27 @@ namespace Binance.TradeRobot.Model.Base
CreateMap<ExchangeAccount, ExchangeAccountResponse>(); CreateMap<ExchangeAccount, ExchangeAccountResponse>();
CreateMap<AddPyramidPolicyRobotRequest, PyramidPolicy>(); CreateMap<AddPyramidPolicyRobotRequest, PyramidPolicy>();
CreateMap<AddD21PolicyRobotRequest, D21Policy>();
CreateMap<Robot, RobotResponse>().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))
.ForPath(t => t.RobotAccount.SpotCurrencyQuantity, opt => opt.MapFrom(f => f.SpotCurrencyQuantity))
.ForPath(t => t.RobotAccount.ClosePositionCount, opt => opt.MapFrom(f => f.ClosePositionCount))
.ForPath(t => t.RobotAccount.LoanAmount, opt => opt.MapFrom(f => f.LoanAmount))
.ForPath(t => t.RobotAccount.TotalProfit, opt => opt.MapFrom(f => f.TotalProfit))
.ForPath(t => t.RobotAccount.WinCount, opt => opt.MapFrom(f => f.WinCount));
CreateMap<Robot, D21PolicyRobotResponse>().IncludeBase<Robot, RobotResponse>()
.ForPath(t => t.D21Policy.Id, opt => opt.MapFrom(f => f.D21PolicyId))
.ForPath(t => t.D21Policy.RobotId, opt => opt.MapFrom(f => f.Id))
.ForPath(t => t.D21Policy.Position, opt => opt.MapFrom(f => f.D21Position))
.ForPath(t => t.D21Policy.IsEnabledIncreasePurchase, opt => opt.MapFrom(f => f.D21IsEnabledIncreasePurchase))
.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));
} }
} }
} }

163
Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml

@ -59,19 +59,19 @@
U本位合约 U本位合约
</summary> </summary>
</member> </member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.RobotStatus"> <member name="T:Binance.TradeRobot.Model.Base.Enums.RobotState">
<summary> <summary>
机器人状态 Stop=0,Runing=1 机器人状态 Stop=0,Runing=1
</summary> </summary>
</member> </member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.TradePolicy"> <member name="T:Binance.TradeRobot.Model.Base.Enums.TradePolicy">
<summary> <summary>
交易策略 动量趋势v2=2,金字塔=11 交易策略 动量趋势v2=0,动量趋势v21=1,金字塔=11
</summary> </summary>
</member> </member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.SignalPeriod"> <member name="T:Binance.TradeRobot.Model.Base.Enums.ExecutionMode">
<summary> <summary>
信号周期 1m=0,3m=1,5m=2,15m=3,30m=4,1h=5,2h=6,4h=7,6h=8,8h=9,12h=10,1d=11,3d=12,1w=13,1M=14 执行模式 Both=0,OnlyBuy=1,OnlySell=2
</summary> </summary>
</member> </member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.Exchange"> <member name="T:Binance.TradeRobot.Model.Base.Enums.Exchange">
@ -89,6 +89,26 @@
芝麻开门 芝麻开门
</summary> </summary>
</member> </member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.LoanState">
<summary>
借币状态 Loading=0 returned=1
</summary>
</member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.OrderState">
<summary>
订单状态
</summary>
</member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.TradeDirection">
<summary>
交易方向 Buy=0,Sell=1
</summary>
</member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.SignalPeriod">
<summary>
信号周期 1m=0,3m=1,5m=2,15m=3,30m=4,1h=5,2h=6,4h=7,6h=8,8h=9,12h=10,1d=11,3d=12,1w=13,1M=14
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.ExchangeAccount.BusinessType"> <member name="P:Binance.TradeRobot.Model.Db.ExchangeAccount.BusinessType">
<summary> <summary>
业务类型 业务类型
@ -109,6 +129,111 @@
交易所账号Id 交易所账号Id
</summary> </summary>
</member> </member>
<member name="P:Binance.TradeRobot.Model.Db.LoanOrder.ExchangeId">
<summary>
交易所Id
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.LoanOrder.LoanAmount">
<summary>
借币金额
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.LoanOrder.LoanFee">
<summary>
借币利息
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.ExchangeId">
<summary>
交易所Id
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.HistoryTotalProfit">
<summary>
历史利润
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.LastTradeTime">
<summary>
最后交易时间
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.PolicyType">
<summary>
交易策略
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.Profit">
<summary>
订单利润
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.TradeAmount">
<summary>
成交总额
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.TradeCount">
<summary>
交易次数
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.TradeFee">
<summary>
手续费
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.TradeFeeUnit">
<summary>
交易手续费单位
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.TradePrice">
<summary>
成交均价
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.SpotOrder.TradeQuantity">
<summary>
交易量
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.D21Policy.ExecutionMode">
<summary>
执行模式
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.D21Policy.IsEnabledIncreasePurchase">
<summary>
是否开启增购
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.D21Policy.IsEnableRemedyForErrorCrossSignal">
<summary>
是否开启错误信号补救
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.D21Policy.MaxFollowPurchaseRatio">
<summary>
最大追高比例
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.D21Policy.PeriodicSignal">
<summary>
信号周期
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.D21Policy.Position">
<summary>
仓位
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.D21Policy.StopLossRatio">
<summary>
止损比例
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.PyramidPolicy.Leverage"> <member name="P:Binance.TradeRobot.Model.Db.PyramidPolicy.Leverage">
<summary> <summary>
杠杆倍数(1-125整数) 杠杆倍数(1-125整数)
@ -224,6 +349,36 @@
交易策略 交易策略
</summary> </summary>
</member> </member>
<member name="P:Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest.IsEnabledIncreasePurchase">
<summary>
是否开启增购
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest.IsEnableRemedyForErrorCrossSignal">
<summary>
是否开启错误信号补救
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest.MaxFollowPurchaseRatio">
<summary>
最大追高比例
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest.PeriodicSignal">
<summary>
信号周期
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest.Position">
<summary>
仓位
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Dto.AddD21PolicyRobotRequest.StopLossRatio">
<summary>
止损比例
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Dto.AddPyramidPolicyRobotRequest.SignalPeriod"> <member name="P:Binance.TradeRobot.Model.Dto.AddPyramidPolicyRobotRequest.SignalPeriod">
<summary> <summary>
信号周期 信号周期

4
Binance.TradeRobot.Model/Db/Policy/Spot/D21Policy.cs

@ -18,8 +18,8 @@ namespace Binance.TradeRobot.Model.Db
/// <summary> /// <summary>
/// 执行模式 /// 执行模式
/// </summary> /// </summary>
[Column(MapType = typeof(int))]
public int ExecutionMode { get; set; } = 0; public Enums.ExecutionMode ExecutionMode { get; set; } = Enums.ExecutionMode.Both;
/// <summary> /// <summary>
/// 是否开启增购 /// 是否开启增购

93
Binance.TradeRobot.Model/Db/Robot/Robot.cs

@ -34,6 +34,97 @@ namespace Binance.TradeRobot.Model.Db
[Column(MapType = (typeof(int)))] [Column(MapType = (typeof(int)))]
public Enums.Exchange ExchangeId { get; set; } public Enums.Exchange ExchangeId { get; set; }
}
#region RobotAccount Extension
[Column(IsIgnore = true)]
public long RobotAccountId { get; set; }
/// <summary>
/// 平仓次数
/// </summary>
[Column(IsIgnore = true)]
public long ClosePositionCount { get; set; } = 0;
/// <summary>
/// 现货/杠杆持仓金额
/// </summary>
[Column(IsIgnore = true)]
public decimal SoptCurrentcyAmount { get; set; } = 0.0M;
/// <summary>
/// 现货/杠杆持仓数量
/// </summary>
[Column(IsIgnore = true)]
public decimal SpotCurrencyQuantity { get; set; } = 0.0M;
/// <summary>
/// 总收益
/// </summary>
[Column(IsIgnore = true)]
public decimal TotalProfit { get; set; } = 0.0M;
/// <summary>
/// 盈利次数
/// </summary>
[Column(IsIgnore = true)]
public long WinCount { get; set; } = 0;
/// <summary>
/// 总借币金额
/// </summary>
[Column(IsIgnore = true)]
public decimal LoanAmount { get; set; } = 0.0M;
#endregion
#region D21Policy Extension
[Column(IsIgnore = true)]
public long D21PolicyId { get; set; }
/// <summary>
/// 执行模式
/// </summary>
[Column(IsIgnore = true)]
public Enums.ExecutionMode D21ExecutionMode { get; set; } = Enums.ExecutionMode.Both;
/// <summary>
/// 是否开启增购
/// </summary>
[Column(IsIgnore = true)]
public bool D21IsEnabledIncreasePurchase { get; set; } = true;
/// <summary>
/// 是否开启错误信号补救
/// </summary>
[Column(IsIgnore = true)]
public bool D21IsEnableRemedyForErrorCrossSignal { get; set; } = true;
/// <summary>
/// 最大追高比例
/// </summary>
[Column(IsIgnore = true)]
public decimal D21MaxFollowPurchaseRatio { get; set; } = 0.0M;
/// <summary>
/// 信号周期
/// </summary>
[Column(IsIgnore = true)]
public Enums.SignalPeriod D21PeriodicSignal { get; set; }
/// <summary>
/// 仓位
/// </summary>
[Column(IsIgnore = true)]
public decimal D21Position { get; set; } = 0.0M;
/// <summary>
/// 止损比例
/// </summary>
[Column(IsIgnore = true)]
public decimal D21StopLossRatio { get; set; }
[Column(IsIgnore = true)]
public DateTime D21CreateTime { get; set; }
#endregion
}
} }

12
Binance.TradeRobot.Model/Db/Robot/RobotAccount.cs

@ -46,6 +46,18 @@ namespace Binance.TradeRobot.Model.Db
/// </summary> /// </summary>
[Column(DbType = "decimal(18,8)")] [Column(DbType = "decimal(18,8)")]
public decimal LoanAmount { get; set; } = 0.0M; public decimal LoanAmount { get; set; } = 0.0M;
/// <summary>
/// 现货持仓均价
/// </summary>
[Column(IsIgnore = true)]
public decimal SpotCurrencyAcgPrice
{
get
{
return SpotCurrencyQuantity == 0M ? 0M : SoptCurrentcyAmount / SpotCurrencyQuantity;
}
}
} }
} }

41
Binance.TradeRobot.Model/Dto/Request/Robot/AddD21PolicyRobotRequest.cs

@ -0,0 +1,41 @@
using Binance.TradeRobot.Model.Base;
namespace Binance.TradeRobot.Model.Dto
{
public class AddD21PolicyRobotRequest : AddRobotRequest
{
public Enums.ExecutionMode ExecutionMode { get; set; } = Enums.ExecutionMode.Both;
/// <summary>
/// 是否开启增购
/// </summary>
public bool IsEnabledIncreasePurchase { get; set; } = true;
/// <summary>
/// 是否开启错误信号补救
/// </summary>
public bool IsEnableRemedyForErrorCrossSignal { get; set; } = true;
/// <summary>
/// 最大追高比例
/// </summary>
public decimal MaxFollowPurchaseRatio { get; set; } = 0.0M;
/// <summary>
/// 信号周期
/// </summary>
public Enums.SignalPeriod PeriodicSignal { get; set; }
/// <summary>
/// 仓位
/// </summary>
public decimal Position { get; set; } = 0.0M;
/// <summary>
/// 止损比例
/// </summary>
public decimal StopLossRatio { get; set; }
}
}

8
Binance.TradeRobot.Model/Dto/Response/Policy/D21PolicyResponse.cs

@ -0,0 +1,8 @@
using Binance.TradeRobot.Model.Db;
namespace Binance.TradeRobot.Model.Dto
{
public class D21PolicyResponse : D21Policy
{
}
}

7
Binance.TradeRobot.Model/Dto/Response/Robot/D21PolicyRobotResponse.cs

@ -0,0 +1,7 @@
namespace Binance.TradeRobot.Model.Dto
{
public class D21PolicyRobotResponse : RobotResponse
{
public D21PolicyResponse D21Policy { get; set; }
}
}

8
Binance.TradeRobot.Model/Dto/Response/Robot/RobotAccountResponse.cs

@ -0,0 +1,8 @@
using Binance.TradeRobot.Model.Db;
namespace Binance.TradeRobot.Model.Dto
{
public class RobotAccountResponse : RobotAccount
{
}
}

27
Binance.TradeRobot.Model/Dto/Response/Robot/RobotResponse.cs

@ -0,0 +1,27 @@
using Binance.TradeRobot.Model.Base;
using System;
namespace Binance.TradeRobot.Model.Dto
{
public class RobotResponse
{
public long Id { get; set; }
public DateTime CreateTime { get; set; }
public Enums.TradePolicy TradePolicy { get; set; }
/// <summary>
/// 运行时长(s)
/// </summary>
public long RunningTime { get; set; } = 0;
public Enums.RobotState State { get; set; }
public string Symbol { get; set; }
public Enums.BusinessType BusinessType { get; set; }
public Enums.Exchange ExchangeId { get; set; }
public RobotAccountResponse RobotAccount { get; set; }
}
}
Loading…
Cancel
Save