Versions in this module Expand all Collapse all v0 v0.2.5 Apr 16, 2019 Changes in this version + var ErrInsufficientQuantity = errors.New("orderbook: insufficient quantity to calculate price") + var ErrInvalidPrice = errors.New("orderbook: invalid order price") + var ErrInvalidQuantity = errors.New("orderbook: invalid order quantity") + var ErrOrderExists = errors.New("orderbook: order already exists") + var ErrOrderNotExists = errors.New("orderbook: order does not exist") + type Order struct + func NewOrder(orderID string, side Side, quantity, price decimal.Decimal, ...) *Order + func (o *Order) ID() string + func (o *Order) MarshalJSON() ([]byte, error) + func (o *Order) Price() decimal.Decimal + func (o *Order) Quantity() decimal.Decimal + func (o *Order) Side() Side + func (o *Order) String() string + func (o *Order) Time() time.Time + func (o *Order) UnmarshalJSON(data []byte) error + type OrderBook struct + func NewOrderBook() *OrderBook + func (ob *OrderBook) CalculateMarketPrice(side Side, quantity decimal.Decimal) (price decimal.Decimal, err error) + func (ob *OrderBook) CancelOrder(orderID string) *Order + func (ob *OrderBook) Depth() (asks, bids []*PriceLevel) + func (ob *OrderBook) MarshalJSON() ([]byte, error) + func (ob *OrderBook) Order(orderID string) *Order + func (ob *OrderBook) ProcessLimitOrder(side Side, orderID string, quantity, price decimal.Decimal) (done []*Order, partial *Order, partialQuantityProcessed decimal.Decimal, ...) + func (ob *OrderBook) ProcessMarketOrder(side Side, quantity decimal.Decimal) (done []*Order, partial *Order, ...) + func (ob *OrderBook) String() string + func (ob *OrderBook) UnmarshalJSON(data []byte) error + type OrderQueue struct + func NewOrderQueue(price decimal.Decimal) *OrderQueue + func (oq *OrderQueue) Append(o *Order) *list.Element + func (oq *OrderQueue) Head() *list.Element + func (oq *OrderQueue) Len() int + func (oq *OrderQueue) MarshalJSON() ([]byte, error) + func (oq *OrderQueue) Price() decimal.Decimal + func (oq *OrderQueue) Remove(e *list.Element) *Order + func (oq *OrderQueue) String() string + func (oq *OrderQueue) Tail() *list.Element + func (oq *OrderQueue) UnmarshalJSON(data []byte) error + func (oq *OrderQueue) Update(e *list.Element, o *Order) *list.Element + func (oq *OrderQueue) Volume() decimal.Decimal + type OrderSide struct + func NewOrderSide() *OrderSide + func (os *OrderSide) Append(o *Order) *list.Element + func (os *OrderSide) Depth() int + func (os *OrderSide) GreaterThan(price decimal.Decimal) *OrderQueue + func (os *OrderSide) Len() int + func (os *OrderSide) LessThan(price decimal.Decimal) *OrderQueue + func (os *OrderSide) MarshalJSON() ([]byte, error) + func (os *OrderSide) MaxPriceQueue() *OrderQueue + func (os *OrderSide) MinPriceQueue() *OrderQueue + func (os *OrderSide) Orders() (orders []*list.Element) + func (os *OrderSide) Remove(e *list.Element) *Order + func (os *OrderSide) String() string + func (os *OrderSide) UnmarshalJSON(data []byte) error + func (os *OrderSide) Volume() decimal.Decimal + type PriceLevel struct + Price decimal.Decimal + Quantity decimal.Decimal + type Side int + const Buy + const Sell + func (s *Side) UnmarshalJSON(data []byte) error + func (s Side) MarshalJSON() ([]byte, error) + func (s Side) String() string