go_binance

package module
v0.0.0-...-408ac90 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2022 License: MIT Imports: 19 Imported by: 0

README

Go Binance

This repo contains the necessary api calls to start making bots that interfaces Binance trading platform. Currently, this library only supports binance futures market, but I am also working on coin market futures api. Adding a second interface to the library will likely to result in breaking changes. Expect this library to stabilize after 2nd implementation which is currently happening.

Happy Trading!

Bug report, Missing feature

I am actively working on this library. Any reported bugs will be handled in reasonable time. if you would like to see more features please let me know.
Feel free to file a new issue

Documentation

Index

Constants

View Source
const (

	// ====== Parameter Types ======
	SideBuy  = "BUY"
	SideSell = "SELL"

	OrderTypeLimit      = "LIMIT"
	OrderTypeMarket     = "MARKET"
	GoodTillCancel      = "GTC"
	GoodTillCrossing    = "GTX"
	OrderTypeStopMarket = "STOP_MARKET"
	OrderTypeStop       = "STOP"

	DefaultOrderBookLimit = 500
	DefaultKlineLimit     = 500

	KlineInterval1Min   = "1m"
	KlineInterval3Min   = "3m"
	KlineInterval5Min   = "5m"
	KlineInterval15Min  = "15m"
	KlineInterval30Min  = "30m"
	KlineInterval1Hour  = "1h"
	KlineInterval4Hour  = "4h"
	KlineInterval6Hour  = "6h"
	KlineInterval8Hour  = "8h"
	KlineInterval12Hour = "12h"
	KlineIntervalDay    = "1d"
	KlineInterval3Day   = "3d"
	KlineIntervalWeek   = "1w"
	KlineIntervalMonth  = "1M"
)
View Source
const (
	TimestampWrong         = -1021
	SignatureWrong         = -1022
	ParameterValueWrong    = -1102
	PrecisionWrong         = -1111
	SymbolWrong            = -1121
	ApiKeyWrong            = -2014
	GreaterThanMaxQuantity = -4005
)

Variables

This section is empty.

Functions

func CheckLogsFolder

func CheckLogsFolder()

CheckLogsFolder Checks if log folder exists, if not creates one

func GetKey

func GetKey(data []byte) string

func ParseMetaInformation

func ParseMetaInformation(wsMessage []byte) (*models.StreamMetaMessage, error)

Types

type BinanceAccess

type BinanceAccess struct {
	Api       BinanceFutures
	WebSocket BinanceFutureSocket
}

func (*BinanceAccess) PrepareAccess

func (ba *BinanceAccess) PrepareAccess()

func (*BinanceAccess) PrepareAccessWithUserStream

func (ba *BinanceAccess) PrepareAccessWithUserStream()

Uses http2 client then opens a websocket connection Handles listen key generation and enables user stream

func (*BinanceAccess) PrepareLoggers

func (ba *BinanceAccess) PrepareLoggers()

func (*BinanceAccess) SetApiKeys

func (ba *BinanceAccess) SetApiKeys(public, secret string)

func (*BinanceAccess) TestUserStream

func (ba *BinanceAccess) TestUserStream(positionChannel, orderChannel, priceChannel chan []byte)

func (*BinanceAccess) UseMainNet

func (ba *BinanceAccess) UseMainNet()

func (*BinanceAccess) UseTestNet

func (ba *BinanceAccess) UseTestNet()

type BinanceCoinFuturesApi

type BinanceCoinFuturesApi struct {
	Client    *http.Client
	BaseUrl   string
	PublicKey string
	SecretKey string
	Logger    *logrus.Logger
}

func (BinanceCoinFuturesApi) CancelAllOrders

func (bcfa BinanceCoinFuturesApi) CancelAllOrders(symbol string) ([]byte, error)

func (BinanceCoinFuturesApi) CancelSingleOrder

func (bcfa BinanceCoinFuturesApi) CancelSingleOrder(symbol, origClientOrderId string, orderId int64) ([]byte, error)

func (BinanceCoinFuturesApi) DeleteUserStream

func (bcfa BinanceCoinFuturesApi) DeleteUserStream() ([]byte, error)

returns no information, it is completely fine to ignore the byte slice

func (BinanceCoinFuturesApi) Get24HourTickerPriceChangeStatistics

func (bcfa BinanceCoinFuturesApi) Get24HourTickerPriceChangeStatistics(symbol string) ([]byte, error)

Contains weighted average price (vwap)

func (BinanceCoinFuturesApi) GetAccountBalance

func (bcfa BinanceCoinFuturesApi) GetAccountBalance() ([]byte, error)

func (BinanceCoinFuturesApi) GetAccountInformation

func (bcfa BinanceCoinFuturesApi) GetAccountInformation() ([]byte, error)

