binance-api is a lightweight Golang implementation for Binance API, providing complete API coverage, and supports both REST API and websockets API
This project is designed to help you interact with the Binance API, streaming candlestick charts data, market depth, or use other advanced features binance exposes via API.
go get github.com/eranyanay/binance-api
// Generate default client
client := binance.NewBinanceClient("API-KEY", "SECRET")
// Generate client with custom window size
client := binance.NewBinanceClientWindow("API-KEY", "SECRET", 5000)
depth, err := client.Depth(&binance.DepthOpts{Symbol: "ETHBTC"})
klines, err := client.Klines(&binance.KlinesOpts{
Symbol: "ETHBTC",
Interval: binance.KlineInterval15m,
})
stats, err := client.Ticker(&binance.TickerOpts{Symbol: "ETHBTC"})
prices, err := client.Prices()
order, err := client.NewOrder(&binance.NewOrderOpts{
Symbol: "ETHBTC",
Type: binance.OrderTypeLimit,
Price: "0.05",
Quantity: "1",
Side: binance.OrderSideBuy,
TimeInForce: binance.TimeInForceGTC,
})
order, err := client.NewOrderTest(&binance.NewOrderOpts{
Symbol: "ETHBTC",
Type: binance.OrderTypeLimit,
Price: "0.05",
Quantity: "1",
Side: binance.OrderSideBuy,
TimeInForce: binance.TimeInForceGTC,
})
order, err := client.NewOrder(&binance.NewOrderOpts{
Symbol: "ETHBTC",
Type: binance.OrderTypeLimit,
Price: "0.05",
StopPrice: "0.049",
Quantity: "1",
Side: binance.OrderSideBuy,
TimeInForce: binance.TimeInForceGTC,
})
Orders are assigned with order ID when issued and can later be queried using it
query, err := client.QueryOrder(&binance.QueryOrderOpts{Symbol:"ETHBTC", OrderID:order.OrderID})
cancel, err := client.CancelOrder(&binance.CancelOrderOpts{Symbol:"ETHBTC", OrderID:order.OrderID})
orders, err := client.OpenOrders(&binance.OpenOrdersOpts{Symbol:"ETHBTC"})
orders, err := client.AllOrders(&binance.AllOrdersOpts{Symbol:"ETHBTC", OrderID: 5})
info, err := client.Account()
trades, err := client.Trades(&binance.TradesOpts{Symbol:"ETHBTC"})
trades, err := client.AggregatedTrades(&binance.AggregatedTradeOpts{Symbol:"ETHBTC"})
tickers, err := client.AllBookTickers()
key, err := client.DataStream()
err := client.DataStreamKeepAlive(key)
err := client.DataStreamClose(key)
conn, err := client.DepthWS("ETHBTC")
if err != nil {
// Handle error
}
defer conn.Close()
for {
update, err := conn.Read()
if err != nil {
// Handle error
}
fmt.Printf("Depth update: %v", update)
}
conn, err := client.Klines("ETHBTC", binance.KlineInterval15m)
if err != nil {
// Handle error
}
defer conn.Close()
for {
update, err := conn.Read()
if err != nil {
// Handle error
}
fmt.Printf("Klines update: %v", update)
}
conn, err := client.Trades("ETHBTC")
if err != nil {
// Handle error
}
defer conn.Close()
for {
update, err := conn.Read()
if err != nil {
// Handle error
}
fmt.Printf("Trades update: %v", update)
}
// Retrieve new datastream key
key, err := client.DataStream()
if err != nil {
// Handle error
}
defer client.DataStreamClose(key)
conn, err := client.AccountInfoWS(key)
if err != nil {
// Handle error
}
defer conn.Close()
for {
accountUpdate, orderUpdate, err := conn.Read()
if err != nil {
// Handle error
}
fmt.Printf("Account info update: %v %v", accountUpdate, orderUpdate)
}
This project is licensed under the MIT License. See the LICENSE file for more info.
Version | Tag | Published |
---|---|---|
v0.0.0-20190408204030-b55a418abc86 | 2yrs ago |