diff --git a/Binance.SDK.Test/Binance.SDK.Test.csproj b/Binance.SDK.Test/Binance.SDK.Test.csproj new file mode 100644 index 0000000..00f65d9 --- /dev/null +++ b/Binance.SDK.Test/Binance.SDK.Test.csproj @@ -0,0 +1,12 @@ + + + + Exe + netcoreapp3.1 + + + + + + + diff --git a/Binance.SDK.Test/Program.cs b/Binance.SDK.Test/Program.cs new file mode 100644 index 0000000..e7af04f --- /dev/null +++ b/Binance.SDK.Test/Program.cs @@ -0,0 +1,27 @@ +using Binance.Net.Clients; +using Binance.Net.Objects; +using CryptoExchange.Net.Authentication; +using System; + +namespace Binance.SDK.Test +{ + internal class Program + { + static void Main(string[] args) + { + var apiKey = "muiZ1IA2sPMQ2m0YFPubEvZepjzn2nxeuPHqQ6mejKVXljYDQTOIYbm22NlXxKcv"; + var apiSecret = "3Clur3D1hDeZYhtVSJzPBiEBb7S0ktC8WpaRQ3F7ysQe55kbsPTBZ6U4X9XsX4Ww"; + var client = new BinanceClient(new BinanceClientOptions() + { + UsdFuturesApiOptions = new BinanceApiClientOptions() + { + BaseAddress = "https://fapi.binance.com", + ApiCredentials = new ApiCredentials(apiKey, apiSecret) + } + }); + + var result = client.UsdFuturesApi.Account.GetBalancesAsync().Result; + Console.WriteLine(result); + } + } +} diff --git a/Binance.SDK/BinanceContractTest.cs b/Binance.SDK/BinanceContractTest.cs index d82cedd..41041f9 100644 --- a/Binance.SDK/BinanceContractTest.cs +++ b/Binance.SDK/BinanceContractTest.cs @@ -8,18 +8,7 @@ namespace Binance.SDK { public BinanceContractTest() { - var apiKey = "muiZ1IA2sPMQ2m0YFPubEvZepjzn2nxeuPHqQ6mejKVXljYDQTOIYbm22NlXxKcv"; - var apiSecret = "3Clur3D1hDeZYhtVSJzPBiEBb7S0ktC8WpaRQ3F7ysQe55kbsPTBZ6U4X9XsX4Ww"; - var client = new BinanceClient(new BinanceClientOptions() - { - UsdFuturesApiOptions = new BinanceApiClientOptions() - { - BaseAddress = "https://fapi.binance.com", - ApiCredentials = new ApiCredentials(apiKey, apiSecret) - } - }); - - var result = client.UsdFuturesApi.Trading.GetOrderAsync("ETHUSDT"); + } } } diff --git a/Binance.TradeRobot.API.sln b/Binance.TradeRobot.API.sln index 5325efe..f94c304 100644 --- a/Binance.TradeRobot.API.sln +++ b/Binance.TradeRobot.API.sln @@ -16,7 +16,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .editorconfig = .editorconfig EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Binance.SDK", "Binance.SDK\Binance.SDK.csproj", "{8B84B654-82D9-42C0-AF0C-5C78CE916253}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Binance.SDK", "Binance.SDK\Binance.SDK.csproj", "{8B84B654-82D9-42C0-AF0C-5C78CE916253}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Binance.SDK.Test", "Binance.SDK.Test\Binance.SDK.Test.csproj", "{52E20E47-2605-48A8-B09C-1C61194502F9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -44,6 +46,10 @@ Global {8B84B654-82D9-42C0-AF0C-5C78CE916253}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B84B654-82D9-42C0-AF0C-5C78CE916253}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B84B654-82D9-42C0-AF0C-5C78CE916253}.Release|Any CPU.Build.0 = Release|Any CPU + {52E20E47-2605-48A8-B09C-1C61194502F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {52E20E47-2605-48A8-B09C-1C61194502F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {52E20E47-2605-48A8-B09C-1C61194502F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {52E20E47-2605-48A8-B09C-1C61194502F9}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Binance.TradeRobot.Model/Base/Enums.cs b/Binance.TradeRobot.Model/Base/Enums.cs index d3a6d44..eed48b6 100644 --- a/Binance.TradeRobot.Model/Base/Enums.cs +++ b/Binance.TradeRobot.Model/Base/Enums.cs @@ -4,20 +4,6 @@ namespace Binance.TradeRobot.Model.Base { public class Enums { - #region 基本 - public enum BusinessType - { - /// - /// 现货 - /// - Spot = 0, - /// - /// 合约 - /// - Prep = 1 - } - - #endregion #region 用户资金 /// @@ -50,6 +36,25 @@ namespace Binance.TradeRobot.Model.Base #endregion #region 机器人 + /// + /// 业务类型 币币=0,逐仓杠杆=1,U本位合约=2 + /// + public enum BusinessType + { + /// + /// 币币 + /// + Spot = 0, + /// + /// 逐仓杠杆 + /// + Spot_Margin = 1, + /// + /// U本位合约 + /// + UPrep = 2 + } + /// /// 机器人状态 Stop=0,Runing=1 /// @@ -58,6 +63,39 @@ namespace Binance.TradeRobot.Model.Base Stop = 0, Runing = 1 } + + /// + /// 交易策略 动量趋势v2=2,金字塔=11 + /// + public enum TradePolicy + { + 动量趋势v2 = 2, + + + 金字塔 = 11 + } + + /// + /// 信号周期 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 + /// + public enum SignalPeriod + { + _1m, + _3m, + _5m, + _15m, + _30m, + _1h, + _2h, + _4h, + _6h, + _8h, + _12h, + _1d, + _3d, + _1w, + _1M + } #endregion } } diff --git a/Binance.TradeRobot.Model/Binance.TradeRobot.Model.csproj b/Binance.TradeRobot.Model/Binance.TradeRobot.Model.csproj index 78b48d1..8c08b5a 100644 --- a/Binance.TradeRobot.Model/Binance.TradeRobot.Model.csproj +++ b/Binance.TradeRobot.Model/Binance.TradeRobot.Model.csproj @@ -12,4 +12,8 @@ + + + + diff --git a/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml b/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml index 65c6842..393dbf7 100644 --- a/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml +++ b/Binance.TradeRobot.Model/Binance.TradeRobot.Model.xml @@ -14,16 +14,6 @@ 错误代码 - - - 现货 - - - - - 合约 - - 资金变更类型 追投=0,提现=1,转移=2 @@ -49,11 +39,46 @@ 资金方向 转入=0,转出=1 + + + 业务类型 现货-币币=0,现货-逐仓杠杆=1,U本位合约=2 + + + + + 现货-币币 + + + + + 现货-逐仓杠杆 + + + + + U本位合约 + + 机器人状态 Stop=0,Runing=1 + + + 交易策略 动量趋势v2=2,金字塔=11 + + + + + 信号周期 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 + + + + + 运行时长(s) + + 投资本金 diff --git a/Binance.TradeRobot.Model/Db/Exchange/ExchangeAPIKey.cs b/Binance.TradeRobot.Model/Db/Exchange/ExchangeAPIKey.cs new file mode 100644 index 0000000..846876f --- /dev/null +++ b/Binance.TradeRobot.Model/Db/Exchange/ExchangeAPIKey.cs @@ -0,0 +1,31 @@ +using FreeSql.DataAnnotations; +using System; + +namespace Binance.TradeRobot.Model.Db +{ + + [Table(DisableSyncStructure = true)] + public partial class ExchangeAPIKey { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + /// + /// 交易所账号Id + /// + public long AccountId { get; set; } + + [Column(StringLength = 100, IsNullable = false)] + public string APIKey { get; set; } + + [Column(InsertValueSql = "getdate()")] + public DateTime CreateTime { get; set; } + + public long? RobotId { get; set; } + + [Column(StringLength = 100, IsNullable = false)] + public string SecretKey { get; set; } + + } + +} diff --git a/Binance.TradeRobot.Model/Db/Exchange/ExchangeAccount.cs b/Binance.TradeRobot.Model/Db/Exchange/ExchangeAccount.cs new file mode 100644 index 0000000..9ad792a --- /dev/null +++ b/Binance.TradeRobot.Model/Db/Exchange/ExchangeAccount.cs @@ -0,0 +1,37 @@ +using Binance.TradeRobot.Model.Base; +using FreeSql.DataAnnotations; +using System; + +namespace Binance.TradeRobot.Model.Db +{ + + [Table(DisableSyncStructure = true)] + public partial class ExchangeAccount + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + /// + /// 业务类型 + /// + public int BusinessType { get; set; } + + [Column(InsertValueSql = "getdate()")] + public DateTime CreateTime { get; set; } + + /// + /// 账号登录名 + /// + [Column(StringLength = 50, IsNullable = false)] + public string LoginName { get; set; } + + /// + /// 交易策略 + /// + [Column(MapType = typeof(int))] + public Enums.TradePolicy TradePolicy { get; set; } + + } + +} diff --git a/Binance.TradeRobot.Model/Db/Policy/UPrep/PyramidPolicy.cs b/Binance.TradeRobot.Model/Db/Policy/UPrep/PyramidPolicy.cs new file mode 100644 index 0000000..090169f --- /dev/null +++ b/Binance.TradeRobot.Model/Db/Policy/UPrep/PyramidPolicy.cs @@ -0,0 +1,19 @@ +using Binance.TradeRobot.Model.Base; +using FreeSql.DataAnnotations; + +namespace Binance.TradeRobot.Model.Db +{ + [Table(DisableSyncStructure = true)] + public partial class PyramidPolicy + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(MapType = typeof(int))] + public Enums.SignalPeriod SignalPeriod { get; set; } + + public long RobotId { get; set; } + } + +} diff --git a/Binance.TradeRobot.Model/Db/Robot/Robot.cs b/Binance.TradeRobot.Model/Db/Robot/Robot.cs new file mode 100644 index 0000000..e361767 --- /dev/null +++ b/Binance.TradeRobot.Model/Db/Robot/Robot.cs @@ -0,0 +1,37 @@ +using Binance.TradeRobot.Model.Base; +using FreeSql.DataAnnotations; +using System; + +namespace Binance.TradeRobot.Model.Db +{ + + [Table(DisableSyncStructure = true)] + public partial class Robot + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(InsertValueSql = "getdate()")] + public DateTime CreateTime { get; set; } + + [Column(MapType = (typeof(int)))] + public Enums.TradePolicy TradePolicy { get; set; } + + /// + /// 运行时长(s) + /// + public long RunningTime { get; set; } = 0; + + [Column(MapType = (typeof(int)))] + public Enums.RobotStatus State { get; set; } + + [Column(StringLength = 50, IsNullable = false)] + public string Symbol { get; set; } + + [Column(MapType = (typeof(int)))] + public Enums.BusinessType BusinessType { get; set; } + + } + +} diff --git a/Binance.TradeRobot.Model/Db/代码生成/__重新生成.bat b/Binance.TradeRobot.Model/Db/代码生成/__重新生成.bat index 00aec37..9a24191 100644 --- a/Binance.TradeRobot.Model/Db/代码生成/__重新生成.bat +++ b/Binance.TradeRobot.Model/Db/代码生成/__重新生成.bat @@ -1 +1 @@ -FreeSql.Generator -Razor 1 -NameOptions 1,0,0,0 -NameSpace Binance.TradeRobot.Model.Db -DB "SqlServer,data source=.;initial catalog=Binance.TradeRobot.DB;User Id=sa;Password=pc911103;TrustServerCertificate=true;pooling=true;max pool size=2" -FileName "{name}.cs" +FreeSql.Generator -Razor 1 -NameOptions 1,0,0,0 -NameSpace Binance.TradeRobot.Model.Db -DB "SqlServer,data source=18.179.56.42;initial catalog=Binance.TradeRobot.DB;User Id=sa;Password=kaicn1132+-;TrustServerCertificate=true;pooling=true;max pool size=2" -FileName "{name}.cs"