Documentation
¶
Overview ¶
Package binance provides an HTTP Client implementation for the Binance REST API.
It records system metrics using Prometheus by default.
Index ¶
- Constants
- type AccountInfo
- type Balance
- type CancelOrderRequest
- type CancelOrderResponse
- type Client
- type ClientOption
- type ClientOptions
- type Error
- type ErrorCode
- type Kline
- type KlineInterval
- type KlinesRequest
- type LogLevel
- type NewOrderRequest
- type NewOrderResponse
- type OrderBookTicker
- type OrderFill
- type OrderResponseType
- type OrderSide
- type OrderStatus
- type OrderType
- type QueryOrderRequest
- type QueryOrderResponse
- type SecurityLevel
- type Symbol
- type TimeInForce
Constants ¶
const ( OrderResponseTypeAck = "ACK" OrderResponseTypeResult = "RESULT" OrderResponseTypeFull = "FULL" )
Enumerated types for OrderResponseType.
const ( // GoodUntilCancelled keeps the order active until explicitly // cancelled. GoodUntilCancelled = "GTC" // FillOrKill cancels the order if it is not executed as soon as it // becomes available. This is usually to ensure that the order is // filled at a single price. FillOrKill = "FOK" // ImmediateOrCancel cancels the order if it cannot be completely // filled immediately. ImmediateOrCancel = "IOC" )
const HeaderAPIKey = "X-MBX-APIKEY"
HeaderAPIKey defines the request header to set with the client's API key.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccountInfo ¶
type AccountInfo struct { AccountType string `json:"accountType"` Balances []Balance `json:"balances"` BuyerCommission int `json:"buyerCommission"` CanDeposit bool `json:"canDesposit"` CanTrade bool `json:"canTrade"` CanWithdraw bool `json:"canWithdraw"` MakerCommission int `json:"makerCommission"` SellerCommission int `json:"sellerCommission"` TakerCommission int `json:"takerCommission"` UpdateTime int64 `json:"updateTime"` }
AccountInfo contains all information pertaining to a user's account.
type CancelOrderRequest ¶
type CancelOrderRequest struct { // NewClientOrderID represents the unique identifier for this cancel. // Randomly generated string if not provided. NewClientOrderID string `schema:"newClientOrderId,omitempty"` // OrderID represents the unique identifier provided by Binance on order // creation. // // Either OrderID or OrigClientOrderID must be sent. OrderID int64 `schema:"orderId,omitempty"` // OrigClientOrderID is the unique identifier provided by the client on // order created. // // Either OrderID or OrigClientOrderID must be sent. OrigClientOrderID string `schema:"origClientOrderId,omitempty"` // Symbol represents the market the order was placed on. Symbol string `schema:"symbol"` }
CancelOrderRequest contains the parameters for cancelling an open order.
type CancelOrderResponse ¶
type CancelOrderResponse struct { // ClientOrderID represents the unique identifier provided by the client on // order creation. ClientOrderID string `json:"clientOrderId"` CummulativeQuoteQty string `json:"cummulativeQuoteQty"` // ExecutedQty represents how much of the original quantity has been // executed. ExecutedQty string `json:"executedQty"` // OrderID represents the unique identifier provided by Binance on order // creation. OrderID int64 `json:"orderId"` // OrderListID will always be -1 if the order was not an OCO order. OrderListID int64 `json:"orderListId"` // OriginalQty represents the original amount the order was placed for. OriginalQty string `json:"origQty"` // Price represents the price that the order was placed at. Price string `json:"price"` // Side represents whether the order was a buy or sell. Side OrderSide `json:"side"` // Status represents the current status of the order. Status OrderStatus `json:"status"` // Symbol represents the market the order was placed on. Symbol string `json:"symbol"` // TimeInForce represents the duration of validity of the order. TimeInForce TimeInForce `json:"timeInForce"` // Type represents the type of the order. Type OrderType `json:"type"` }
CancelOrderResponse contains information about an order that was cancelled on the exchange.
type Client ¶
type Client interface { AccountInfo(context.Context) (*AccountInfo, error) CancelOrder(context.Context, *CancelOrderRequest) (*CancelOrderResponse, error) Klines(context.Context, *KlinesRequest) ([]Kline, error) OrderBookTicker(context.Context, string) (*OrderBookTicker, error) NewOrder(context.Context, *NewOrderRequest) (*NewOrderResponse, error) NewOrderTest(context.Context, *NewOrderRequest) error Ping(context.Context) error ServerTime(context.Context) (time.Time, error) QueryOrder(context.Context, *QueryOrderRequest) (*QueryOrderResponse, error) }
Client provides the methods relating to Binance's REST API.
func NewClient ¶
func NewClient(opts ...ClientOption) Client
NewClient returns a Client implementation.
type ClientOption ¶
type ClientOption func(*ClientOptions)
ClientOption is a func-to-ClientOption adapter.
func WithAPIKey ¶
func WithAPIKey(key string) ClientOption
WithAPIKey returns a ClientOption to set the API Key a Client uses to authenticate requests. Not using this option will cause all authenticated requests to fail.
func WithBaseURL ¶
func WithBaseURL(url string) ClientOption
WithBaseURL returns a ClientOption to set the prefix a Client uses to prefix request. This is useful for testing.
func WithLogLevel ¶
func WithLogLevel(level LogLevel) ClientOption
WithLogLevel returns a ClientOption to set the verbosity of a Client's logs. Defaults to `LogLevelNone`.
func WithSecretKey ¶
func WithSecretKey(key string) ClientOption
WithSecretKey returns a ClientOption to set the secret key a Client uses to generate request signatures. Not using this option will cause all signed requests to fail.
func WithTransport ¶
func WithTransport(transport *http.Client) ClientOption
WithTransport returns a client option to set the underlying HTTP Client used for requests. Defaults to the DefaultClient.
type ClientOptions ¶
type ClientOptions struct {
// contains filtered or unexported fields
}
ClientOptions provides configurable fields for Client.
type Error ¶
Error defines the structured error that is returned in some reponses.
More information regarding errors can be found in the error codes documentation:
https://github.com/binance-exchange/binance-official-api-docs/blob/master/errors.md
type ErrorCode ¶
type ErrorCode int
ErrorCode defines a more granular error type that can be returned from the API.
var ( ErrUnknown ErrorCode = -1000 ErrDisconnected ErrorCode = -1001 ErrTooManyRequests ErrorCode = -1003 ErrUnexpectedResponse ErrorCode = -1006 ErrTimeout ErrorCode = -1007 ErrUnknownOrderComposition ErrorCode = -1014 ErrTooManyOrders ErrorCode = -1015 ErrServiceShuttingDown ErrorCode = -1016 ErrUnsupportedOperation ErrorCode = -1020 ErrInvalidTimestamp ErrorCode = -1021 ErrInvalidSignature ErrorCode = -1022 ErrIllegalChars ErrorCode = -1100 ErrTooManyParams ErrorCode = -1101 ErrMandatoryParamEmptyOrMalformed ErrorCode = -1102 ErrUnknownParam ErrorCode = -1103 ErrUnreadParams ErrorCode = -1104 ErrParamEmpty ErrorCode = -1105 ErrParamNotRequired ErrorCode = -1106 ErrBadPrecision ErrorCode = -1111 ErrNoDepth ErrorCode = -1112 ErrTIFNotRequired ErrorCode = -1114 ErrInvalidTIF ErrorCode = -1115 ErrInvalidOrderType ErrorCode = -1116 ErrInvalidSide ErrorCode = -1117 ErrEmptyNewClientOrderID ErrorCode = -1118 ErrEmptyOriginalClientOrderID ErrorCode = -1119 ErrBadInterval ErrorCode = -1120 ErrBadSymbol ErrorCode = -1121 ErrInvalidListenKey ErrorCode = -1125 ErrMoreThanXHours ErrorCode = -1127 ErrOptionalParamsBadCombo ErrorCode = -1128 ErrInvalidParam ErrorCode = -1130 ErrNewOrderRejected ErrorCode = -2010 ErrCancelRejected ErrorCode = -2011 ErrNoSuchOrder ErrorCode = -2013 ErrAPIKeyFormat ErrorCode = -2014 ErrRejectedMBXKey ErrorCode = -2015 ErrNoTradingWindow ErrorCode = -2016 )
type Kline ¶
type Kline struct { Close string CloseTime int64 High string OpenTime int64 Open string Low string QuoteassertVolume string TradeCount int64 Volume string }
Kline contains kline / candlestick data.
func (*Kline) UnmarshalJSON ¶
UnmarshalJSON satisfies the json.Unmarshaler interface for the Kline type.
type KlineInterval ¶
type KlineInterval string
KlineInterval represents the time interval aggregated per candlestick.
const ( OneMinute KlineInterval = "1m" ThreeMinutes KlineInterval = "3m" FiveMinutes KlineInterval = "5m" FifteenMinutes KlineInterval = "15m" ThirtyMinutes KlineInterval = "30m" OneHour KlineInterval = "1h" TwoHours KlineInterval = "2h" FourHours KlineInterval = "4h" SixHours KlineInterval = "6h" EightHours KlineInterval = "8h" TwelveHours KlineInterval = "12h" OneDay KlineInterval = "1d" ThreeDays KlineInterval = "3d" OneWeek KlineInterval = "1w" OneMonth KlineInterval = "1M" )
Enumerated types for KlineInterval.
type KlinesRequest ¶
type KlinesRequest struct { // EndTime represents the time to query until. // // If startTime and endTime is not sent, the most recent klines are // returned. EndTime int64 `schema:"endTime,omitempty"` // Interval represents the time interval to aggregate trades. // // Required. Interval KlineInterval `schema:"interval"` // Limit represents the maximum amount of klines to query. // // Default: 500. // Max: 1000. Limit int64 `schema:"limit,omitempty"` // StartTime represents the time to query from. // // If startTime and endTime is not sent, the most recent klines are // returned. StartTime int64 `schema:"startTime,omitempty"` // Symbol represents the market to query. // // Required. Symbol string `schema:"symbol"` }
KlinesRequest contains the parameters to query kline / candlestick data.
type LogLevel ¶
type LogLevel int
LogLevel configures the extent to which a Client should write output logs.
type NewOrderRequest ¶
type NewOrderRequest struct { // ResponseType represents the kind of response you want to receive back. // // Optional. // Default: ACK for orders of type LIMIT or MARKET, FULL otherwise. ResponseType OrderResponseType `schema:"newOrderRespType,omitempty"` // ReceiveWindow represents the duration of validity in ms of the request. // // Optional. // Default: 5000ms. Maximum: 60000ms. ReceiveWindow int64 `schema:"recvWindow,omitempty"` // IcebergQty represents the maximum amount per sub-order until the total // quantity of the order has been filled. Orders with type LIMIT or // LIMIT_MAKER are automatically made an iceberg order if an IcebergQty is // sent. Any order with IcebergQty set, MUST have it's TimeInForce set to // GTC. // // Optional. IcebergQty float64 `schema:"icebergQty,omitempty"` // Price represents the price at which to place the order. // // Required for orders of type LIMIT, STOP_LOSS_LIMIT and TAKE_PROFIT_LIMIT. Price float64 `schema:"price,omitempty"` // NewClientOrderID represents a unique identifier for the order, supplied // by the client. // // Optional. // Default is a randomly generated string. NewClientOrderID string `schema:"newClientOrderId,omitempty"` // Qty represents the quantity to buy or sell. // // Required for orders of type MARKET, STOP_LOSS, TAKE_PROFIT and // LIMIT_MAKER. Qty float64 `schema:"quantity,omitempty"` // Required for order of type MARKET if Qty is not set. QuoteOrderQty float64 `schema:"quoteOrderQty,omitempty"` // Side represents whether this order is a buy or sell. // // Required for all order types. Side OrderSide `schema:"side"` // StopPrice represents the price the market needs to reach before placing // the order as a market order. // // Required for orders of type STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT and // TAKE_PROFIT_LIMIT. StopPrice float64 `schema:"stopPrice,omitempty"` // Symbol represents the market to place the order on. // // Required for all order types. Symbol string `schema:"symbol"` // Type represents what kind of order to place. // // Required for all order types. Type OrderType `schema:"type"` // TimeInForce represents the duration of validity of the order. // // Required for orders of type LIMIT, STOP_LOSS_LIMIT and TAKE_PROFIT_LIMIT. TimeInForce TimeInForce `schema:"timeInForce,omitempty"` }
NewOrderRequest contains all request parameters for creating a new order.
type NewOrderResponse ¶
type NewOrderResponse struct { // ClientOrderID represents the unique identifier for the order, sent by // the client on creation. If NewClientOrderID was empty in the request, // this will be a randomly generated string. ClientOrderID string `json:"clientOrderId"` CummulativeQuoteQty string `json:"cummulativeQuoteQty,omitempty"` // ExecutedQty represents how much of the original quantity has been // executed. // // Returned with response types RESULT and FULL. ExecutedQty string `json:"executedQty,omitempty"` // Fills contains sub-orders executed in order to fully execute an order. // // Returned wtih response type FULL. Fills []OrderFill `json:"fills,omitempty"` // OrderID represents a unique identifier for the order, generated by // Binance. OrderID int64 `json:"orderId"` // OrderListID will always be -1 if the order was not an OCO order. OrderListID int64 `json:"orderListId"` // OriginalQty represents the original quantity the order was placed for. // // Returned with response types RESULT and FULL. OriginalQty string `json:"origQty,omitempty"` // Price represents the price at which the order was placed. // // Returned with response types RESULT and FULL. Price string `json:"price,omitempty"` // Side represents whether the order was a buy or sell. // // Returned with response types RESULT and FULL. Side OrderSide `json:"side,omitempty"` // Status represents the current status of the order. // // Returned with response types RESULT and FULL. Status OrderStatus `json:"status,omitempty"` // Symbol represents the market the order was placed on. Symbol string `json:"symbol"` // TimeInForce represents the duration of validity of the order. // // Returned with response types RESULT and FULL. TimeInForce TimeInForce `json:"timeInForce,omitempty"` // TransactTime represents the unix timestamp in milliseconds of the time // the order was placed. // // TODO: Verify this comment. TransactTime int64 `json:"transactTime"` // Type represents the type of the order. // // Returned with response types RESULT and FULL. Type OrderType `json:"type,omitempty"` }
NewOrderResponse contains information about an order that was just placed.
type OrderBookTicker ¶
type OrderBookTicker struct { // AskPrice represents the lowest ask price in the order book. AskPrice string `json:"askPrice"` // AskQty represents the volume at the current ask price. AskQty string `json:"askQty"` // BidPrice represents the highest bid in the order book. BidPrice string `json:"bidPrice"` // BidQty represents the volume at the current bid price. BidQty string `json:"bidQty"` // Symbol represents the market queried. Symbol string `json:"symbol"` }
OrderBookTicker contains the best price and quantity on an order book.
type OrderFill ¶
type OrderFill struct { // Commission represents the amount of commission earned by a sub-order. Commission string `schema:"commission"` // CommissionAsset represents the asset that commission is paid out in. CommissionAsset string `schema:"commissionAsset"` // Price represents the price at which a sub-order was executed. Price string `schema:"price"` // Qty represents the quantity of the sub-order. Qty string `schema:"qty"` }
OrderFill represents a sub-order executed as part of a larger order.
type OrderResponseType ¶
type OrderResponseType string
OrderResponseType defines the type of response you'd like to receive after creating a new order.
type OrderSide ¶
type OrderSide string
OrderSide is an enumerated string type representing whether an order is a buy or sell.
type OrderStatus ¶
type OrderStatus string
OrderStatus describes the current state of an order.
const ( // OrderStatusNew indicates a newly created order. OrderStatusNew OrderStatus = "NEW" // OrderStatusPartiallyFilled indicates an order which has had some of // its bought or sold. OrderStatusPartiallyFilled OrderStatus = "PARTIALLY_FILLED" // OrderStatusFilled indicates a completed order. OrderStatusFilled OrderStatus = "FILLED" // OrderStatusCancelled indicates an order that has been cancelled. OrderStatusCancelled OrderStatus = "CANCELLED" // OrderStatusPendingCancel is currently unused. OrderStatusPendingCancel OrderStatus = "PENDING_CANCEL" // OrderStatusRejected indicates an order that has been rejected by // the exchange. This could be due to insuffienct funds in an account // or invalid parameters. OrderStatusRejected OrderStatus = "REJECTED" // OrderStatusExpired indicates an order that has outlived its // TimeInForce configuration. OrderStatusExpired OrderStatus = "EXPIRED" )
type OrderType ¶
type OrderType string
OrderType describes the behavior of an order's execution.
const ( // OrderTypeLimit is a limit order which has a maximum or minimum price // to buy or sell. OrderTypeLimit OrderType = "LIMIT" // OrderTypeMarket is a market order which only specifies a quantity to // buy or sell at the current market price. OrderTypeMarket = "MARKET" // OrderTypeStopLoss is a market order that only executes when a given // stop price is reached. Usually used to minimize loss when the market // drops. OrderTypeStopLoss OrderType = "STOP_LOSS" // OrderTypeStopLossLimit is a limit order that only executes when a // given stop price is reached. OrderTypeStopLossLimit OrderType = "STOP_LOSS_LIMIT" // OrderTypeTakeProfit is a market order that only executes when a given // stop price is reached. Usually used to lock in profits when the // market suddenly rises. OrderTypeTakeProfit OrderType = "TAKE_PROFIT" // OrderTypeTakeProfitLimit is a limit order that only executed when a // given stop price is reached. Usually used to lock in profits when // the market suddenly rises. OrderTypeTakeProfitLimit OrderType = "TAKE_PROFIT_LIMIT" // OrderTypeLimitMaker is a limit order that is rejected if it would // get executed immediately and trade as a taker. OrderTypeLimitMaker OrderType = "LIMIT_MAKER" )
type QueryOrderRequest ¶
type QueryOrderRequest struct { // OrderID represents the unique identifier provided by Binance on order // creation. // // Either OrderID or OrigClientOrderID must be sent. OrderID int64 `schema:"orderId,omitempty"` // OrigClientOrderID is the unique identifier provided by the client on // order created. // // Either OrderID or OrigClientOrderID must be sent. OrigClientOrderID string `schema:"origClientOrderId,omitempty"` // Symbol represents the market the order was placed on. Symbol string `schema:"symbol"` }
QueryOrderRequest contains the parameters for querying an existing order.
type QueryOrderResponse ¶
type QueryOrderResponse struct { // ClientOrderID represents the unique identifier provided by the client on // order creation. ClientOrderID string `json:"clientOrderId"` CummulativeQuoteQty string `json:"cummulativeQuoteQty"` // ExecutedQty represents how much of the original quantity has been // executed. ExecutedQty string `json:"executedQty"` // IcebergQty represents the maximum amount per sub-order until the total // quantity of the order has been filled. IcebergQty string `json:"icebergQty"` // IsWorking represents whether the order is still currently being filled. IsWorking bool `json:"isWorking"` // OrderID represents the unique identifier provided by Binance on order // creation. OrderID int64 `json:"orderId"` // OrderListID will always be -1 if the order was not an OCO order. OrderListID int64 `json:"orderListId"` OriginalQuoteOrderQty string `json:"origQuoteOrderQty"` // OriginalQty represents the original amount the order was placed for. OriginalQty string `json:"origQty"` // Price represents the price that the order was placed at. Price string `json:"price"` // Side represents whether the order was a buy or sell. Side OrderSide `json:"side"` // Status represents the current status of the order. Status OrderStatus `json:"status"` // StopPrice represents the price the market needs to reach before placing // the order as a market order. StopPrice string `json:"stopPrice"` // Symbol represents the market the order was placed on. Symbol string `json:"symbol"` // Time represents the unix timestamp in milliseconds for when an order // was created. // // TODO: Verify this comment. Time int64 `json:"time"` // TimeInForce represents the duration of validity of the order. TimeInForce TimeInForce `json:"timeInForce"` // Type represents the type of the order. Type OrderType `json:"type"` // UpdateTime represents the unix timestamp in milliseconds for when an // order was last updated. UpdateTime int64 `json:"updateTime"` }
QueryOrderResponse contains information about an order that was previously placed on the exchange.
type SecurityLevel ¶
type SecurityLevel int
SecurityLevel represents the required authentication a Client is required to provide when sending requests.
const ( // SecurityLevelNone requires no authentication. SecurityLevelNone SecurityLevel = 0 // SecurityLevelUserStream requires a valid API key. SecurityLevelUserStream SecurityLevel = 1 // SecurityLevelMarketData requires a valid API key. SecurityLevelMarketData SecurityLevel = 2 // SecurityLevelTrade requires a valid API key and a signature. SecurityLevelTrade SecurityLevel = 3 // SecurityLevelUserData requires a valid API key and a signature. SecurityLevelUserData SecurityLevel = 4 )
func (SecurityLevel) RequiresAuth ¶
func (level SecurityLevel) RequiresAuth() bool
RequiresAuth returns whether a SecurityLevel requires a request to have an authentication header present.
func (SecurityLevel) RequiresSigning ¶
func (level SecurityLevel) RequiresSigning() bool
RequiresSigning returns whether a SecurityLevel requires a request to be signed.
func (SecurityLevel) Valid ¶
func (level SecurityLevel) Valid() bool
Valid returns whether `level` is a declared SecurityLevel constant.
type Symbol ¶
type Symbol string
Symbol represents a trading market. Created by concatenating the quote asset and the base asset.
const ( ETHBTC Symbol = "ETHBTC" LTCBTC Symbol = "LTCBTC" BNBBTC Symbol = "BNBBTC" NEOBTC Symbol = "NEOBTC" BCCBTC Symbol = "BCCBTC" GASBTC Symbol = "GASBTC" HSDBTC Symbol = "HSDBTC" MCOBTC Symbol = "MCOBTC" WTCBTC Symbol = "WTCBTC" LRCBTC Symbol = "LRCBTC" QTUMBTC Symbol = "QTUMBTC" YOYOBTC Symbol = "YOYOBTC" OMGBTC Symbol = "OMGBTC" ZRXBTC Symbol = "ZRXBTC" STRATBTC Symbol = "STRATBTC" QTUMETH Symbol = "QTUMETH" EOSETH Symbol = "EOSETH" SNTETH Symbol = "SNTETH" BNTETH Symbol = "BNTETH" BNBETH Symbol = "BNBETH" OAXETH Symbol = "OAXETH" DNTETH Symbol = "DNTETH" MCOETH Symbol = "MCOETH" ICNETH Symbol = "ICNETH" WTCETH Symbol = "WTCETH" LRCETH Symbol = "LRCETH" OMGETH Symbol = "OMGETH" ZRXETH Symbol = "ZRXETH" STRATETH Symbol = "STRATETH" BTCUSDT Symbol = "BTCUSDT" ETHUSDT Symbol = "ETHUSDT" )
func (Symbol) IsAny ¶
IsAny compares a Symbol string to a list of strings and returns if it is contained.
type TimeInForce ¶
type TimeInForce string
TimeInForce sets the duration that an order should be valid.