func (BinanceCoinFuturesApi) GetExchangeInformation

func (bcfa BinanceCoinFuturesApi) GetExchangeInformation() ([]byte, error)

func (BinanceCoinFuturesApi) GetKlines

func (bcfa BinanceCoinFuturesApi) GetKlines(symbol, interval string, limit int) ([]byte, error)

limit can be just 1 if only current candle is needed.

func (BinanceCoinFuturesApi) GetOrderBook

func (bcfa BinanceCoinFuturesApi) GetOrderBook(symbol string, limit int) ([]byte, error)

func (BinanceCoinFuturesApi) GetUserStreamKey

func (bcfa BinanceCoinFuturesApi) GetUserStreamKey() ([]byte, error)

======================= SIGNED API CALLS ================================

func (*BinanceCoinFuturesApi) NewNetClient

func (bcfa *BinanceCoinFuturesApi) NewNetClient()

func (*BinanceCoinFuturesApi) NewNetClientHTTP2

func (bcfa *BinanceCoinFuturesApi) NewNetClientHTTP2()

func (BinanceCoinFuturesApi) PlaceLimitOrder

func (bcfa BinanceCoinFuturesApi) PlaceLimitOrder(symbol, side string, price, qty float64, reduceOnly bool) ([]byte, error)

func (BinanceCoinFuturesApi) PlaceMarketOrder

func (bcfa BinanceCoinFuturesApi) PlaceMarketOrder(symbol, side string, qty float64, reduceOnly bool) ([]byte, error)

func (BinanceCoinFuturesApi) PlacePostOnlyLimitOrder

func (bcfa BinanceCoinFuturesApi) PlacePostOnlyLimitOrder(symbol, side string, price, qty float64, reduceOnly bool) ([]byte, error)

func (BinanceCoinFuturesApi) PlaceStopMarketOrder

func (bcfa BinanceCoinFuturesApi) PlaceStopMarketOrder(symbol, side string, stopPrice, qty float64) ([]byte, error)

PlaceStopMarketOrder Generally used for trailing profit orders. Binance only allows one stop market order to be active after initial order any secondary orders will replace the first one. In order to use this method as take profit tool use the same side as your position side.

func (*BinanceCoinFuturesApi) PrepareLoggers

func (bcfa *BinanceCoinFuturesApi) PrepareLoggers()

func (*BinanceCoinFuturesApi) SetApiKeys

func (bcfa *BinanceCoinFuturesApi) SetApiKeys(public, secret string)

func (BinanceCoinFuturesApi) UpdateKeepAliveUserStream

func (bcfa BinanceCoinFuturesApi) UpdateKeepAliveUserStream() ([]byte, error)

Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 60 minutes. returns no information, it is completely fine to ignore the byte slice

func (*BinanceCoinFuturesApi) UseMainNet

func (bcfa *BinanceCoinFuturesApi) UseMainNet()

func (*BinanceCoinFuturesApi) UseTestNet

func (bcfa *BinanceCoinFuturesApi) UseTestNet()

type BinanceErrorMessage

type BinanceErrorMessage struct {
	Code    int    `json:"code"`
	Message string `json:"msg"`
}

func (BinanceErrorMessage) ErrorMessage

func (bem BinanceErrorMessage) ErrorMessage() string

type BinanceFutureSocket

type BinanceFutureSocket interface {
	UseMainNet()
	UseTestNet()
	IncrementSubscribeIdCounter()
	OpenWebSocketConnection() error
	OpenWebSocketConnectionWithUserStream(listenKey string) error
	SubscribeToStream(symbol, streamType string) error
	SubscribeLiquidationStream(symbol string) error
	SubscribeBookTickerStream(symbol string) error
	SubscribeSymbolTickerStream(symbol string) error
	PrepareLoggers()

	// ReadFromConnection important part
	ReadFromConnection() (messageType int, p []byte, err error)
	CloseConnection() error
}

type BinanceFutures

type BinanceFutures interface {
	SetApiKeys(public, secret string)
	NewNetClient()
	NewNetClientHTTP2()
	UseMainNet()
	UseTestNet()
	Get24HourTickerPriceChangeStatistics(symbol string) ([]byte, error)
	GetOrderBook(symbol string, limit int) ([]byte, error)
	GetExchangeInformation() ([]byte, error)
	GetKlines(symbol, interval string, limit int) ([]byte, error)
	GetUserStreamKey() ([]byte, error)
	UpdateKeepAliveUserStream() ([]byte, error)
	DeleteUserStream() ([]byte, error)
	PlaceLimitOrder(symbol, side string, price, qty float64, reduceOnly bool) ([]byte, error)
	PlacePostOnlyLimitOrder(symbol, side string, price, qty float64, reduceOnly bool) ([]byte, error) //PlaceMarketOrder(symbol, side string, qty float64, reduceOnly bool) ([]byte, error)
	PlaceMarketOrder(symbol, side string, qty float64, reduceOnly bool) ([]byte, error)
	PlaceStopMarketOrder(symbol, side string, stopPrice, qty float64) ([]byte, error)
	CancelSingleOrder(symbol, origClientOrderId string, orderId int64) ([]byte, error)
	CancelAllOrders(symbol string) ([]byte, error)
	GetAccountBalance() ([]byte, error)
	GetAccountInformation() ([]byte, error)
	PrepareLoggers()
}

