modulepackage
0.0.0-20180721000741-820fa58b1c3c
Repository: https://github.com/whatmatrix/go-binance.git
Documentation: pkg.go.dev
# README
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.
Installation
go get github.com/adshao/go-binance
Importing
import (
"github.com/adshao/go-binance"
)
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)
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.TimeInForceGTC).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).
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
# Functions
AmountToLotSize converts an amount to a lot sized amount.
IsAPIError check if e is an API error.
NewClient initialize an API client instance with API key and secret key.
NewClientWithHTTPClient initializes an API client instance with a custom http.Client.
WithRecvWindow set recvWindow param for the request.
WsAggTradeServe serve websocket aggregate handler with a symbol.
WsAllMarketsStatServe serve websocket that push 24hr statistics for all market every second.
WsAllMiniMarketsStatServe serve websocket that push mini version of 24hr statistics for all market every second.
WsDepthServe serve websocket depth handler with a symbol.
WsKlineServe serve websocket kline handler with a symbol and interval like 15m, 30s.
WsMarketStatServe serve websocket that push 24hr statistics for single market every second.
WsPartialDepthServe serve websocket partial depth handler with a symbol.
WsTradeServe serve websocket handler with a symbol.
WsUserDataServe serve user data handler with listen key.
# Constants
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
# Variables
WebsocketKeepalive enables sending ping/pong messages to check the connection stability.
WebsocketTimeout is an interval for sending ping/pong messages if WebsocketKeepalive is enabled.
# Structs
Account define account info.
AggTrade define aggregate trade info.
AggTradesService list aggregate trades.
APIError define API error when response status is 4xx or 5xx.
Ask define ask info with price and quantity.
Balance define user balance of your account.
Bid define bid info with price and quantity.
BookTicker define book ticker info.
BookTickerService list symbol's book ticker.
CancelOrderResponse define response of canceling order.
CancelOrderService cancel an order.
Client define API client.
CloseUserStreamService delete listen key.
CreateOrderResponse define create order response.
CreateOrderService create order.
CreateWithdrawService create withdraw.
Deposit define deposit info.
DepositHistoryResponse define deposit history.
DepthResponse define depth info with bids and asks.
DepthService show depth info.
ExchangeInfo exchange info.
ExchangeInfoService exchange info service.
Fill may be returned in an array of fills in a CreateOrderResponse.
GetAccountService get account info.
GetOrderService get an order.
GetWithdrawFeeService get withdraw fee.
HistoricalTradesService trades.
KeepaliveUserStreamService update listen key.
Kline define kline info.
KlinesService list klines.
ListBookTickersService list all book tickers.
ListDepositsService list deposits.
ListOpenOrdersService list opened orders.
ListOrdersService list all orders.
ListPriceChangeStatsService show stats of price change in last 24 hours for all symbols.
ListPricesService list all ticker prices.
ListTradesService list trades.
ListWithdrawsService list withdraws.
Order define order info.
PingService ping server.
PriceChangeStats define price change stats.
PriceChangeStatsService show stats of price change in last 24 hours.
RecentTradesService list recent trades.
ServerTimeService get server time.
StartUserStreamService create listen key for user stream service.
Symbol market symbol.
SymbolPrice define symbol and price pair.
Trade define trade info.
TradeV3 define v3 trade info.
Withdraw define withdraw info.
WithdrawFee withdraw fee.
WithdrawHistoryResponse define withdraw history response.
WsAggTradeEvent define websocket aggregate trade event.
WsDepthEvent define websocket depth event.
WsKline define websocket kline.
WsKlineEvent define websocket kline event.
WsMarketStatEvent define websocket market statistics event.
WsMiniMarketsStatEvent define websocket market mini-ticker statistics event.
WsPartialDepthEvent define websocket partial depth book event.
WsTradeEvent define websocket trade event.
# Type aliases
ErrHandler handles errors.
NewOrderRespType define response JSON verbosity.
OrderType define order type.
RequestOption define option type for request.
SideType define side type of order.
TimeInForce define time in force type of order.
WsAggTradeHandler handle websocket aggregate trade event.
WsAllMarketsStatEvent define array of websocket market statistics events.
WsAllMarketsStatHandler handle websocket that push all markets statistics for 24hr.
WsAllMiniMarketsStatEvent define array of websocket market mini-ticker statistics events.
WsAllMiniMarketsStatServeHandler handle websocket that push all mini-ticker market statistics for 24hr.
WsDepthHandler handle websocket depth event.
WsHandler handle raw websocket message.
WsKlineHandler handle websocket kline event.
WsMarketStatHandler handle websocket that push single market statistics for 24hr.
WsPartialDepthHandler handle websocket partial depth event.
WsTradeHandler handle websocket trade event.