ws

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2021 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Frequency1000ms is default frequency
	Frequency1000ms = "@1000ms"

	// Frequency100ms for fastest updates
	Frequency100ms = "@100ms"
)
View Source
const (
	BaseWS = "wss://stream.binance.com:9443/ws/"
)

Variables

View Source
var ErrIncorrectEventType = errors.New("cant unmarshal event type")

ErrIncorrectEventType represents error when event type can't before determined

Functions

This section is empty.

Types

type AccountInfo

type AccountInfo struct {
	// contains filtered or unexported fields
}

AccountInfo is a wrapper for account info websocket

func (*AccountInfo) Close

func (w *AccountInfo) Close() error

func (*AccountInfo) Read

func (i *AccountInfo) Read() (UpdateType, interface{}, error)

Read reads a account info update message from account info websocket Remark: The websocket is used to update two different structs, which both are flat, hence every call to this function will return either one of the types initialized and the other one will be set to nil

type AccountInfoUpdate

type AccountInfoUpdate struct {
	EventType        UpdateType `json:"e"` // EventType represents the update type
	Time             uint64     `json:"E"` // Time represents the event time
	MakerCommission  int        `json:"m"` // MakerCommission is the maker commission for the account
	TakerCommission  int        `json:"t"` // TakerCommission is the taker commission for the account
	BuyerCommission  int        `json:"b"` // BuyerCommission is the buyer commission for the account
	SellerCommission int        `json:"s"` // SellerCommission is the seller commission for the account
	CanTrade         bool       `json:"T"`
	CanWithdraw      bool       `json:"W"`
	CanDeposit       bool       `json:"D"`
	Balances         []*struct {
		Asset  string `json:"a"`
		Free   string `json:"f"`
		Locked string `json:"l"`
	} `json:"B"`
}

AccountInfoUpdate represents the incoming messages for account info websocket updates

type AccountUpdate

type AccountUpdate struct {
	EventType  UpdateType `json:"e"` // EventType represents the update type
	Time       uint64     `json:"E"` // Time represents the event time
	LastUpdate uint64     `json:"u"` // LastUpdate represents last account update

	Balances []*struct {
		Asset  string `json:"a"`
		Free   string `json:"f"`
		Locked string `json:"l"`
	} `json:"B"`
}

AccountUpdate represents the incoming messages for account websocket updates

type AggTradeUpdate

type AggTradeUpdate struct {
	EventType             UpdateType `json:"e"` // EventType represents the update type
	Time                  uint64     `json:"E"` // Time represents the event time
	Symbol                string     `json:"s"` // Symbol represents the symbol related to the update
	TradeID               uint64     `json:"a"` // TradeID is the aggregated trade ID
	Price                 string     `json:"p"` // Price is the trade price
	Quantity              string     `json:"q"` // Quantity is the trade quantity
	FirstBreakDownTradeID uint64     `json:"f"` // FirstBreakDownTradeID is the first breakdown trade ID
	LastBreakDownTradeID  uint64     `json:"l"` // LastBreakDownTradeID is the last breakdown trade ID
	TradeTime             uint64     `json:"T"` // Time is the trade time
	Maker                 bool       `json:"m"` // Maker indicates whether buyer is a maker
}

AggTradeUpdate represents the incoming messages for aggregated trades websocket updates

type AggTrades

type AggTrades struct {
	// contains filtered or unexported fields
}

AggTrades is a wrapper for trades websocket

func (*AggTrades) Close

func (w *AggTrades) Close() error

func (*AggTrades) Read

func (t *AggTrades) Read() (*AggTradeUpdate, error)

Read reads a trades update message from aggregated trades websocket

func (*AggTrades) Stream

func (t *AggTrades) Stream() <-chan AggTradeUpdate

Stream stream a trades update message from aggregated trades websocket to channel

type AllBookTicker

type AllBookTicker struct {
	// contains filtered or unexported fields
}

AllBookTicker is a wrapper for all book tickers websocket

func (*AllBookTicker) Close

func (w *AllBookTicker) Close() error

func (*AllBookTicker) Read

func (t *AllBookTicker) Read() (*AllBookTickerUpdate, error)

Read reads a book update message from all book tickers websocket

func (*AllBookTicker) Stream

func (t *AllBookTicker) Stream() <-chan AllBookTickerUpdate

Stream stream a book update message from all book tickers websocket to channel

type AllBookTickerUpdate

type AllBookTickerUpdate IndivBookTickerUpdate

