Categorygithub.com/zoh/go-binance
modulepackage
1.2.0
Repository: https://github.com/zoh/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
futures-api.mdDetails on the Futures API (/fapi) Partially Implemented

Installation

go get github.com/zoh/go-binance

Importing

import (
    "github.com/zoh/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)
futuresClient := binance.NewFuturesClient(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

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

Websocket Market Stream Data

Live Subscribing/Unsubscribing to streams

ms, err := binance.NewMarketStreams(errHandler, true)
if err != nil {
    t.Fatal(err)
}
ms.Debug = true 

// make subscription
_ = ms.Subscribe(
    binance.CustomSubscribeOptions("btcusdt@depth@"),
    binance.CustomSubscribeOptions("btcusdt@aggTrade"),
)

// unsubscription
ms.Unsubscribe(binance.CustomSubscribeOptions("btcusdt@depth@"))

If ypu want to destroy object use err := ms.Close() It stop ws and all channels.

How read events ?


for v := range ms.GetStreamEvents() {
    if v.Type == binance.StreamEventAggTrade {
        if _, ok := v.Data.(binance.WsAggTradeEvent); ok {
            //...
        }
    }
    if v.Type == binance.StreamEventAggTrade {
        if _, ok := v.Data.(binance.WsAggTradeEvent); ok {
            //...
        }
    }
//...
}

# Packages

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

# Functions

No description provided by the author
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.
No description provided by the author
NewFuturesClient initialize client for futures API.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
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.
No description provided by the author
WsFutureUserDataServe serve user data handler with listen key.
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.
No description provided by the author
No description provided by the author
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.
useless now.
Global enums.
Global enums.
Global enums.
Global enums.
Global enums.
No description provided by the author
Stream Events.
No description provided by the author
No description provided by the author
No description provided by the author
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.
No description provided by the author

# 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.
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.
CancelMarginOrderResponse define response of canceling order.
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.
CreateOCOResponse define create order response.
CreateOCOService create order.
CreateOrderResponse define create order response.
CreateOrderService create order.
CreateWithdrawService create withdraw.
Deposit represents a single deposit entry.
DepositHistoryResponse represents a response from ListDepositsService.
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.
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.
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.
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.
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 list withdraws.
LotSizeFilter define lot size filter of symbol.
MarginAccount define margin account info.
MarginAllOrder define item of margin all orders.
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.
No description provided by the author
StartMarginUserStreamService create listen key for margin user stream service.
StartUserStreamService create listen key for user stream service.
No description provided by the author
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.
No description provided by the author
Withdraw represents a single withdraw entry.
WithdrawFee withdraw fee.
WithdrawHistoryResponse represents a response from ListWithdrawsService.
WsAggTradeEvent define websocket aggregate trade 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.

# Interfaces

No description provided by the author

# Type aliases

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.
RequestOption define option type for request.
SideEffectType define side effect type for orders.
SideType define side type of order.
No description provided by the author
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.