Categorygithub.com/crypto-zero/go-binance/v2
modulepackage
2.3.3
Repository: https://github.com/crypto-zero/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
margin-api.mdDetails on the Margin API (/sapi) Implemented
futures-api.mdDetails on the Futures API (/fapi) Partially Implemented
delivery-api.mdDetails on the Coin-M Futures API (/dapi) Partially Implemented

Installation

go get github.com/crypto-zero/go-binance/v2

Importing

import (
    "github.com/crypto-zero/go-binance/v2"
)

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

Spot

Use the binance.UseTestnet flag before calling the client creation and the websockets methods.

import (
    "github.com/crypto-zero/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/crypto-zero/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/crypto-zero/go-binance/v2/delivery"
)

delivery.UseTestnet = true
BinanceClient = delivery.NewClient(ApiKey, SecretKey)

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# Functions

FormatTimestamp formats a time into Unix timestamp in milliseconds, as requested by Binance.
NewClient initialize an API client instance with API key and secret key.
NewDeliveryClient initialize client for coin-M futures API.
NewFuturesClient initialize client for futures API.
WsAggTradeServe serve websocket aggregate handler with a symbol.
WsAllBookTickerServe serve websocket that pushes updates to the best bid or ask price or quantity in real-time for all symbols.
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.
WsBookTickerServe serve websocket that pushes updates to the best bid or ask price or quantity in real-time for a specified symbol.
WsCombinedAggTradeServe is similar to WsAggTradeServe, but it handles multiple symbolx.
WsCombinedKlineServe is similar to WsKlineServe, but it handles multiple symbols with it interval.
WsCombinedMarketStatServe is similar to WsMarketStatServe, but it handles multiple symbolx.
WsCombinedPartialDepthServe is similar to WsPartialDepthServe, but it for multiple symbols.
WsDepthServe serve websocket depth handler with a symbol, using 1sec updates.
WsDepthServe100Ms serve websocket depth handler with a symbol, using 100msec updates.
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, using 1sec updates.
WsPartialDepthServe100Ms serve websocket partial depth handler with a symbol, using 100msec updates.
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.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.

# Variables

UseTestnet switch all the API endpoints from production to the testnet.
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.
No description provided by the author
APIRestrictionService query permission from binance.
AssetDetail represents the detail of an asset.
AveragePriceService show current average price for a symbol.
AvgPrice define average price.
Balance define user balance of your account.
BookTicker define book ticker info.
CancelMarginOrderResponse define response of canceling order.
CancelMarginOrderService cancel an order.
CancelOCOResponse may be returned included in a CancelOpenOrdersResponse.
CancelOCOService cancel all active orders on the list order.
CancelOpenOrdersResponse defines cancel open orders response.
CancelOpenOrdersService cancel all active orders on a symbol.
CancelOrderResponse may be returned included in a CancelOpenOrdersResponse.
CancelOrderService cancel an order.
Client define API client.
CloseIsolatedMarginUserStreamService delete listen key.
CloseMarginUserStreamService delete listen key.
CloseUserStreamService delete listen key.
CreateMarginOrderService create order.
CreateOCOResponse define create order response.
CreateOCOService create order.
CreateOrderResponse define create order response.
CreateOrderService create order.
CreateWithdrawResponse represents a response from CreateWithdrawService.
CreateWithdrawService submits a withdraw Request.
Deposit represents a single deposit entry.
DepthResponse define depth info with bids and asks.
DepthService show depth info.
DustResult represents the result of a DustLog API Call.
DustTransferResponse represents the response from DustTransferService.
DustTransferResult represents the result of a dust transfer.
DustTransferService convert dust assets to BNB.
ExchangeInfo exchange info.
ExchangeInfoService exchange info service.
Fill may be returned in an array of fills in a CreateOrderResponse.
FundingAsset represents the detail of an asset.
FuturesTransfer define futures transfer history item.
FuturesTransferHistory define futures transfer history.
FuturesTransferService transfer asset between spot account and futures account.
GetAccountService get account info.
GetAccountSnapshotService all account orders; active, canceled, or filled.
GetAssetDetailService fetches all asset detail.
GetDepositAddressResponse represents a response from GetDepositsAddressService.
GetDepositsAddressService retrieves the details of a deposit address.
GetFundingAssetService fetches all asset detail.
GetIsolatedMarginAccountService gets isolated margin account info.
GetMarginAccountService get margin account info.
GetMarginAllPairsService get margin pair 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.
HistoricalTradesService trades.
IcebergPartsFilter define iceberg part filter of symbol.
IsolatedMarginAccount defines isolated user assets of margin account.
IsolatedMarginAsset defines isolated margin asset information, like margin level, liquidation price..
IsolatedUserAsset defines isolated user assets of the margin account.
KeepaliveIsolatedMarginUserStreamService updates listen key for isolated margin user data stream.
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 fetches deposit history.
ListDustLogService fetch small amounts of assets exchanged versus BNB See https://binance-docs.github.io/apidocs/spot/en/#dustlog-user_data.
ListFuturesTransferService list futures transfer.
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 fetches withdraw history.
LotSizeFilter define lot size filter of symbol.
MarginAccount define margin account info.
MarginAllPair define margin pair info.
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.
OCOOrder may be returned in an array of OCOOrder in a CreateOCOResponse.
OCOOrderReport may be returned in an array of OCOOrderReport in a CreateOCOResponse.
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.
SetServerTimeService set server time.
Snapshot define snapshot.
SnapshotAssets define snapshot assets.
SnapshotBalances define snapshot balances.
SnapshotData define content of a snapshot.
SnapshotPositions define snapshot positions.
SnapshotUserAssets define snapshot user assets.
SnapshotVos define content of a snapshot.
StartIsolatedMarginUserStreamService create listen key for margin user stream service.
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.
UserAssetDribblet represents one dust log row.
DustLog represents one dust log informations.
Withdraw represents a single withdraw entry.
WsAggTradeEvent define websocket aggregate trade event.
WsBookTickerEvent define websocket best book ticker event.
WsConfig webservice configuration.
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

Ask is a type alias for PriceLevel.
Bid is a type alias for PriceLevel.
ErrHandler handles errors.
FuturesTransferStatusType define futures transfer status type.
FuturesTransferType define futures transfer type.
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.
SideEffectType define side effect type for orders.
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.
WsBookTickerHandler handle websocket that pushes updates to the best bid or ask price or quantity in real-time for a specified symbol.
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.