AllBookTickerUpdate represents incoming ticker websocket feed for all book tickers

type AllMarketMiniTicker

type AllMarketMiniTicker struct {
	// contains filtered or unexported fields
}

AllMarketMiniTicker is a wrapper for all markets mini-tickers websocket

func (*AllMarketMiniTicker) Close

func (w *AllMarketMiniTicker) Close() error

func (*AllMarketMiniTicker) Read

Read reads a market update message from all markets mini-ticker websocket

func (*AllMarketMiniTicker) Stream

Stream stream a market update message from all markets mini-ticker websocket to channel

type AllMarketMiniTickerUpdate

type AllMarketMiniTickerUpdate []IndivMiniTickerUpdate

AllMarketMiniTickerUpdate represents incoming mini-ticker websocket feed for all tickers

type AllMarketTicker

type AllMarketTicker struct {
	// contains filtered or unexported fields
}

AllMarketTicker is a wrapper for all markets tickers websocket

func (*AllMarketTicker) Close

func (w *AllMarketTicker) Close() error

func (*AllMarketTicker) Read

Read reads a market update message from all markets ticker websocket

func (*AllMarketTicker) Stream

func (t *AllMarketTicker) Stream() <-chan AllMarketTickerUpdate

Stream stream a market update message from all markets ticker websocket to channel

type AllMarketTickerUpdate

type AllMarketTickerUpdate []IndivTickerUpdate

AllMarketTickerUpdate represents incoming ticker websocket feed for all tickers

type BalanceUpdate

type BalanceUpdate struct {
	EventType    UpdateType `json:"e"` // EventType represents the update type
	Time         uint64     `json:"E"` // Time represents the event time
	Asset        string     `json:"a"` // Asset
	BalanceDelta string     `json:"d"` // Balance Delta
	ClearTime    uint64     `json:"T"` // Clear Time
}

BalanceUpdate represents the incoming message for account balances websocket updates

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient() *Client

func NewCustomClient

func NewCustomClient(baseWS string) *Client

func (*Client) AccountInfo

func (c *Client) AccountInfo(listenKey string) (*AccountInfo, error)

AccountInfo opens websocket with account info updates

func (*Client) AggTrades

func (c *Client) AggTrades(symbol string) (*AggTrades, error)

AggTrades opens websocket with aggregated trades updates for the given symbol

func (*Client) AllBookTickers

func (c *Client) AllBookTickers() (*AllBookTicker, error)

AllBookTickers opens websocket with with single depth summary for all tickers

func (*Client) AllMarketMiniTickers

func (c *Client) AllMarketMiniTickers() (*AllMarketMiniTicker, error)

AllMarketMiniTickers opens websocket with with single depth summary for all mini-tickers

func (*Client) AllMarketTickers

func (c *Client) AllMarketTickers() (*AllMarketTicker, error)

AllMarketTickers opens websocket with with single depth summary for all tickers

func (*Client) Depth

func (c *Client) Depth(symbol string, frequency FrequencyType) (*Depth, error)

Depth opens websocket with depth updates for the given symbol (eg @100ms frequency)

func (*Client) DepthLevel

func (c *Client) DepthLevel(symbol, level string, frequency FrequencyType) (*DepthLevel, error)

DepthLevel opens websocket with depth updates for the given symbol (eg @100ms frequency)

func (*Client) IndivBookTicker

func (c *Client) IndivBookTicker(symbol string) (*IndivBookTicker, error)

IndivBookTicker opens websocket with book ticker best bid or ask updates for the given symbol

func (*Client) IndivMiniTicker

func (c *Client) IndivMiniTicker(symbol string) (*IndivMiniTicker, error)

IndivMiniTicker opens websocket with with single depth summary for all mini-tickers

func (*Client) IndivTicker

func (c *Client) IndivTicker(symbol string) (*IndivTicker, error)

IndivTicker opens websocket with with single depth summary for all tickers

func (*Client) Klines

func (c *Client) Klines(symbol string, interval binance.KlineInterval) (*Klines, error)

Klines opens websocket with klines updates for the given symbol with the given interval

func (*Client) Trades

func (c *Client) Trades(symbol string) (*Trades, error)

Trades opens websocket with trades updates for the given symbol

type Depth

type Depth struct {
	// contains filtered or unexported fields
}

Depth is a wrapper for depth websocket

func (*Depth) Close

func (w *Depth) Close() error

func (*Depth) Read

func (d *Depth) Read() (*DepthUpdate, error)

Read reads a depth update message from depth websocket