type BinanceFuturesApi

type BinanceFuturesApi struct {
	Client    *http.Client
	BaseUrl   string
	PublicKey string
	SecretKey string
	Logger    *logrus.Logger
}

func (BinanceFuturesApi) CancelAllOrders

func (bfa BinanceFuturesApi) CancelAllOrders(symbol string) ([]byte, error)

func (BinanceFuturesApi) CancelSingleOrder

func (bfa BinanceFuturesApi) CancelSingleOrder(symbol, origClientOrderId string, orderId int64) ([]byte, error)

func (BinanceFuturesApi) DeleteUserStream

func (bfa BinanceFuturesApi) DeleteUserStream() ([]byte, error)

returns no information, it is completely fine to ignore the byte slice

func (BinanceFuturesApi) Get24HourTickerPriceChangeStatistics

func (bfa BinanceFuturesApi) Get24HourTickerPriceChangeStatistics(symbol string) ([]byte, error)
Contains weighted average price (vwap)

TESTED

func (BinanceFuturesApi) GetAccountBalance

func (bfa BinanceFuturesApi) GetAccountBalance() ([]byte, error)

func (BinanceFuturesApi) GetAccountInformation

func (bfa BinanceFuturesApi) GetAccountInformation() ([]byte, error)

func (BinanceFuturesApi) GetExchangeInformation

func (bfa BinanceFuturesApi) GetExchangeInformation() ([]byte, error)

func (BinanceFuturesApi) GetKlines

func (bfa BinanceFuturesApi) GetKlines(symbol, interval string, limit int) ([]byte, error)

limit can be just 1 if only current candle is needed.

func (BinanceFuturesApi) GetOrderBook

func (bfa BinanceFuturesApi) GetOrderBook(symbol string, limit int) ([]byte, error)

func (BinanceFuturesApi) GetUserStreamKey

func (bfa BinanceFuturesApi) GetUserStreamKey() ([]byte, error)

func (*BinanceFuturesApi) NewNetClient

func (bfa *BinanceFuturesApi) NewNetClient()

func (*BinanceFuturesApi) NewNetClientHTTP2

func (bfa *BinanceFuturesApi) NewNetClientHTTP2()

func (BinanceFuturesApi) PlaceLimitOrder

func (bfa BinanceFuturesApi) PlaceLimitOrder(symbol, side string, price, qty float64, reduceOnly bool) ([]byte, error)

func (BinanceFuturesApi) PlaceMarketOrder

func (bfa BinanceFuturesApi) PlaceMarketOrder(symbol, side string, qty float64, reduceOnly bool) ([]byte, error)

func (BinanceFuturesApi) PlacePostOnlyLimitOrder

func (bfa BinanceFuturesApi) PlacePostOnlyLimitOrder(symbol, side string, price, qty float64, reduceOnly bool) ([]byte, error)

func (BinanceFuturesApi) PlaceStopMarketOrder

func (bfa BinanceFuturesApi) PlaceStopMarketOrder(symbol, side string, stopPrice, qty float64) ([]byte, error)

PlaceStopMarketOrder Generally used for trailing profit orders. Binance only allows one stop market order to be active after initial order any secondary orders will replace the first one. In order to use this method as take profit tool use the same side as your position side.

func (*BinanceFuturesApi) PrepareLoggers

func (bfa *BinanceFuturesApi) PrepareLoggers()

func (*BinanceFuturesApi) SetApiKeys

func (bfa *BinanceFuturesApi) SetApiKeys(public, secret string)

func (BinanceFuturesApi) UpdateKeepAliveUserStream

func (bfa BinanceFuturesApi) UpdateKeepAliveUserStream() ([]byte, error)

Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 60 minutes. returns no information, it is completely fine to ignore the byte slice

func (*BinanceFuturesApi) UseMainNet

func (bfa *BinanceFuturesApi) UseMainNet()

func (*BinanceFuturesApi) UseTestNet

func (bfa *BinanceFuturesApi) UseTestNet()

type BinanceFuturesCoinWebSocket

type BinanceFuturesCoinWebSocket struct {
	Connection         *websocket.Conn
	BaseUrl            string
	SubscribeIdCounter int
	Logger             *logrus.Logger
}

