bybit is a bybit client for the Go programming language.
import "github.com/hirokisan/bybit/v2"
client := bybit.NewClient().WithAuth("your api key", "your api secret")
res, err := client.Future().InversePerpetual().Balance(bybit.CoinBTC)
// do as you want
for single use
import "github.com/hirokisan/bybit/v2"
wsClient := bybit.NewWebsocketClient()
svc, err := wsClient.Spot().V1().PublicV1()
if err != nil {
return err
}
_, err = svc.SubscribeTrade(bybit.SymbolSpotBTCUSDT, func(response bybit.SpotWebsocketV1PublicV1TradeResponse) error {
// do as you want
})
if err != nil {
return err
}
svc.Start(context.Background())
for multiple use
import "github.com/hirokisan/bybit/v2"
wsClient := bybit.NewWebsocketClient()
executors := []bybit.WebsocketExecutor{}
svcRoot := wsClient.Spot().V1()
{
svc, err := svcRoot.PublicV1()
if err != nil {
return err
}
_, err = svc.SubscribeTrade(bybit.SymbolSpotBTCUSDT, func(response bybit.SpotWebsocketV1PublicV1TradeResponse) error {
// do as you want
})
if err != nil {
return err
}
executors = append(executors, svc)
}
{
svc, err := svcRoot.PublicV2()
if err != nil {
return err
}
_, err = svc.SubscribeTrade(bybit.SymbolSpotBTCUSDT, func(response bybit.SpotWebsocketV1PublicV2TradeResponse) error {
// do as you want
})
if err != nil {
return err
}
executors = append(executors, svc)
}
wsClient.Start(context.Background(), executors)
V5 usage
import "github.com/hirokisan/bybit/v2"
wsClient := bybit.NewWebsocketClient().WithBaseURL("wss://stream-testnet.bybit.com").WithAuth("key", "secret")
svc, err := wsClient.V5().Private()
if err != nil {
// handle dialing error
}
err = svc.Subscribe()
if err != nil {
// handle subscription error
}
err = svc.SubscribePosition(func(position bybit.V5WebsocketPrivatePositionResponse) error {
// handle new position information
})
if err != nil {
// handle registration error
}
errHandler := func(isWebsocketClosed bool, err error) {
// Connection issue (timeout, etc.).
// At this point, the connection is dead and you must handle the reconnection yourself
}
err = svc.Start(context.Background(), errHandler)
if err != nil {
// handle reconnection (ping issue, etc.). Probably can be ignored as the errHandler would be notified too
}
The following API endpoints have been implemented
/v5/market/kline
Get Kline/v5/market/mark-price-kline
Get Mark Price Kline/v5/market/index-price-kline
Get Index Price Kline/v5/market/premium-index-price-kline
Get Premium Index Price Kline/v5/market/instruments-info
Get Instruments Info/v5/market/orderbook
Get Orderbook/v5/market/tickers
Get Tickers/v5/market/funding/history
Get Funding Rate History/v5/market/recent-trade
Get Public Trading History/v5/market/open-interest
Get Open Interest/v5/market/historical-volatility
Get Historical Volatility/v5/market/insurance
Get Insurance/v5/market/risk-limit
Get Risk Limit
/v5/position/list
Get Position Info/v5/position/set-leverage
Set Leverage/v5/position/switch-isolated
Switch Cross/Isolated Margin/v5/position/trading-stop
Set Trading Stop/v5/position/switch-mode
Switch Position Mode/v5/position/set-tpsl-mode
Set TP/SL Mode/v5/position/closed-pnl
Get Closed PnL/v5/position/set-risk-limit
Set Risk Limit/v5/execution/list
Get Execution
/v5/order/create
Place Order/v5/order/amend
Amend Order/v5/order/cancel
Cancel Order/v5/order/realtime
Get Open Orders/v5/order/cancel-all
Cancel All Orders/v5/order/history
Get Order History
/v5/account/wallet-balance
Get Wallet Balance/v5/account/account-info
Get Account Info/v5/account/transaction-log
Get Transaction Log/v5/account/collateral-info
Get Collateral Info/v5/account/set-collateral-switch
Set Collateral Coin/v5/account/batch-set-collateral
Batch Set Collateral Coin/v5/account/fee-rate
Get Fee Rate
/v5/asset/transfer/inter-transfer
Create Internal Transfer/v5/asset/transfer/query-inter-transfer-list
Get Internal Transfer Records/v5/asset/transfer/query-account-coins-balance
Get All Coins Balance/v5/asset/deposit/query-record
Get Deposit Records/v5/asset/deposit/query-sub-member-record
Get Sub Deposit Records/v5/asset/deposit/query-internal-record
Get Internal Deposit Records/v5/asset/deposit/query-address
Get Master Deposit Address/v5/asset/withdraw/query-record
Get Withdrawal Records/v5/asset/coin/query-info
Get Coin Info/v5/asset/withdraw/create
Withdraw/v5/asset/transfer/universal-transfer
Create Universal Transfer/v5/asset/transfer/query-universal-transfer-list
Get Universal Transfer Records
/derivatives/v3/public/order-book/L2
Get Order Book/derivatives/v3/public/kline
Get Kline/derivatives/v3/public/tickers
Get Latest Information For Symbol/derivatives/v3/public/instruments-info
Get Instrument Info/derivatives/v3/public/mark-price-kline
Get Mark Price Kline/derivatives/v3/public/index-price-kline
Get Index Price Kline
/derivatives/v3/public/order-book/L2
Get Order Book/derivatives/v3/public/kline
Get Kline/derivatives/v3/public/tickers
Get Latest Information For Symbol/derivatives/v3/public/instruments-info
Get Instrument Info/derivatives/v3/public/mark-price-kline
Get Mark Price Kline/derivatives/v3/public/index-price-kline
Get Index Price Kline
/v2/public/orderBook/L2
Order Book/v2/public/kline/list
Query Kline/v2/public/tickers
Latest Information for Symbol/v2/public/trading-records
Public Trading Records/v2/public/symbols
Query Symbol/v2/public/mark-price-kline
Query Mark Price Kline/v2/public/index-price-kline
Query Index Price Kline/v2/public/premium-index-kline
Query Premium Index Kline/v2/public/open-interest
Open Interest/v2/public/big-deal
Latest Big Deal/v2/public/account-ratio
Long-Short Ratio
/v2/private/order/create
Place Active Order/v2/private/order/list
Get Active Order/v2/private/order/cancel
Cancel Active Order/v2/private/order/cancelAll
Cancel All Active Orders/v2/private/order
Query Active Order (real-time)/v2/private/stop-order/create
Place Conditional Order/v2/private/stop-order/list
Get Conditional Order/v2/private/stop-order/cancel
Cancel Conditional Order/v2/private/stop-order/cancelAll
Cancel All Conditional Orders/v2/private/stop-order
Query Conditional Order (real-time)/v2/private/position/list
My Position/v2/private/position/trading-stop
Set Trading-Stop/v2/private/position/leverage/save
Set Leverage/v2/private/account/api-key
API Key info
/v2/private/wallet/balance
Get Wallet Balance
/v2/public/orderBook/L2
Order Book/public/linear/kline
Query Kline/v2/public/tickers
Latest Information for Symbol/v2/public/symbols
Query Symbol/v2/public/open-interest
Open Interest/v2/public/big-deal
Latest Big Deal/v2/public/account-ratio
Long-Short Ratio
/private/linear/order/create
Place Active Order/private/linear/order/list
Get Active Order/private/linear/order/cancel
Cancel Active Order/private/linear/order/cancel-all
Cancel All Active Orders/private/linear/order/replace
Replace Active Order/private/linear/order/search
Query Active Order (real-time)/private/linear/stop-order/create
Place Conditional Order/private/linear/stop-order/list
Get Conditional Order/private/linear/stop-order/cancel
Cancel Conditional Order/private/linear/stop-order/cancel-all
Cancel All Conditional Orders/private/linear/stop-order/search
Query Conditional Order (real-time)/private/linear/position/list
My Position/private/linear/position/set-leverage
Set Leverage/private/linear/position/trading-stop
Set Trading-Stop/private/linear/trade/execution/list
User Trade Records/v2/private/account/api-key
API Key info
/v2/private/wallet/balance
Get Wallet Balance
/v2/public/orderBook/L2
Order Book/v2/public/kline/list
Query Kline/v2/public/tickers
Latest Information for Symbol/v2/public/trading-records
Public Trading Records/v2/public/symbols
Query Symbol/v2/public/mark-price-kline
Query Index Price Kline/v2/public/index-price-kline
Query Index Price Kline/v2/public/open-interest
Open Interest/v2/public/big-deal
Latest Big Deal/v2/public/account-ratio
Long-Short Ratio
/futures/private/order/create
Place Active Order/futures/private/order/list
Get Active Order/futures/private/order/cancel
Cancel Active Order/futures/private/order/cancelAll
Cancel All Active Orders/futures/private/order
Query Active Order (real-time)/futures/private/stop-order/create
Place Conditional Order/futures/private/stop-order/list
Get Conditional Order/futures/private/stop-order/cancel
Cancel Conditional Order/futures/private/stop-order/cancelAll
Cancel All Conditional Orders/futures/private/stop-order
Query Conditional Order (real-time)/futures/private/position/list
My Position/futures/private/position/trading-stop
Set Trading-Stop/futures/private/position/leverage/save
Set Leverage/v2/private/account/api-key
API Key info
/v2/private/wallet/balance
Get Wallet Balance
/spot/v1/symbols
Query Symbol/spot/quote/v1/depth
Order Book/spot/quote/v1/depth/merged
Merged Order Book/spot/quote/v1/trades
Public Trading Records/spot/quote/v1/kline
Query Kline/spot/quote/v1/ticker/24hr
Latest Information for Symbol/spot/quote/v1/ticker/price
Last Traded Price/spot/quote/v1/ticker/book_ticker
Best Bid/Ask Price
/spot/v1/order
- Place Active Order
- Get Active Order
- Cancel Active Order
- Fast Cancel Active Order
/spot/v1/order/fast
Fast Cancel Active Order/spot/order/batch-cancel
Batch Cancel Active Order/spot/order/batch-fast-cancel
Batch Fast Cancel Active Order/spot/order/batch-cancel-by-ids
Batch Cancel Active Order By IDs/spot/v1/open-orders
Open Orders
/spot/v1/account
Get Wallet Balance
- Create
- Cancel
- trade
- trade
- outboundAccountInfo
There are tests so that we can get to know the changes of bybit api response.
See below
I would like to cover Bybit API and contributions are always welcome. The calling pattern is established, so adding new methods is relatively straightforward. See some PRs like #44.
To submit issues, PRs, and every other help is welcome.