Browse Source

借币/还币

master
shanji 3 years ago
parent
commit
d2639d1c4d
  1. 20
      Binance.TradeRobot.Business/Business/TradeBusiness/D21TradeBusiness.cs
  2. 12
      Binance.TradeRobot.Model/Db/Order/SpotOrder.cs
  3. 2
      SDKAdapter/APIClient/BaseAPIClient.cs
  4. 20
      SDKAdapter/APIClient/BinanceAPIClient.cs
  5. 14
      SDKTestConsole/Program.cs

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

@ -145,7 +145,7 @@ namespace Binance.TradeRobot.Business
if (balance < previewTradeAmount)
{
#region 借币
step = "借币";
step = "验证借币比例";
diffAmount = previewTradeAmount - balance;
var diffRatio = diffAmount / balance * 100; //借币比例
@ -168,6 +168,7 @@ namespace Binance.TradeRobot.Business
#region 验证交易所的最大可借额度
try
{
step = "验证交易所的最大可借额度";
var exchangeMaxLoanAmount = apiClient.QueryMaxLoanAmount(robot.Symbol);
if (exchangeMaxLoanAmount < diffAmount)
{
@ -199,7 +200,24 @@ namespace Binance.TradeRobot.Business
#region 借币
if (diffAmount > 0M)
{
step = "借币";
try
{
}
catch (Exception borrowex)
{
logList.Add(new ExecutionLog()
{
Id = idGenerator.NewLong(),
SourceSingal = Enums.SingalType.,
RobotId = robot.Id,
CreateTime = DateTime.Now,
Content = $"借币失败 {borrowex.Message}"
});
previewTradeAmount = balance; //无法借币,使用余额下单
diffAmount = 0M;
}
}
#endregion

12
Binance.TradeRobot.Model/Db/Order/SpotOrder.cs

@ -97,6 +97,18 @@ namespace Binance.TradeRobot.Model.Db
[Column(MapType = typeof(int), DbType = "int")]
public Enums.OrderType OrderType { get; set; }
/// <summary>
/// 借币金额
/// </summary>
[Column(DbType = "decimal(18,8)")]
public decimal LoanAmount { get; set; } = 0.0M;
/// <summary>
/// 借币利息
/// </summary>
[Column(DbType = "decimal(18,8)")]
public decimal LoanInterest { get; set; } = 0.0M;
}
}

2
SDKAdapter/APIClient/BaseAPIClient.cs

@ -63,7 +63,7 @@ namespace SDKAdapter.APIClient
/// <param name="symbol"></param>
/// <param name="repayAmount"></param>
/// <returns>还币利息</returns>
public virtual decimal IsolatedMarginRepayLoan(string symbol, decimal repayAmount)
public virtual decimal IsolatedMarginRepay(string symbol, decimal repayAmount)
{
throw new NotImplementedException();
}

20
SDKAdapter/APIClient/BinanceAPIClient.cs

@ -82,9 +82,25 @@ namespace SDKAdapter.APIClient
};
}
public override decimal IsolatedMarginRepayLoan(string symbol, decimal repayAmount)
public override decimal IsolatedMarginRepay(string symbol, decimal repayAmount)
{
return base.IsolatedMarginRepayLoan(symbol, repayAmount);
var r = binanceClient.SpotApi.Account.MarginRepayAsync("USDT", repayAmount, true, symbol).Result;
if (!r.Success)
throw new Exception($"还币失败 {r.Error?.Message}");
var txId = r.Data.TransactionId;
var r1 = binanceClient.SpotApi.Account.GetMarginRepaysAsync("USDT", txId, isolatedSymbol: symbol).Result;
if (!r1.Success)
throw new Exception($"还币成功,查询还贷记录失败 {r1.Error?.Message}");
try
{
return r1.Data.Rows.ToList().Sum(x => x.Interest);
}
catch
{
return 0M;
}
}
}
}

14
SDKTestConsole/Program.cs

@ -11,12 +11,22 @@ namespace SDKTestConsole
var apiKey = "NnLXgcdUAZ8FAye4Qge3zrrdg5o7ufoWbgtYsKzgfIXz0OMz27G1Kx4SykMzw7YS";
var secret = "lpJ3t50osPx6lEUerVFMdoKsZ6uHPc769OFPGtfhcoPANpv97CEcvR3pz3Bezhhv";
var client = BaseAPIClient.Create(Enums.Exchange.Binance, 0, apiKey, secret);
//逐仓杠杆账户资产
//var marginList = client.GetIsolatedMarginAccountAssets();
//var s = JsonConvert.SerializeObject(marginList);
var maxLoan = client.QueryMaxLoanAmount("ETHUSDT");
Console.WriteLine(maxLoan);
//查询最大借币额度
//var maxLoan = client.QueryMaxLoanAmount("ETHUSDT");
//Console.WriteLine(maxLoan);
//var r1 = client.IsolatedMarginLoan("ETHUSDT", 10M);
//var r2 = client.IsolatedMarginLoan("ETHUSDT", 10M);
//Console.WriteLine(r2.AccountLoanAmount);
var r3 = client.IsolatedMarginRepay("ETHUSDT", 20M);
Console.WriteLine(r3);
Console.ReadKey();
}
}

Loading…
Cancel
Save