func (*Depth) Stream

func (d *Depth) Stream() <-chan DepthUpdate

Stream stream a depth update message from depth websocket to channel

type DepthLevel

type DepthLevel struct {
	// contains filtered or unexported fields
}

DepthLevel is a wrapper for depth level websocket

func (*DepthLevel) Close

func (w *DepthLevel) Close() error

func (*DepthLevel) Read

func (d *DepthLevel) Read() (*DepthLevelUpdate, error)

Read reads a depth update message from depth level websocket

func (*DepthLevel) Stream

func (d *DepthLevel) Stream() <-chan DepthLevelUpdate

Stream stream a depth update message from depth level websocket to channel

type DepthLevelUpdate

type DepthLevelUpdate struct {
	LastUpdateID uint64              `json:"lastUpdateId"` // EventType represents the update type
	Bids         []binance.DepthElem `json:"bids"`         // Bids is a list of bids for symbol
	Asks         []binance.DepthElem `json:"asks"`         // Asks is a list of asks for symbol
}

DepthLevelUpdate represents the incoming messages for depth level websocket updates

type DepthUpdate

type DepthUpdate struct {
	EventType     UpdateType          `json:"e"` // EventType represents the update type
	Time          uint64              `json:"E"` // Time represents the event time
	Symbol        string              `json:"s"` // Symbol represents the symbol related to the update
	FirstUpdateID uint64              `json:"U"` // FirstTradeID in event
	FinalUpdateID uint64              `json:"u"` // FirstTradeID in event to sync in /ws/v3/depth
	Bids          []binance.DepthElem `json:"b"` // Bids is a list of bids for symbol
	Asks          []binance.DepthElem `json:"a"` // Asks is a list of asks for symbol
}

DepthUpdate represents the incoming messages for depth websocket updates

type EventTypeUpdate

type EventTypeUpdate struct {
	EventType UpdateType `json:"e"` // EventType represents the update type
}

EventTypeUpdate represents only incoming event type

func (*EventTypeUpdate) UnmarshalJSON

func (e *EventTypeUpdate) UnmarshalJSON(buf []byte) error

UnmarshalJSON need to getting partial json data

type FrequencyType

type FrequencyType string

FrequencyType is a interval for Depth update

type IndivBookTicker

type IndivBookTicker struct {
	// contains filtered or unexported fields
}

IndivBookTicker is a wrapper for an individual book ticker websocket

func (*IndivBookTicker) Close

func (w *IndivBookTicker) Close() error

func (*IndivBookTicker) Read

Read reads a individual book symbol update message from individual book ticker websocket

func (*IndivBookTicker) Stream

func (t *IndivBookTicker) Stream() <-chan IndivBookTickerUpdate

Stream stream a individual book symbol update message from individual book ticker websocket to channel

type IndivBookTickerUpdate

type IndivBookTickerUpdate struct {
	UpdateID int    `json:"u"` // UpdateID to sync up with updateID in /ws/v3/depth
	Symbol   string `json:"s"` // Symbol represents the symbol related to the update
	BidPrice string `json:"b"` // BidPrice
	BidQty   string `json:"B"` // BidQty
	AskPrice string `json:"a"` // AskPrice
	AskQty   string `json:"A"` // AskQty
}

IndivBookTickerUpdate represents incoming book ticker websocket feed

type IndivMiniTicker

type IndivMiniTicker struct {
	// contains filtered or unexported fields
}

IndivMiniTicker is a wrapper for an individual mini-ticker websocket

func (*IndivMiniTicker) Close

func (w *IndivMiniTicker) Close() error

func (*IndivMiniTicker) Read

Read reads a individual symbol update message from individual mini-ticker websocket

func (*IndivMiniTicker) Stream

func (t *IndivMiniTicker) Stream() <-chan IndivMiniTickerUpdate

Stream stream a individual update message from individual mini-ticker websocket to channel

type IndivMiniTickerUpdate

type IndivMiniTickerUpdate struct {
	EventType   UpdateType `json:"e"` // EventType represents the update type
	Time        uint64     `json:"E"` // Time represents the event time
	Symbol      string     `json:"s"` // Symbol represents the symbol related to the update
	LastPrice   string     `json:"c"` // Last price
	OpenPrice   string     `json:"o"` // Open price
	HighPrice   string     `json:"h"` // High price
	LowPrice    string     `json:"l"` // Low price
	VolumeBase  string     `json:"v"` // Total traded base asset volume
	VolumeQuote string     `json:"q"` // Total traded quote asset volume
}

