An open API service indexing awesome lists of open source software.

https://github.com/f0cii/bybit-api

Go library for using the Bybit's Rest & Websocket API
https://github.com/f0cii/bybit-api

bybit bybit-api bybit-rest golang websocket-api

Last synced: 6 months ago
JSON representation

Go library for using the Bybit's Rest & Websocket API

Awesome Lists containing this project

README

          

# bybit-api
Go library for using the ByBit's Rest & Websocket API

[API Doc](https://bybit-exchange.github.io/docs/inverse/#t-introduction)

### Example

### Rest api
```
package main

import (
"github.com/frankrap/bybit-api/rest"
"log"
)

func main() {
//baseURL := "https://api.bybit.com/" // 主网络
baseURL := "https://api-testnet.bybit.com/" // 测试网络
b := rest.New(nil, baseURL, "YIxOY2RhFkylPudq96", "Bg9G2oFOb3aaIMguD3FOvOJJVBycaoXqXNcI")

// 获取持仓
positions, err := b.GetPositions()
if err != nil {
log.Printf("%v", err)
return
}

log.Printf("positions: %#v", positions)

// 创建委托
symbol := "BTCUSD"
side := "Buy"
orderType := "Limit"
qty := 30
price := 7000.0
timeInForce := "GoodTillCancel"
reduceOnly := false
order, err := b.CreateOrder(side, orderType, price, qty, timeInForce, reduceOnly, symbol)
if err != nil {
log.Println(err)
return
}
log.Printf("Create order: %#v", order)

// 获取委托单
}
```

### Websocket
```
package main

import (
"github.com/frankrap/bybit-api/ws"
"log"
)

func main() {
cfg := &ws.Configuration{
Addr: ws.HostTestnet, // 测试网络
ApiKey: "wKuYtkeNdC2PaMKjoy",
SecretKey: "5ekcDn3KnKoCRbfvrPImYzVdx7Ri2hhVxkmw",
AutoReconnect: true, // 断线自动重连
DebugMode: true,
}
b := ws.New(cfg)

// 订阅新版25档orderBook
b.Subscribe(ws.WSOrderBook25L1 + ".BTCUSD")
// 实时交易
//b.Subscribe("trade.BTCUSD")
b.Subscribe(ws.WSTrade) // BTCUSD/ETHUSD/EOSUSD/XRPUSD
// K线
b.Subscribe(ws.WSKLine + ".BTCUSD.1m")
// 每日保险基金更新
b.Subscribe(ws.WSInsurance)
// 产品最新行情
b.Subscribe(ws.WSInstrument + ".BTCUSD")

// 仓位变化
b.Subscribe(ws.WSPosition)
// 委托单成交信息
b.Subscribe(ws.WSExecution)
// 委托单的更新
b.Subscribe(ws.WSOrder)

b.On(ws.WSOrderBook25L1, handleOrderBook)
b.On(ws.WSTrade, handleTrade)
b.On(ws.WSKLine, handleKLine)
b.On(ws.WSInsurance, handleInsurance)
b.On(ws.WSInstrument, handleInstrument)

b.On(ws.WSPosition, handlePosition)
b.On(ws.WSExecution, handleExecution)
b.On(ws.WSOrder, handleOrder)

b.Start()

forever := make(chan struct{})
<-forever
}

func handleOrderBook(symbol string, data ws.OrderBook) {
log.Printf("handleOrderBook %v/%v", symbol, data)
}

func handleTrade(symbol string, data []*ws.Trade) {
log.Printf("handleTrade %v/%v", symbol, data)
}

func handleKLine(symbol string, data ws.KLine) {
log.Printf("handleKLine %v/%v", symbol, data)
}

func handleInsurance(currency string, data []*ws.Insurance) {
log.Printf("handleInsurance %v/%v", currency, data)
}

func handleInstrument(symbol string, data []*ws.Instrument) {
log.Printf("handleInstrument %v/%v", symbol, data)
}

func handlePosition(data []*ws.Position) {
log.Printf("handlePosition %v", data)
}

func handleExecution(data []*ws.Execution) {
log.Printf("handleExecution %v", data)
}

func handleOrder(data []*ws.Order) {
log.Printf("handleOrder %v", data)
}
```