Categorygithub.com/adamscottbaxter/go-binance
modulepackage
0.0.0-20200222003018-cfb1ee629c64
Repository: https://github.com/adamscottbaxter/go-binance.git
Documentation: pkg.go.dev

# README

go-binance

A Golang SDK for binance API.

Build Status GoDoc Go Report Card codecov

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

NameDescriptionStatus
rest-api.mdDetails on the Rest API (/api) Implemented
web-socket-streams.mdDetails on available streams and payloads Implemented
user-data-stream.mdDetails on the dedicated account stream Implemented
wapi-api.mdDetails on the Withdrawal API (/wapi) Partially Implemented
margin-api.mdDetails on the Margin API (/sapi) Implemented

Installation

go get github.com/adshao/go-binance

Importing

import (
    "github.com/adshao/go-binance"
)

Documentation

GoDoc

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.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).

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.
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.
WsCombinedPartialDepthServe is similar to WsPartialDepthServe, but it for multiple symbols.
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.
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.
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.
AveragePriceService show current average price for a symbol.
AvgPrice define average price.
Balance define user balance of your account.
Bid define bid info with price and quantity.
BookTicker define book ticker info.
CancelMarginOrderService cancel an order.
CancelOrderResponse define response of canceling order.
CancelOrderService cancel an order.
Client define API client.
CloseMarginUserStreamService delete listen key.
CloseUserStreamService delete listen key.
CreateMarginOrderService create order.
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.
GetMarginAccountService get margin account info.
GetMarginAssetService get margin asset info.
GetMarginOrderService get an order.
GetMarginPairService get margin pair info.
GetMarginPriceIndexService get margin price index.
GetMaxBorrowableService get max borrowable of asset.
GetMaxTransferableService get max transferable of asset.
GetOrderService get an order.
GetWithdrawFeeService get withdraw fee.
HistoricalTradesService trades.
IcebergPartsFilter define iceberg part filter of symbol.
KeepaliveMarginUserStreamService update listen key.
KeepaliveUserStreamService update listen key.
Kline define kline info.
KlinesService list klines.
ListBookTickersService list best price/qty on the order book for a symbol or symbols.
ListDepositsService list deposits.
ListMarginLoansService list loan record.
ListMarginOpenOrdersService list margin open orders.
ListMarginOrdersService all account orders; active, canceled, or filled.
ListMarginRepaysService list repay record.
ListMarginTradesService list trades.
ListOpenOrdersService list opened orders.
ListOrdersService all account orders; active, canceled, or filled.
ListPriceChangeStatsService show stats of price change in last 24 hours for all symbols.
ListPricesService list latest price for a symbol or symbols.
ListTradesService list trades.
ListWithdrawsService list withdraws.
LotSizeFilter define lot size filter of symbol.
MarginAccount define margin account info.
MarginAllOrder define item of margin all orders.
MarginAsset define margin asset info.
MarginLoan define margin loan.
MarginLoanResponse define margin loan response.
MarginLoanService apply for a loan.
MarginPair define margin pair info.
MarginPriceIndex define margin price index.
MarginRepay define margin repay.
MarginRepayResponse define margin repay response.
MarginRepayService repay loan for margin account.
MarginTransferService transfer between spot account and margin account.
MarketLotSizeFilter define market lot size filter of symbol.
MaxBorrowable define max borrowable response.
MaxNumAlgoOrdersFilter define max num algo orders filter of symbol.
MaxTransferable define max transferable response.
MinNotionalFilter define min notional filter of symbol.
Order define order info.
PercentPriceFilter define percent price filter of symbol.
PingService ping server.
PriceChangeStats define price change stats.
PriceFilter define price filter of symbol.
RateLimit struct.
RecentTradesService list recent trades.
ServerTimeService get server time.
StartMarginUserStreamService create listen key for margin user stream service.
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.
TransactionResponse define transaction response.
UserAsset define user assets of margin account.
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.
MarginLoanStatusType define margin loan status type.
MarginRepayStatusType define margin repay status type.
MarginTransferType define margin transfer type.
NewOrderRespType define response JSON verbosity.
OrderStatusType define order status type.
OrderType define order type.
RequestOption define option type for request.
SideType define side type of order.
SymbolFilterType define symbol filter type.
SymbolStatusType define symbol status type.
SymbolType define symbol type.
TimeInForceType 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.