Versions in this module Expand all Collapse all v0 v0.0.2 Sep 10, 2023 Changes in this version + var ErrInvalidAmount = errors.New("Invalid amount") + var ErrInvalidOrderID = errors.New("Invalid order id") + var ErrInvalidPrice = errors.New("Invalid price") + var ErrInvalidSide = errors.New("Invalid side") + var ErrInvalidTraderID = errors.New("Invalid trader id") + var ErrOrderAlreadyExists = errors.New("Order already exists") + type Depth struct + func NewDepth(bids, asks []*PriceLevel) *Depth + func (d *Depth) Asks() []*PriceLevel + func (d *Depth) Bids() []*PriceLevel + func (d *Depth) MarshalJSON() ([]byte, error) + func (d *Depth) UnmarshalJSON(data []byte) error + type Order struct + func NewOrder(ID, traderID string, side Side, amount, price decimal.Decimal) *Order + func (o *Order) Amount() decimal.Decimal + func (o *Order) ID() string + func (o *Order) MarshalJSON() ([]byte, error) + func (o *Order) Price() decimal.Decimal + func (o *Order) Side() Side + func (o *Order) TraderID() string + func (o *Order) UnmarshalJSON(data []byte) error + type OrderBook struct + func NewOrderBook(symbol string) *OrderBook + func Restore(version uint64, raw [][][]string) *OrderBook + func (ob *OrderBook) CancelOrder(orderID string) *Order + func (ob *OrderBook) Depth() *Depth + func (ob *OrderBook) MarshalJSON() ([]byte, error) + func (ob *OrderBook) ProcessLimitOrder(orderID, traderID string, side Side, amount, price decimal.Decimal) ([]*Trade, error) + func (ob *OrderBook) ProcessMarketOrder(orderID, traderID string, side Side, amount, price decimal.Decimal) ([]*Trade, error) + func (ob *OrderBook) ProcessPostOnlyOrder(orderID, traderID string, side Side, amount, price decimal.Decimal) ([]*Trade, error) + func (ob *OrderBook) ProcessPostOnlyOrderAppendAmount(orderID, traderID string, side Side, amount, price decimal.Decimal) ([]*Trade, error) + func (ob *OrderBook) Quote(traderID string, side Side, amount decimal.Decimal) (*Quote, error) + func (ob *OrderBook) Reset(version uint64) + func (ob *OrderBook) Symbol() string + func (ob *OrderBook) UnmarshalJSON(data []byte) error + func (ob *OrderBook) Version() uint64 + type OrderQueue struct + func NewOrderQueue(price decimal.Decimal) *OrderQueue + func (oq *OrderQueue) Amount() decimal.Decimal + func (oq *OrderQueue) Append(order *Order) *list.Element + func (oq *OrderQueue) Back() *list.Element + func (oq *OrderQueue) Front() *list.Element + func (oq *OrderQueue) Len() int + func (oq *OrderQueue) Orders() *list.List + func (oq *OrderQueue) Price() decimal.Decimal + func (oq *OrderQueue) Remove(e *list.Element) *Order + func (oq *OrderQueue) UpdateAmount(e *list.Element, amount decimal.Decimal) *Order + type OrderSide struct + func NewOrderSide(side Side) *OrderSide + func (os *OrderSide) Append(order *Order) *list.Element + func (os *OrderSide) GreaterThan(price decimal.Decimal) *OrderQueue + func (os *OrderSide) LessThan(price decimal.Decimal) *OrderQueue + func (os *OrderSide) MaxPriceQueue() *OrderQueue + func (os *OrderSide) MinPriceQueue() *OrderQueue + func (os *OrderSide) Orders() []*Order + func (os *OrderSide) Remove(e *list.Element) *Order + func (os *OrderSide) UpdateAmount(e *list.Element, amount decimal.Decimal) *Order + type PriceLevel struct + func NewPriceLevel(price, amount decimal.Decimal) *PriceLevel + func (p *PriceLevel) Amount() decimal.Decimal + func (p *PriceLevel) MarshalJSON() ([]byte, error) + func (p *PriceLevel) Price() decimal.Decimal + func (p *PriceLevel) UnmarshalJSON(data []byte) error + type Quote struct + func NewQuote(price, remainingAmount decimal.Decimal) *Quote + func (m *Quote) MarshalJSON() ([]byte, error) + func (m *Quote) Price() decimal.Decimal + func (m *Quote) RemainingAmount() decimal.Decimal + func (m *Quote) UnmarshalJSON(data []byte) error + 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 + type Trade struct + func NewTrade(takerOrderID, makerOrderID string, amount, price decimal.Decimal) *Trade + func (t *Trade) Amount() decimal.Decimal + func (t *Trade) MakerOrderID() string + func (t *Trade) MarshalJSON() ([]byte, error) + func (t *Trade) Price() decimal.Decimal + func (t *Trade) TakerOrderID() string + func (t *Trade) UnmarshalJSON(data []byte) error