Browse Source

处理趋势信号

master
shanji 3 years ago
parent
commit
f2c908a96e
  1. 1
      Binance.TradeRobot.API/Binance.TradeRobot.API.csproj
  2. 3
      Binance.TradeRobot.API/Startup.cs
  3. 3
      Binance.TradeRobot.API/appsettings.json
  4. 3
      Binance.TradeRobot.Business/Binance.TradeRobot.Business.csproj
  5. 10
      Binance.TradeRobot.Business/Business/SingalBusiness.cs
  6. 41
      Binance.TradeRobot.Business/Business/TradeBusiness/D21TradeBusiness.cs
  7. 12
      Binance.TradeRobot.Business/Business/TradeBusiness/ITradeBusiness.cs
  8. 10
      Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml
  9. 28
      Binance.TradeRobot.Model/Db/Order/ExecutionLog.cs
  10. 14
      Binance.TradeRobot.Model/RuningInfo/D21RuningInfo.cs

1
Binance.TradeRobot.API/Binance.TradeRobot.API.csproj

@ -11,6 +11,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CSRedisCore" Version="3.6.9" />
<PackageReference Include="FreeSql" Version="3.0.100" /> <PackageReference Include="FreeSql" Version="3.0.100" />
<PackageReference Include="FreeSql.Provider.MySql" Version="3.0.100" /> <PackageReference Include="FreeSql.Provider.MySql" Version="3.0.100" />
<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.0.100" /> <PackageReference Include="FreeSql.Provider.SqlServer" Version="3.0.100" />

3
Binance.TradeRobot.API/Startup.cs

@ -37,6 +37,9 @@ namespace Binance.TradeRobot.API
var fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, Configuration.GetConnectionString("DB")).Build(); var fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, Configuration.GetConnectionString("DB")).Build();
services.AddSingleton(typeof(IFreeSql), fsql); services.AddSingleton(typeof(IFreeSql), fsql);
var csredis = new CSRedis.CSRedisClient(Configuration.GetConnectionString("Redis"));
RedisHelper.Initialization(csredis);
var idOption = new IdGeneratorOptions(1); var idOption = new IdGeneratorOptions(1);
var idGenerator = new DefaultIdGenerator(idOption); var idGenerator = new DefaultIdGenerator(idOption);
services.AddSingleton(typeof(IIdGenerator), idGenerator); services.AddSingleton(typeof(IIdGenerator), idGenerator);

3
Binance.TradeRobot.API/appsettings.json

