bybit.net.api
1.1.2
dotnet add package bybit.net.api --version 1.1.2
NuGet\Install-Package bybit.net.api -Version 1.1.2
<PackageReference Include="bybit.net.api" Version="1.1.2" />
paket add bybit.net.api --version 1.1.2
#r "nuget: bybit.net.api, 1.1.2"
// Install bybit.net.api as a Cake Addin #addin nuget:?package=bybit.net.api&version=1.1.2 // Install bybit.net.api as a Cake Tool #tool nuget:?package=bybit.net.api&version=1.1.2
Bybit Open API Connector .Net6
Table of Contents
About
Bybit.Net.Api offers an official, powerful, and efficient .NET connector to the Bybit public Trading API
Dive into a plethora of functionalities:
- Public Websocket Streaming
- Private Websocket Streaming
- Market Data Retrieval
- Trade Execution
- Position Management
- Account and Asset Info Retrieval
- User Management
- Upgrade History
- Spot Margin UTA & Classical Service
- Broker Earning Data
This initiative, originated by the renowned .NET developer Victor, now flourishes under the meticulous care of Bybit's dedicated team of in-house .NET professionals. Your contributions are warmly welcomed and appreciated!
Development
Bybit.Net.Api constantly evolves, keeping pace with the freshest features from Bybit's API. Crafted for efficiency, the library maintains a slim profile by minimizing external dependencies. If you've broadened its horizons or ironed out bugs, we eagerly await your pull request.
Installation
Ensure you're using .NET 6 or newer. This SDK depends on Microsoft.Extensions.Logging 7.0.0 and Newtonsoft 13.0.3. Dotnet CLI
dotnet add package bybit.net.api
Nuget tool
NuGet\Install-Package bybit.net.api
Package reference
<PackageReference Include="bybit.net.api"/>
Furthermore methods to install pakcage, please check Nuget Repository
Release-Notes
HTTP Request
- Add Broker Refer Code to Request Header
- Add User Agent
- Add Https Connection Keep Live
- New broker endpoints /v5/broker/account-info and /v5/broker/asset/query-sub-member-deposit-record
- Demo trading Mainnet allow rest api
- Demo trading Mainnet request test fund
Websocket
- Demo trading support private websocket
Change log
- Spot margin trade endpoint not suport classical account
- Broker Earning info endpoint change from endpoint /v5/broker/earnings-records to /v5/broker/earnings-info
- Set Risk Limit was deprecated because it will adapt automaticaaly by your hold position
Usage
By default is bybit Mainnet, if you want to test in Bybit testnet, please add a parameter useTestnet: true when initiate service instance
Note: Replace placeholders (like YOUR_API_KEY, links, or other details) with the actual information. You can also customize this template to better fit the actual state and details of your DotNet API.
RESTful APIs
- Market Kline
BybitMarketDataService market = new();
var klineInfo = await market.GetMarketKline(Category.SPOT, "BTCUSDT", MarketInterval.OneMinute);
Console.WriteLine(klineInfo);
Authentication - RESTful APIs
- Place Single Order
BybitTradeService tradeService = new(apiKey: "xxxxxxxxxxxxxx", apiSecret: "xxxxxxxxxxxxxxxxxxxxx");
var orderInfo = await tradeService.PlaceOrder(category: Category.LINEAR, symbol: "BLZUSDT", side: Side.BUY, orderType: OrderType.MARKET, qty: "15", timeInForce: TimeInForce.GTC);
Console.WriteLine(orderInfo);
- Place Bacth Order by Dictionary
Dictionary<string, object> dict1 = new() { { "symbol", "XRPUSDT" }, { "orderType", "Limit" }, { "side", "Buy" }, { "qty", "10" }, { "price", "0.6080" }, { "timeInForce", "GTC" } };
Dictionary<string, object> dict2 = new() { { "symbol", "BLZUSDT" }, { "orderType", "Limit" }, { "side", "Buy" }, { "qty", "10" }, { "price", "0.6080" }, { "timeInForce", "GTC" } };
List<Dictionary<string, object>> request = new() { dict1, dict2 };
var orderInfoString = await TradeService.PlaceBatchOrder(category: Category.LINEAR, request: request);
Console.WriteLine(orderInfoString);
- Place Bacth Order by dedicated OrderRequest Class
var order1 = new OrderRequest { Symbol = "XRPUSDT", OrderType = OrderType.LIMIT.Value, Side = Side.BUY.Value, Qty = "10", Price = "0.6080", TimeInForce = TimeInForce.GTC.Value };
var order2 = new OrderRequest { Symbol = "BLZUSDT", OrderType = OrderType.LIMIT.Value, Side = Side.BUY.Value, Qty = "10", Price = "0.6080", TimeInForce = TimeInForce.GTC.Value };
var request = new List<OrderRequest> { order1, order2 };
var orderInfoString = await TradeService.PlaceBatchOrder(category: Category.LINEAR, request: request);
Console.WriteLine(orderInfoString);
- Account Wallet
BybitAccountService accountService = new(apiKey: "xxxxxxxxxxxxxx", apiSecret: "xxxxxxxxxxxxxxxxxxxxx");
var accountInfo = await accountService.GetAccountBalance(accountType: AccountType.Unified);
Console.WriteLine(accountInfo);
- Position Info
BybitPositionService positionService = new(apiKey: "xxxxxxxxxxxxxx", apiSecret: "xxxxxxxxxxxxxxxxxxxxx");
var positionInfo = await positionService.GetPositionInfo(category: Category.LINEAR, symbol: "BLZUSDT");
Console.WriteLine(positionInfo);
Demo Trading Apply Money
BybitPositionService positionService = new(apiKey: "xxxxxxxxxxxxxx", apiSecret: "xxxxxxxxxxxxxxxxxxxxx", url: BybitConstants.DEMO_TRADING_MAINNET_URL);
var testFundRequestDict = new Dictionary<string,string>{{"USDT", "109" },{"ETH", "1" }};
var tradeInfoString = await TradeService.RequestTestFund(testFundRequestDict);
await Console.Out.WriteLineAsync(tradeInfoString);
Websocket public channel
- Trade Subscribe
var linearWebsocket = new BybitLinearWebSocket(useTestNet: true, pingIntevral: 5);
linearWebsocket.OnMessageReceived(
(data) =>
{
Console.WriteLine(data);
return Task.CompletedTask;
}, CancellationToken.None);
await linearWebsocket.ConnectAsync(new string[] { "publicTrade.BTCUSDT" }, CancellationToken.None);
Websocket private channel
- Order Subscribe
var privateWebsocket = new(apiKey: "xxxxxxxxxxx", apiSecret: "xxxxxxxxxxxxxxx", useTestNet: true, pingIntevral: 5, maxAliveTime:"120s");
privateWebsocket.OnMessageReceived(
(data) =>
{
Console.WriteLine(data);
return Task.CompletedTask;
}, CancellationToken.None);
await privateWebsocket.ConnectAsync(new string[] { "order" }, CancellationToken.None);
Contact
For support, join our Bybit API community on Telegram.
Contributors
List of other contributors
<table>
<tr>
<td align="center">
<a href="https://github.com/wuhewuhe">
<img src="https://avatars.githubusercontent.com/u/32245754?v=4" width="100px;" alt=""/>
<br />
<sub>
<b>Victor</b>
</sub>
</a>
<br />
<a href="https://github.com/wuhewuhe/bybit.net.api/commits?author=wuhewuhe" title="Code">💻</a>
<a href="https://github.com/wuhewuhe/bybit.net.api/commits?author=wuhewuhe" title="Documentation">📖</a>
</td>
</tr>
</table>
Donations
Your donations keep our development active and our community growing. Donate USDT to our ERC20 Wallet Address.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Microsoft.Extensions.Logging (>= 7.0.0)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
## Release-Notes
### HTTP Request
- Add Broker Refer Code to Request Header
- Add User Agent
- Add Https Connection Keep Live
- New broker endpoints /v5/broker/account-info and /v5/broker/asset/query-sub-member-deposit-record
- Demo trading Mainnet allow rest api
- Demo trading Mainnet request test fund
### Websocket
- Demo trading support private websocket
### Change log
- Spot margin trade endpoint not suport classical account
- Broker Earning info endpoint change from endpoint /v5/broker/earnings-records to /v5/broker/earnings-info
- Set Risk Limit was deprecated because it will adapt automaticaaly by your hold position