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 name="M:Binance.TradeRobot.API.Controllers.RobotController.AddPyramidPolicyRobot(Binance.TradeRobot.Model.Dto.AddPyramidPolicyRobotRequest)">
<summary>
创建金字塔策略合约机器人
创建金字塔策略机器人
</summary>
<param name="addPyramidPolicyRobotRequest"></param>
</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)">
<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.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace Binance.TradeRobot.API.Controllers
{
@ -17,7 +18,7 @@ namespace Binance.TradeRobot.API.Controllers
}
/// <summary>
/// 创建金字塔策略合约机器人
/// 创建金字塔策略机器人
/// </summary>
/// <param name="addPyramidPolicyRobotRequest"></param>
[HttpPost]
@ -25,5 +26,24 @@ namespace Binance.TradeRobot.API.Controllers
{
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>
<param name="addPyramidPolicyRobotRequest"></param>
</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)">
<summary>
单向资产变更

92
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.Collections.Generic;
using System.Data.Common;
using Yitter.IdGenerator;
@ -44,28 +45,33 @@ namespace Binance.TradeRobot.Business
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,
TradePolicy = addRobotRequest.TradePolicy,
BusinessType = addRobotRequest.TradePolicy.GetBusinessType(),
ExchangeId = addRobotRequest.ExchangeId,
};
}
}).WithTransaction(tran).ExecuteAffrows();
private RobotAccount CreateRobotAccount(long robotId)
{
return new RobotAccount() { Id = idGenerator.NewLong(), RobotId = robotId };
}
fsql.Insert(new RobotAccount()
{
Id = idGenerator.NewLong(),
RobotId = robotId
}).WithTransaction(tran).ExecuteAffrows();
private void ExecuteAddRobotWithTran(Robot robot, RobotAccount robotAccount, long exchangeAPIKeyId, DbTransaction tran)
{
fsql.Insert(robot).WithTransaction(tran).ExecuteAffrows();
fsql.Insert(robotAccount).WithTransaction(tran).ExecuteAffrows();
fsql.Update<ExchangeAPIKey>(exchangeAPIKeyId).WithTransaction(tran).Set(ek => ek.RobotId, robot.Id).ExecuteAffrows();
fsql.Update<ExchangeAPIKey>(addRobotRequest.ExchangeAPIKeyId).WithTransaction(tran).Set(ek => ek.RobotId, robotId).ExecuteAffrows();
return robotId;
}
/// <summary>
@ -75,20 +81,70 @@ namespace Binance.TradeRobot.Business
public void AddPyramidPolicyRobot(AddPyramidPolicyRobotRequest addPyramidPolicyRobotRequest)
{
CheckRobotRegister(addPyramidPolicyRobotRequest, out ExchangeAPIKey exchangeAPIKey);
var robot = CreateRobot(addPyramidPolicyRobotRequest);
var robotAccount = CreateRobotAccount(robot.Id);
var pyramidPolicy = addPyramidPolicyRobotRequest.Map<PyramidPolicy>();
pyramidPolicy.Id = idGenerator.NewLong();
pyramidPolicy.RobotId = robot.Id;
fsql.Transaction(() =>
{
var tran = fsql.Ado.TransactionCurrentThread;
ExecuteAddRobotWithTran(robot, robotAccount, addPyramidPolicyRobotRequest.ExchangeAPIKeyId, tran);
pyramidPolicy.RobotId = AddRobotWithTran(addPyramidPolicyRobotRequest, tran);
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>()
{
{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>

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

@ -65,36 +65,22 @@ namespace Binance.TradeRobot.Model.Base
}
/// <summary>
/// 交易策略 动量趋势v2=2,金字塔=11
/// 交易策略 动量趋势v2=0,动量趋势v21=1,金字塔=11
/// </summary>
public enum TradePolicy
{
v2 = 2,
v2 = 0,
v21 = 1,
= 11
}
/// <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>
public enum SignalPeriod
public enum ExecutionMode
{
_1m,
_3m,
_5m,
_15m,
_30m,
_1h,
_2h,
_4h,
_6h,
_8h,
_12h,
_1d,
_3d,
_1w,
_1M
Both = 0, OnlyBuy = 1, OnlySell = 2
}
#endregion
@ -138,6 +124,28 @@ namespace Binance.TradeRobot.Model.Base
{
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
}
}

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

@ -17,6 +17,27 @@ namespace Binance.TradeRobot.Model.Base
CreateMap<ExchangeAccount, ExchangeAccountResponse>();
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本位合约
</summary>
</member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.RobotStatus">
<member name="T:Binance.TradeRobot.Model.Base.Enums.RobotState">
<summary>
机器人状态 Stop=0,Runing=1
</summary>
</member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.TradePolicy">
<summary>
交易策略 动量趋势v2=2,金字塔=11
交易策略 动量趋势v2=0,动量趋势v21=1,金字塔=11
</summary>
</member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.SignalPeriod">
<member name="T:Binance.TradeRobot.Model.Base.Enums.ExecutionMode">
<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>
</member>
<member name="T:Binance.TradeRobot.Model.Base.Enums.Exchange">
@ -89,6 +89,26 @@
芝麻开门
</summary>
</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">
<summary>
业务类型
@ -109,6 +129,111 @@
交易所账号Id
</summary>
</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">
<summary>
杠杆倍数(1-125整数)
@ -224,6 +349,36 @@
交易策略
</summary>
</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">
<summary>
信号周期

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

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

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

@ -34,6 +34,97 @@ namespace Binance.TradeRobot.Model.Db
[Column(MapType = (typeof(int)))]
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>
[Column(DbType = "decimal(18,8)")]
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