@ -10,7 +10,8 @@
"ConnectionStrings": { "ConnectionStrings": {
//"DB": "Data Source=192.168.201.44;Initial Catalog=HY.TradingRobot.DB;User ID=sa;Pwd=kaicn1132+-;" //"DB": "Data Source=192.168.201.44;Initial Catalog=HY.TradingRobot.DB;User ID=sa;Pwd=kaicn1132+-;"
//"DB": "Data Source=.;Initial Catalog=Binance.TradeRobot.DB;User ID=sa;Pwd=pc911103;Encrypt=True; TrustServerCertificate=True;" //"DB": "Data Source=.;Initial Catalog=Binance.TradeRobot.DB;User ID=sa;Pwd=pc911103;Encrypt=True; TrustServerCertificate=True;"
"DB": "data source=47.245.58.112;port=3306;user id=sa;password=rYn6re2AKhcDWcBi;initial catalog=tradedb;charset=utf8;sslmode=none;" "DB": "data source=47.245.58.112;port=3306;user id=sa;password=rYn6re2AKhcDWcBi;initial catalog=tradedb;charset=utf8;sslmode=none;",
"Redis": "127.0.0.1:6379,password=kaicn1132+-,defaultDatabase=0,testcluster=false"
}, },
"JwtConfig": { "JwtConfig": {
"Secret": "heyitraderobot11", "Secret": "heyitraderobot11",

3
Binance.TradeRobot.Business/Binance.TradeRobot.Business.csproj

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework> <TargetFramework>netstandard2.1</TargetFramework>
@ -8,6 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CSRedisCore" Version="3.6.9" />
<PackageReference Include="FreeSql" Version="3.0.100" /> <PackageReference Include="FreeSql" Version="3.0.100" />
<PackageReference Include="FreeSql.Provider.MySql" Version="3.0.100" /> <PackageReference Include="FreeSql.Provider.MySql" Version="3.0.100" />
<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.0.100" /> <PackageReference Include="FreeSql.Provider.SqlServer" Version="3.0.100" />

10
Binance.TradeRobot.Business/Business/SingalBusiness.cs

@ -3,7 +3,9 @@ using Binance.TradeRobot.Model.Base;
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.Linq; using System.Linq;
using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace Binance.TradeRobot.Business.Business namespace Binance.TradeRobot.Business.Business
@ -12,14 +14,17 @@ namespace Binance.TradeRobot.Business.Business
public class SingalBusiness : BaseBusiness public class SingalBusiness : BaseBusiness
{ {
private RobotBusiness robotBusiness; private RobotBusiness robotBusiness;
private IEnumerable<ITradeBusiness> tradeBusinessList;
public SingalBusiness(IFreeSql fsql, public SingalBusiness(IFreeSql fsql,
NLogManager logManager, NLogManager logManager,
IIdGenerator idGenerator, IIdGenerator idGenerator,
IMemoryCache memoryCache, IMemoryCache memoryCache,
RobotBusiness robotBusiness) : base(fsql, logManager, idGenerator, memoryCache) RobotBusiness robotBusiness,
IEnumerable<ITradeBusiness> tradeBusinessList) : base(fsql, logManager, idGenerator, memoryCache)
{ {
this.robotBusiness = robotBusiness; this.robotBusiness = robotBusiness;
this.tradeBusinessList = tradeBusinessList;
} }
public void D21Singnal(D21SingalRequest d21SingalRequest) public void D21Singnal(D21SingalRequest d21SingalRequest)
@ -30,11 +35,12 @@ namespace Binance.TradeRobot.Business.Business
throw new BusinessException("未找到符合条件的机器人"); throw new BusinessException("未找到符合条件的机器人");
var robot = robotList.FirstOrDefault(); var robot = robotList.FirstOrDefault();
var d21TradeBusiness = tradeBusinessList.FirstOrDefault(t => t.TradePolicy == Enums.TradePolicy.v21);
switch (d21SingalRequest.SingalType) switch (d21SingalRequest.SingalType)
{ {
case Enums.SingalType.: case Enums.SingalType.:
case Enums.SingalType.: case Enums.SingalType.:
Task.Factory.StartNew(() => d21TradeBusiness.TrendChanged(d21SingalRequest, robot));
break; break;
case Enums.SingalType.: case Enums.SingalType.:

41
Binance.TradeRobot.Business/Business/TradeBusiness/D21TradeBusiness.cs

@ -0,0 +1,41 @@
using Binance.TradeRobot.Common.DI;
using Binance.TradeRobot.Model.Base;
using Binance.TradeRobot.Model.Db;
using Binance.TradeRobot.Model.Dto;
using Binance.TradeRobot.Model.RuningInfo;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using System;
using Yitter.IdGenerator;
namespace Binance.TradeRobot.Business
{
[BatchRegistration(ServiceLifetime.Singleton, RegistrationType.Interface)]
public class D21TradeBusiness : BaseBusiness, ITradeBusiness
{
public D21TradeBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache) : base(fsql, logManager, idGenerator, memoryCache)
{
}
public Enums.TradePolicy TradePolicy => Enums.TradePolicy.v21;
public void TrendChanged<T, T1>(T singalRequest, T1 robot) where T : BaseSingalRequest where T1 : RobotResponse
{
var executionLog = new ExecutionLog()
{
Id = idGenerator.NewLong(),
RobotId = robot.Id,
CreateTime = DateTime.Now,
SourceSingal = singalRequest.SingalType,
Content = $"收到趋势信号【{singalRequest.SingalType}】"
};
fsql.Insert(executionLog).ExecuteAffrows();
var d21RuningInfo = RedisHelper.Get<D21RuningInfo>(robot.Id.ToString());
if (d21RuningInfo == null)
d21RuningInfo = new D21RuningInfo() { RobotId = robot.Id };
d21RuningInfo.RecentSmallTrendSingal = singalRequest.SingalType;
RedisHelper.Set(robot.Id.ToString(), d21RuningInfo);
}
}
}

12
Binance.TradeRobot.Business/Business/TradeBusiness/ITradeBusiness.cs

@ -0,0 +1,12 @@
using Binance.TradeRobot.Model.Base;
using Binance.TradeRobot.Model.Dto;
namespace Binance.TradeRobot.Business
{
public interface ITradeBusiness
{
Enums.TradePolicy TradePolicy { get; }
void TrendChanged<T, T1>(T singalRequest, T1 robot) where T : BaseSingalRequest where T1 : RobotResponse;
}
}

10
Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml

@ -127,6 +127,11 @@
关联机器人Id 关联机器人Id
</summary> </summary>
</member> </member>
<member name="P:Binance.TradeRobot.Model.Db.ExecutionLog.SourceSingal">
<summary>
来源信号
</summary>
</member>
<member name="P:Binance.TradeRobot.Model.Db.LoanOrder.ExchangeId"> <member name="P:Binance.TradeRobot.Model.Db.LoanOrder.ExchangeId">
<summary> <summary>
交易所Id 交易所Id
@ -697,5 +702,10 @@
分红比例 分红比例
</summary> </summary>
</member> </member>
<member name="P:Binance.TradeRobot.Model.RuningInfo.D21RuningInfo.RecentSmallTrendSingal">
<summary>
最近一次小趋势信号
</summary>
</member>
</members> </members>
</doc> </doc>

28
Binance.TradeRobot.Model/Db/Order/ExecutionLog.cs

@ -6,23 +6,27 @@ namespace Binance.TradeRobot.Model.Db
{ {
[Table(Name = "executionlog", DisableSyncStructure = true)] [Table(Name = "executionlog", DisableSyncStructure = true)]
public partial class ExecutionLog { public partial class ExecutionLog
{
[Column(DbType = "bigint", IsPrimary = true)] [Column(DbType = "bigint", IsPrimary = true)]
public long Id { get; set; } public long Id { get; set; }
[Column(StringLength = 250, IsNullable = false)] [Column(StringLength = 250, IsNullable = false)]
public string Content { get; set; } public string Content { get; set; }
[Column(DbType = "datetime")] [Column(DbType = "datetime")]
public DateTime CreateTime { get; set; } public DateTime CreateTime { get; set; }
[Column(DbType = "bigint")] [Column(DbType = "bigint")]
public long RobotId { get; set; } public long RobotId { get; set; }
[Column(MapType = typeof(int), DbType = "int")] /// <summary>
public Enums.SingalType SourceSingal { get; set; } /// À´Ô´ÐźÅ
/// </summary>
[Column(MapType = typeof(int), DbType = "int")]
public Enums.SingalType SourceSingal { get; set; }
} }
} }

14
Binance.TradeRobot.Model/RuningInfo/D21RuningInfo.cs

@ -0,0 +1,14 @@
using Binance.TradeRobot.Model.Base;
namespace Binance.TradeRobot.Model.RuningInfo
{
public class D21RuningInfo
{
public long RobotId { get; set; }
/// <summary>
/// 最近一次小趋势信号
/// </summary>
public Enums.SingalType RecentSmallTrendSingal { get; set; }
}
}
Loading…
Cancel
Save