IndivMiniTickerUpdate represents incoming mini-ticker websocket feed

type IndivTicker

type IndivTicker struct {
	// contains filtered or unexported fields
}

IndivTicker is a wrapper for an individual ticker websocket

func (*IndivTicker) Close

func (w *IndivTicker) Close() error

func (*IndivTicker) Read

func (t *IndivTicker) Read() (*IndivTickerUpdate, error)

Read reads a individual symbol update message from individual ticker websocket

func (*IndivTicker) Stream

func (t *IndivTicker) Stream() <-chan IndivTickerUpdate

Stream stream a individual update message from individual ticker websocket to channel

type IndivTickerUpdate

type IndivTickerUpdate struct {
	EventType     UpdateType `json:"e"` // EventType represents the update type
	Time          uint64     `json:"E"` // Time represents the event time
	Symbol        string     `json:"s"` // Symbol represents the symbol related to the update
	Price         string     `json:"p"` // Price is the order price
	PricePercent  string     `json:"P"` // Price percent change
	WeightedPrice string     `json:"w"` // Weighted average price
	FirstTrade    string     `json:"x"` // First trade(F)-1 price (first trade before the 24hr rolling window)
	LastPrice     string     `json:"c"` // Last price
	LastQty       string     `json:"Q"` // Last quantity
	BestBidPrice  string     `json:"b"` // Best bid price
	BestBidQty    string     `json:"B"` // Best bid quantity
	BestAskPrice  string     `json:"a"` // Best ask price
	BestAskQty    string     `json:"A"` // Best ask quantity
	OpenPrice     string     `json:"o"` // Open price
	HighPrice     string     `json:"h"` // High price
	LowPrice      string     `json:"l"` // Low price
	VolumeBase    string     `json:"v"` // Total traded base asset volume
	VolumeQuote   string     `json:"q"` // Total traded quote asset volume
	StatisticOT   uint64     `json:"O"` // Statistics open time
	StatisticsCT  uint64     `json:"C"` // Statistics close time
	FirstTradeID  uint64     `json:"F"` // First trade ID
	LastTradeID   uint64     `json:"L"` // Last trade ID
	TotalTrades   int        `json:"n"` // Total number of trades
}

IndivTickerUpdate represents incoming ticker websocket feed

type Klines

type Klines struct {
	// contains filtered or unexported fields
}

Klines is a wrapper for klines websocket

func (*Klines) Close

func (w *Klines) Close() error

func (*Klines) Read

func (k *Klines) Read() (*KlinesUpdate, error)

Read reads a klines update message from klines websocket

func (*Klines) Stream

func (k *Klines) Stream() <-chan KlinesUpdate

Stream stream a klines update message from klines websocket to channel

type KlinesUpdate

type KlinesUpdate struct {
	EventType UpdateType `json:"e"` // EventType represents the update type
	Time      uint64     `json:"E"` // Time represents the event time
	Symbol    string     `json:"s"` // Symbol represents the symbol related to the update
	Kline     struct {
		StartTime    uint64                `json:"t"` // StartTime is the start time of this bar
		EndTime      uint64                `json:"T"` // EndTime is the end time of this bar
		Symbol       string                `json:"s"` // Symbol represents the symbol related to this kline
		Interval     binance.KlineInterval `json:"i"` // Interval is the kline interval
		FirstTradeID uint64                `json:"f"` // FirstTradeID is the first trade ID
		LastTradeID  uint64                `json:"L"` // LastTradeID is the first trade ID

		OpenPrice            string `json:"o"` // OpenPrice represents the open price for this bar
		ClosePrice           string `json:"c"` // ClosePrice represents the close price for this bar
		High                 string `json:"h"` // High represents the highest price for this bar
		Low                  string `json:"l"` // Low represents the lowest price for this bar
		Volume               string `json:"v"` // Volume is the trades volume for this bar
		Trades               int    `json:"n"` // Trades is the number of conducted trades
		Final                bool   `json:"x"` // Final indicates whether this bar is final or yet may receive updates
		VolumeQuote          string `json:"q"` // VolumeQuote indicates the quote volume for the symbol
		VolumeActiveBuy      string `json:"V"` // VolumeActiveBuy represents the volume of active buy
		VolumeQuoteActiveBuy string `json:"Q"` // VolumeQuoteActiveBuy represents the quote volume of active buy
	} `json:"k"` // Kline is the kline update
}

KlinesUpdate represents the incoming messages for klines websocket updates

type OrderUpdate

type OrderUpdate struct {
	EventType           UpdateType           `json:"e"` // EventType represents the update type
	Time                uint64               `json:"E"` // Time represents the event time
	Symbol              string               `json:"s"` // Symbol represents the symbol related to the update
	NewClientOrderID    string               `json:"c"` // NewClientOrderID is the new client order ID
	Side                binance.OrderSide    `json:"S"` // Side is the order side
	OrderType           binance.OrderType    `json:"o"` // OrderType represents the order type
	TimeInForce         binance.TimeInForce  `json:"f"` // TimeInForce represents the order TIF type
	OrigQty             string               `json:"q"` // OrigQty represents the order original quantity
	Price               string               `json:"p"` // Price is the order price
	StopPrice           string               `json:"P"`
	IcebergQty          string               `json:"F"`
	OrderListId         int64                `json:"g"`
	OrigClientOrderId   string               `json:"C"`
	ExecutionType       binance.OrderStatus  `json:"x"` // ExecutionType represents the execution type for the order
	Status              binance.OrderStatus  `json:"X"` // Status represents the order status for the order
	Error               binance.OrderFailure `json:"r"` // Error represents an order rejection reason
	OrderID             uint64               `json:"i"` // OrderID represents the order ID
	FilledQty           string               `json:"l"` // FilledQty represents the quantity of the last filled trade
	TotalFilledQty      string               `json:"z"` // TotalFilledQty is the accumulated quantity of filled trades on this order
	FilledPrice         string               `json:"L"` // FilledPrice is the price of last filled trade
	Commission          string               `json:"n"` // Commission is the commission for the trade
	CommissionAsset     string               `json:"N"` // CommissionAsset is the asset on which commission is taken
	TradeTime           uint64               `json:"T"` // TradeTime is the trade time
	TradeID             uint64               `json:"t"` // TradeID represents the trade ID
	Maker               bool                 `json:"m"` // Maker represents whether buyer is maker or not
	OrderCreatedTime    uint64               `json:"O"` // OrderTime represents the order time
	QuoteTotalFilledQty string               `json:"Z"`
	QuoteFilledQty      string               `json:"Y"`
	QuoteQty            string               `json:"Q"`
}

OrderUpdate represents the incoming messages for account orders websocket updates

type TradeUpdate

type TradeUpdate struct {
	EventType UpdateType `json:"e"` // EventType represents the update type
	Time      uint64     `json:"E"` // Time represents the event time
	Symbol    string     `json:"s"` // Symbol represents the symbol related to the update
	TradeID   uint64     `json:"t"` // TradeID is the aggregated trade ID
	Price     string     `json:"p"` // Price is the trade price
	Quantity  string     `json:"q"` // Quantity is the trade quantity
	BuyerID   int        `json:"b"` // BuyerID is the buyer trade ID
	SellerID  int        `json:"a"` // SellerID is the seller trade ID
	TradeTime uint64     `json:"T"` // Time is the trade time
	Maker     bool       `json:"m"` // Maker indicates whether buyer is a maker
}

TradeUpdate represents the incoming messages for trades websocket updates

type Trades

type Trades struct {
	// contains filtered or unexported fields
}

Trades is a wrapper for trades websocket

func (*Trades) Close

func (w *Trades) Close() error

func (*Trades) Read

func (t *Trades) Read() (*TradeUpdate, error)

Read reads a trades update message from trades websocket

func (*Trades) Stream

func (t *Trades) Stream() <-chan TradeUpdate

Stream stream a trades update message from trades websocket to channel

type UpdateType

type UpdateType string

UpdateType represents type of account update event

const (
	// UpdateTypeUnknown default for unknown type
	UpdateTypeUnknown     UpdateType = "unknown"
	UpdateTypeDepth       UpdateType = "depthUpdate"
	UpdateTypeIndivTicker UpdateType = "24hrTicker"
	UpdateTypeKline       UpdateType = "kline"
	UpdateTypeAggTrades   UpdateType = "aggTrade"
	UpdateTypeTrades      UpdateType = "trade"

	UpdateTypeOutboundAccountInfo     UpdateType = "outboundAccountInfo"
	UpdateTypeOutboundAccountPosition UpdateType = "outboundAccountPosition"
	UpdateTypeOrderReport             UpdateType = "executionReport"
	UpdateTypeBalanceUpdate           UpdateType = "balanceUpdate"
	UpdateTypeOCOReport               UpdateType = "listStatus"
)

Jump to

Keyboard shortcuts

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