

Github GitHub - adshao/go-binance: A Go SDK for Binance API
source link: https://github.com/adshao/go-binance
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

go-binance
A Golang SDK for binance API.
All the REST APIs listed in binance API document are implemented, as well as the websocket APIs.
For best compatibility, please use Go >= 1.8.
Make sure you have read binance API document before continuing.
API List
Name Description Status rest-api.md Details on the Rest API (/api) Implemented web-socket-streams.md Details on available streams and payloads Implemented user-data-stream.md Details on the dedicated account stream Implemented wapi-api.md Details on the Withdrawal API (/wapi) Partially Implemented margin-api.md Details on the Margin API (/sapi) Implemented futures-api.md Details on the Futures API (/fapi) Partially Implemented delivery-api.md Details on the Coin-M Futures API (/dapi) Partially ImplementedInstallation
go get github.com/adshao/go-binance/v2
For v1 API, it has been moved to v1
branch, please use:
go get github.com/adshao/go-binance/v1
Importing
import ( "github.com/adshao/go-binance/v2" )
Documentation
REST API
Setup
Init client for API services. Get APIKey/SecretKey from your binance account.
var ( apiKey = "your api key" secretKey = "your secret key" ) client := binance.NewClient(apiKey, secretKey) futuresClient := binance.NewFuturesClient(apiKey, secretKey) // USDT-M Futures deliveryClient := binance.NewDeliveryClient(apiKey, secretKey) // Coin-M Futures
A service instance stands for a REST API endpoint and is initialized by client.NewXXXService function.
Simply call API in chain style. Call Do() in the end to send HTTP request.
Following are some simple examples, please refer to godoc for full references.
Create Order
order, err := client.NewCreateOrderService().Symbol("BNBETH"). Side(binance.SideTypeBuy).Type(binance.OrderTypeLimit). TimeInForce(binance.TimeInForceTypeGTC).Quantity("5"). Price("0.0030000").Do(context.Background()) if err != nil { fmt.Println(err) return } fmt.Println(order) // Use Test() instead of Do() for testing.
Get Order
order, err := client.NewGetOrderService().Symbol("BNBETH"). OrderID(4432844).Do(context.Background()) if err != nil { fmt.Println(err) return } fmt.Println(order)
Cancel Order
_, err := client.NewCancelOrderService().Symbol("BNBETH"). OrderID(4432844).Do(context.Background()) if err != nil { fmt.Println(err) return }
List Open Orders
openOrders, err := client.NewListOpenOrdersService().Symbol("BNBETH"). Do(context.Background()) if err != nil { fmt.Println(err) return } for _, o := range openOrders { fmt.Println(o) }
List Orders
orders, err := client.NewListOrdersService().Symbol("BNBETH"). Do(context.Background()) if err != nil { fmt.Println(err) return } for _, o := range orders { fmt.Println(o) }
List Ticker Prices
prices, err := client.NewListPricesService().Do(context.Background()) if err != nil { fmt.Println(err) return } for _, p := range prices { fmt.Println(p) }
Show Depth
res, err := client.NewDepthService().Symbol("LTCBTC"). Do(context.Background()) if err != nil { fmt.Println(err) return } fmt.Println(res)
List Klines
klines, err := client.NewKlinesService().Symbol("LTCBTC"). Interval("15m").Do(context.Background()) if err != nil { fmt.Println(err) return } for _, k := range klines { fmt.Println(k) }
List Aggregate Trades
trades, err := client.NewAggTradesService(). Symbol("LTCBTC").StartTime(1508673256594).EndTime(1508673256595). Do(context.Background()) if err != nil { fmt.Println(err) return } for _, t := range trades { fmt.Println(t) }
Get Account
res, err := client.NewGetAccountService().Do(context.Background()) if err != nil { fmt.Println(err) return } fmt.Println(res)
Start User Stream
res, err := client.NewStartUserStreamService().Do(context.Background()) if err != nil { fmt.Println(err) return } fmt.Println(res)
Websocket
You don't need Client in websocket API. Just call binance.WsXxxServe(args, handler, errHandler).
For delivery API you can use
delivery.WsXxxServe(args, handler, errHandler)
.
Depth
wsDepthHandler := func(event *binance.WsDepthEvent) { fmt.Println(event) } errHandler := func(err error) { fmt.Println(err) } doneC, stopC, err := binance.WsDepthServe("LTCBTC", wsDepthHandler, errHandler) if err != nil { fmt.Println(err) return } // use stopC to exit go func() { time.Sleep(5 * time.Second) stopC <- struct{}{} }() // remove this if you do not want to be blocked here <-doneC
Kline
wsKlineHandler := func(event *binance.WsKlineEvent) { fmt.Println(event) } errHandler := func(err error) { fmt.Println(err) } doneC, _, err := binance.WsKlineServe("LTCBTC", "1m", wsKlineHandler, errHandler) if err != nil { fmt.Println(err) return } <-doneC
Aggregate
wsAggTradeHandler := func(event *binance.WsAggTradeEvent) { fmt.Println(event) } errHandler := func(err error) { fmt.Println(err) } doneC, _, err := binance.WsAggTradeServe("LTCBTC", wsAggTradeHandler, errHandler) if err != nil { fmt.Println(err) return } <-doneC
User Data
wsHandler := func(message []byte) { fmt.Println(string(message)) } errHandler := func(err error) { fmt.Println(err) } doneC, _, err := binance.WsUserDataServe(listenKey, wsHandler, errHandler) if err != nil { fmt.Println(err) return } <-doneC
Setting Server Time
Your system time may be incorrect and you may use following function to set the time offset based off Binance Server Time:
// use the client future for Futures client.NewSetServerTimeService().Do(context.Background())
Or you can also overwrite the TimeOffset
yourself:
client.TimeOffset = 123
Testnet
You can use the testnet by enabling the corresponding flag.
Note that you can't use your regular API and Secret keys for the testnet. You have to create an account on the testnet websites : https://testnet.binancefuture.com/ for futures and delivery or https://testnet.binance.vision/ for the Spot Test Network.
Use the binance.UseTestnet
flag before calling the client creation and the websockets methods.
import ( "github.com/adshao/go-binance/v2" ) binance.UseTestnet = true client := binance.NewClient(apiKey, secretKey)
Futures (usd(s)-m futures)
Use the futures.UseTestnet
flag before calling the client creation and the websockets methods
import ( "github.com/adshao/go-binance/v2/futures" ) futures.UseTestnet = true BinanceClient = futures.NewClient(ApiKey, SecretKey)
Delivery (coin-m futures)
Use the delivery.UseTestnet
flag before calling the client creation and the websockets methods
import ( "github.com/adshao/go-binance/v2/delivery" ) delivery.UseTestnet = true BinanceClient = delivery.NewClient(ApiKey, SecretKey)
Recommend
-
129
README.md A basic Go interface to the Firecracker API This package is a Go library to interact with the Firecracker API. There is also a command-line...
-
8
Central Presence API / SDK Beta Wednesday, March 24, 2004 Hi. We are now looking for developers who are interested in beta testing the Central Presence API / SDK for Macromedia Central. The API provides access to AOL AI...
-
22
Binance on Twitter: "#Binance Will List RSK Infrastructure Framework $RIF @rif_os https://t.co/LTCTLpmi0W"Don’t miss what’s happeningPeople on Twitter are the first to know.
-
6
新增多SIM卡API,Android 5.1 SDK正式发布! – Android开发中文站你的位置:Android开发中文站 > Android开发 > 新增多SIM卡API,Android 5.1 SDK...
-
9
Android SDK版本号 与 API Level 对应关系 新接触Android开发,多次遇到SDK版本与API LEVEL的对应关系,就进行了一下总结,以备后续查看。 API是开发用的,所以API LEVEL可以认为是内部的;而SDK的版本提供了新特性给用户,是外部可见的。 可以...
-
26
关于 binance api 对接的一些细节。 binance 合约返回了一个叫做未实现盈亏,这个未实现盈亏对照的是标记价格。 除了强平,无论是开仓还是平仓,最终的盈亏都取决于最终成交的价格。 强平的价格参考的是标记价格。
-
7
Official Android SDK for Stream Chat
-
6
RestFul Websocket Websocket easyswoole 服务地址输入 wss://stream.binance.com:9443/stream?s...
-
3
OpenTok Linux SDK Important: Version 2.24.0 of the SDK adds support for Debian 11, and removes s...
-
6
想了解更多关于开源的内容,请访问:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK