Browse Source

借币

master
shanji 3 years ago
parent
commit
db7b35236d
  1. 17
      Binance.TradeRobot.Business/Business/TradeBusiness/D21TradeBusiness.cs
  2. 1
      Binance.TradeRobot.Model/Dto/Response/Exchange/ExchangeAPIKeyResponse.cs
  3. 22
      SDKAdapter/APIClient/BaseAPIClient.cs
  4. 22
      SDKAdapter/APIClient/BinanceAPIClient.cs
  5. 18
      SDKAdapter/Model/IsolatedMarginLoanResponse.cs
  6. 6
      SDKTestConsole/Program.cs

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

@ -140,7 +140,7 @@ namespace Binance.TradeRobot.Business
#region 计算下单数量
step = "计算下单数量";
var diffAmount = 0M; //借币金额
var diffAmount = 0M; //下单缺口金额
var previewTradeAmount = d21Robot.D21Policy.Position; //预估交易额
if (balance < previewTradeAmount)
{
@ -170,9 +170,12 @@ namespace Binance.TradeRobot.Business
{
var exchangeMaxLoanAmount = apiClient.QueryMaxLoanAmount(robot.Symbol);
if (exchangeMaxLoanAmount < diffAmount)
{
{
if (exchangeMaxLoanAmount == 0M)
throw new Exception("可借额度为0");
diffAmount = exchangeMaxLoanAmount;
}
previewTradeAmount = balance + diffAmount;
}
catch (Exception borrowex)
{
@ -185,6 +188,7 @@ namespace Binance.TradeRobot.Business
Content = $"验证交易所的最大可借额度失败 {borrowex.Message}"
});
previewTradeAmount = balance; //无法借币,使用余额下单
diffAmount = 0M;
}
#endregion
@ -192,6 +196,13 @@ namespace Binance.TradeRobot.Business
}
#endregion
#region 借币
if (diffAmount > 0M)
{
}
#endregion
#region 下单
#endregion

1
Binance.TradeRobot.Model/Dto/Response/Exchange/ExchangeAPIKeyResponse.cs

@ -2,6 +2,7 @@
{
public class ExchangeAPIKeyResponse : Db.ExchangeAPIKey
{
//public ExchangeAPIKeyResponse(long id) { this.Id = id; }
/// <summary>
/// 基础币金额(标的数量)
/// </summary>

22
SDKAdapter/APIClient/BaseAPIClient.cs

@ -45,5 +45,27 @@ namespace SDKAdapter.APIClient
{
throw new NotImplementedException();
}
/// <summary>
/// 逐仓杠杆账户借币
/// </summary>
/// <param name="symbol"></param>
/// <param name="loanAmount"></param>
/// <returns>借币结果对象</returns>
public virtual IsolatedMarginLoanResponse IsolatedMarginLoan(string symbol, decimal loanAmount)
{
throw new NotImplementedException();
}
/// <summary>
/// 逐仓杠杆账户还币
/// </summary>
/// <param name="symbol"></param>
/// <param name="repayAmount"></param>
/// <returns>还币利息</returns>
public virtual decimal IsolatedMarginRepayLoan(string symbol, decimal repayAmount)
{
throw new NotImplementedException();
}
}
}

22
SDKAdapter/APIClient/BinanceAPIClient.cs

@ -64,5 +64,27 @@ namespace SDKAdapter.APIClient
throw new Exception($"查询最大借币额度失败 {r.Error?.Message}");
return r.Data.Quantity;
}
public override IsolatedMarginLoanResponse IsolatedMarginLoan(string symbol, decimal loanAmount)
{
var r = binanceClient.SpotApi.Account.MarginBorrowAsync("USDT", loanAmount, true, symbol).Result;
if (!r.Success)
throw new Exception($"借币失败 {r.Error?.Message}");
var isolatedMarginAccountAssetList = GetIsolatedMarginAccountAssets();
var currentAsset = isolatedMarginAccountAssetList.FirstOrDefault(s => s.Symbol == symbol);
if (currentAsset == null)
throw new Exception($"借币已完成,但未查询到{symbol}的资产信息 {r.Error?.Message}");
return new IsolatedMarginLoanResponse()
{
CurrentLoanAmount = loanAmount,
AccountLoanAmount = currentAsset.QuoteBorrowed
};
}
public override decimal IsolatedMarginRepayLoan(string symbol, decimal repayAmount)
{
return base.IsolatedMarginRepayLoan(symbol, repayAmount);
}
}
}

18
SDKAdapter/Model/IsolatedMarginLoanResponse.cs

@ -0,0 +1,18 @@
namespace SDKAdapter.Model
{
/// <summary>
/// 逐仓杠杆借币结果对象
/// </summary>
public class IsolatedMarginLoanResponse
{
/// <summary>
/// 本次借币金额
/// </summary>
public decimal CurrentLoanAmount { get; set; }
/// <summary>
/// 账户借币金额
/// </summary>
public decimal AccountLoanAmount { get; set; }
}
}

6
SDKTestConsole/Program.cs

@ -1,8 +1,4 @@
using Binance.Net.Clients;
using Binance.Net.Objects;
using Binance.TradeRobot.Model.Base;
using CryptoExchange.Net.Authentication;
using Newtonsoft.Json;
using Binance.TradeRobot.Model.Base;
using SDKAdapter.APIClient;
using System;

Loading…
Cancel
Save