func (*BinanceFuturesCoinWebSocket) CloseConnection

func (bfcws *BinanceFuturesCoinWebSocket) CloseConnection() error

func (*BinanceFuturesCoinWebSocket) IncrementSubscribeIdCounter

func (bfcws *BinanceFuturesCoinWebSocket) IncrementSubscribeIdCounter()

func (*BinanceFuturesCoinWebSocket) OpenWebSocketConnection

func (bfcws *BinanceFuturesCoinWebSocket) OpenWebSocketConnection() error

Starts a websocket connection with default ping handler.

func (*BinanceFuturesCoinWebSocket) OpenWebSocketConnectionWithUserStream

func (bfcws *BinanceFuturesCoinWebSocket) OpenWebSocketConnectionWithUserStream(listenKey string) error

Starts a websocket connection with default ping handler.

func (*BinanceFuturesCoinWebSocket) PrepareLoggers

func (bfcws *BinanceFuturesCoinWebSocket) PrepareLoggers()

func (BinanceFuturesCoinWebSocket) ReadFromConnection

func (bfcws BinanceFuturesCoinWebSocket) ReadFromConnection() (messageType int, p []byte, err error)

func (BinanceFuturesCoinWebSocket) SubscribeBookTickerStream

func (bfcws BinanceFuturesCoinWebSocket) SubscribeBookTickerStream(symbol string) error

func (BinanceFuturesCoinWebSocket) SubscribeLiquidationStream

func (bfcws BinanceFuturesCoinWebSocket) SubscribeLiquidationStream(symbol string) error

func (BinanceFuturesCoinWebSocket) SubscribeSymbolTickerStream

func (bfcws BinanceFuturesCoinWebSocket) SubscribeSymbolTickerStream(symbol string) error

func (BinanceFuturesCoinWebSocket) SubscribeToStream

func (bfcws BinanceFuturesCoinWebSocket) SubscribeToStream(symbol, streamType string) error

Subscribes to given symbol-stream type over provided connection

func (*BinanceFuturesCoinWebSocket) UseMainNet

func (bfcws *BinanceFuturesCoinWebSocket) UseMainNet()

func (*BinanceFuturesCoinWebSocket) UseTestNet

func (bfcws *BinanceFuturesCoinWebSocket) UseTestNet()

type BinanceFuturesWebSocket

type BinanceFuturesWebSocket struct {
	Connection         *websocket.Conn
	BaseUrl            string
	SubscribeIdCounter int
	Logger             *logrus.Logger
}

func (*BinanceFuturesWebSocket) CloseConnection

func (bfws *BinanceFuturesWebSocket) CloseConnection() error

func (*BinanceFuturesWebSocket) IncrementSubscribeIdCounter

func (bfws *BinanceFuturesWebSocket) IncrementSubscribeIdCounter()

func (*BinanceFuturesWebSocket) OpenWebSocketConnection

func (bfws *BinanceFuturesWebSocket) OpenWebSocketConnection() error

Starts a websocket connection with default ping handler.

func (*BinanceFuturesWebSocket) OpenWebSocketConnectionWithUserStream

func (bfws *BinanceFuturesWebSocket) OpenWebSocketConnectionWithUserStream(listenKey string) error

Starts a websocket connection with default ping handler.

func (*BinanceFuturesWebSocket) PrepareLoggers

func (bfws *BinanceFuturesWebSocket) PrepareLoggers()

func (BinanceFuturesWebSocket) ReadFromConnection

func (bfws BinanceFuturesWebSocket) ReadFromConnection() (messageType int, p []byte, err error)

func (BinanceFuturesWebSocket) SubscribeBookTickerStream

func (bfws BinanceFuturesWebSocket) SubscribeBookTickerStream(symbol string) error

func (BinanceFuturesWebSocket) SubscribeLiquidationStream

func (bfws BinanceFuturesWebSocket) SubscribeLiquidationStream(symbol string) error

func (BinanceFuturesWebSocket) SubscribeSymbolTickerStream

func (bfws BinanceFuturesWebSocket) SubscribeSymbolTickerStream(symbol string) error

func (BinanceFuturesWebSocket) SubscribeToStream

func (bfws BinanceFuturesWebSocket) SubscribeToStream(symbol, streamType string) error

Subscribes to given symbol-stream type over provided connection

func (*BinanceFuturesWebSocket) UseMainNet

func (bfws *BinanceFuturesWebSocket) UseMainNet()

func (*BinanceFuturesWebSocket) UseTestNet

func (bfws *BinanceFuturesWebSocket) UseTestNet()

type RequestError

type RequestError struct {
	StatusCode int
	UrlUsed    string
	Message    BinanceErrorMessage
}

func (*RequestError) Error

func (re *RequestError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL