orderbooks

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2020 License: BSD-2-Clause Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type OnUpdateCB

type OnUpdateCB func(snapshot Update)

type OrderBook

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

OrderBook represents a mutable order book, which is able to receive snapshots and deltas.

It is not thread-safe; so if you need to use it from more than one goroutine, apply your own synchronization.

func NewOrderBook

func NewOrderBook(snapshot common.OrderBookSnapshot) *OrderBook

func (*OrderBook) ApplyDelta

func (ob *OrderBook) ApplyDelta(obd common.OrderBookDelta) error

ApplyDelta applies the given delta (received from the wire) to the current orderbook. If the sequence number isn't exactly the old one incremented by 1, returns an error without applying delta.

func (*OrderBook) ApplyDeltaOpt

func (ob *OrderBook) ApplyDeltaOpt(obd common.OrderBookDelta, ignoreSeqNum bool) error

ApplyDeltaOpt applies the given delta (received from the wire) to the current orderbook. If ignoreSeqNum is true, applies the delta even if the sequence number isn't exactly the old one incremented by 1.

func (*OrderBook) ApplySnapshot

func (ob *OrderBook) ApplySnapshot(snapshot common.OrderBookSnapshot)

ApplySnapshot sets the internal orderbook to the provided snapshot.

func (*OrderBook) GetSeqNum

func (ob *OrderBook) GetSeqNum() common.SeqNum

GetSeqNum is a shortcut for GetSnapshot().SeqNum

func (*OrderBook) GetSnapshot

func (ob *OrderBook) GetSnapshot() common.OrderBookSnapshot

GetSnapshot returns the snapshot of the current orderbook.

type OrderBookSnapshotGetter

type OrderBookSnapshotGetter interface {
	GetOrderBookSnapshot() (common.OrderBookSnapshot, error)
}

OrderBookSnapshotGetter gets the up-to-date snapshot. Typically clients should use OrderBookSnapshotGetterREST, which gets the snapshot from the REST API.

This is needed in the first place because snapshots are broadcasted via websocket only every minute, so whenever the client just starts, or gets out of sync for a little bit, it needs to get the up-to-date snapshot to avoid waiting for it for too long from the websocket.

type OrderBookSnapshotGetterREST

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

OrderBookSnapshotGetterREST implements OrderBookSnapshotGetter; it gets snapshot for the specified market from the REST API.

func NewOrderBookSnapshotGetterREST

func NewOrderBookSnapshotGetterREST(
	market common.Market,
	restClient *rest.RESTClient,
) (*OrderBookSnapshotGetterREST, error)

NewOrderBookSnapshotGetterREST creates a new snapshot getter which uses the REST API to get snapshots for the given market.

func (*OrderBookSnapshotGetterREST) GetOrderBookSnapshot

func (sg *OrderBookSnapshotGetterREST) GetOrderBookSnapshot() (common.OrderBookSnapshot, error)

type OrderBookUpdater

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

OrderBookUpdater maintains the up-to-date orderbook by applying live updates (which are typically fed to it from the StreamClient updates)

func NewOrderBookUpdater

func NewOrderBookUpdater(params *OrderBookUpdaterParams) *OrderBookUpdater

NewOrderBookUpdater creates a new orderbook updater with the provided params.

func (*OrderBookUpdater) Close

func (obu *OrderBookUpdater) Close() error

Close stops event loop; after that instance of OrderBookUpdater can't be used anymore.

func (*OrderBookUpdater) OnUpdate

func (obu *OrderBookUpdater) OnUpdate(cb OnUpdateCB)

OnUpdate registers a new callback which will be called when an update is available: either state update or orderbook update. The callback will be called from the same internal eventloop, so they are never called concurrently with each other, and the callback shouldn't block.

func (*OrderBookUpdater) ReceiveDelta

func (obu *OrderBookUpdater) ReceiveDelta(delta common.OrderBookDelta)

ReceiveDelta should be called when a new orderbook delta is received from the websocket. If the delta applies cleanly to the internal orderbook, the OnUpdate callbacks will be called shortly.

func (*OrderBookUpdater) ReceiveSnapshot

func (obu *OrderBookUpdater) ReceiveSnapshot(snapshot common.OrderBookSnapshot)

ReceiveSnapshot should be called when a new orderbook snapshot is received from the websocket. The OnUpdate callbacks will be called shortly.

type OrderBookUpdaterParams

type OrderBookUpdaterParams struct {
	// SnapshotGetter is optional; it returns an up-to-date snapshot, typically
	// from REST API. See NewOrderBookSnapshotGetterRESTBySymbol.
	//
	// If SnapshotGetter is not set, then OrderBookUpdater will just wait for
	// the snapshot from the websocket (snapshot is delivered there every minute)
	SnapshotGetter OrderBookSnapshotGetter
	// contains filtered or unexported fields
}

OrderBookUpdaterParams contains params for creating a new orderbook updater.

type OrderBookWatcher

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

OrderBookWatcher uses a RESTClient and StreamClient to keep an order book up to date with little setup.

func NewOrderBookWatcher

func NewOrderBookWatcher(params OrderBookWatcherParams) (*OrderBookWatcher, error)

NewOrderBookWatcher creates a new OrderBookWatcher.

func (*OrderBookWatcher) GetSnapshot

func (ob *OrderBookWatcher) GetSnapshot() common.OrderBookSnapshot

GetSnapshot returns a snapshot copy of the current order book.

func (*OrderBookWatcher) Market

func (ob *OrderBookWatcher) Market() common.Market

Market returns the market for the order book

func (*OrderBookWatcher) OnUpdate

func (ob *OrderBookWatcher) OnUpdate(update OnUpdateCB)

OnUpdate calls a callback function whenever the order book updates

func (*OrderBookWatcher) Stop

func (ob *OrderBookWatcher) Stop() error

Stop stops the order book, along with the websocket connection.

type OrderBookWatcherParams

type OrderBookWatcherParams struct {
	Market       common.MarketParams
	RESTClient   *rest.RESTClient
	StreamClient *websocket.StreamClient
}

OrderBookWatcherParams are used as options to create a new OrderBookWatcher.

type StateUpdate

type StateUpdate struct {
	// IsInSync is true when the cached deltas cover the current snapshot.
	IsInSync bool

	// SeqNum is the sequence number of the current snapshot.
	SeqNum *common.SeqNum
	// MinDeltaNum is the min sequence number of the cached deltas.
	MinDeltaNum *common.SeqNum
	// MaxDeltaNum is the max sequence number of the cached deltas.
	MaxDeltaNum *common.SeqNum
}

StateUpdate is delivered to handlers (registered with OnUpdate) when the client becomes in sync or goes out of sync; see IsInSync field.

func (*StateUpdate) String

func (su *StateUpdate) String() string

type Update

type Update struct {
	OrderBookUpdate  *common.OrderBookSnapshot
	StateUpdate      *StateUpdate
	GetSnapshotError error
}

Jump to

Keyboard shortcuts

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