Documentation
¶
Index ¶
- Constants
- Variables
- func GenerateFakeERC20Address() (string, error)
- func IsERC20Address(address string) bool
- type Done
- type Order
- func NewLimitOrder(orderID string, side Side, quantity, price fpdecimal.Decimal, tif TIF, ...) (*Order, error)
- func NewMarketOrder(orderID string, side Side, quantity fpdecimal.Decimal, userAddress string) (*Order, error)
- func NewMarketQuoteOrder(orderID string, side Side, quantity fpdecimal.Decimal, userAddress string) (*Order, error)
- func NewStopLimitOrder(orderID string, side Side, quantity, price, stop fpdecimal.Decimal, oco string, ...) (*Order, error)
- func (o *Order) ActivateStopOrder()
- func (o *Order) Cancel() bool
- func (o *Order) DecreaseQuantity(quantity fpdecimal.Decimal)
- func (o *Order) ID() string
- func (o *Order) IsCanceled() bool
- func (o *Order) IsLimitOrder() bool
- func (o *Order) IsMarketOrder() bool
- func (o *Order) IsQuote() bool
- func (o *Order) IsStopOrder() bool
- func (o *Order) MarshalJSON() ([]byte, error)
- func (o *Order) OCO() string
- func (o *Order) OrderType() OrderType
- func (o *Order) OriginalQty() fpdecimal.Decimal
- func (o *Order) Price() fpdecimal.Decimal
- func (o *Order) Quantity() fpdecimal.Decimal
- func (o *Order) Role() Role
- func (o *Order) SetMaker()
- func (o *Order) SetQuantity(quantity fpdecimal.Decimal)
- func (o *Order) SetTaker()
- func (o *Order) Side() Side
- func (o *Order) StopPrice() fpdecimal.Decimal
- func (o *Order) String() string
- func (o *Order) TIF() TIF
- func (o *Order) ToLimitOrder() *Order
- func (o *Order) ToSimple() *TradeOrder
- func (o *Order) UnmarshalJSON(data []byte) error
- func (o *Order) UserAddress() string
- type OrderBook
- func (ob *OrderBook) CalculateMarketPrice(side Side, quantity fpdecimal.Decimal) (price fpdecimal.Decimal, err error)
- func (ob *OrderBook) CancelOrder(orderID string) *Order
- func (ob *OrderBook) GetAsks() interface{}
- func (ob *OrderBook) GetBids() interface{}
- func (ob *OrderBook) GetOrder(orderID string) *Order
- func (ob *OrderBook) Process(ctx context.Context, order *Order) (done *Done, err error)
- func (ob *OrderBook) String() string
- type OrderBookBackend
- type OrderType
- type Role
- type Side
- type TIF
- type TradeOrder
Constants ¶
const ERC20AddressPrefix = "0x"
ERC20AddressPrefix is the standard prefix for ERC20 addresses
Variables ¶
var ( ErrInvalidQuantity = errors.New("invalid quantity") ErrInvalidPrice = errors.New("invalid price") ErrInvalidArgument = errors.New("invalid argument") ErrInvalidTif = errors.New("invalid TIF") ErrOrderExists = errors.New("order exists") ErrNonexistentOrder = errors.New("nonexistent order") ErrInsufficientQuantity = errors.New("insufficient quantity") )
Errors
Functions ¶
func GenerateFakeERC20Address ¶
GenerateFakeERC20Address generates a fake ERC20-compatible address Format: 0x + 40 random hex characters
func IsERC20Address ¶
IsERC20Address checks if an address is a valid ERC20 address
Types ¶
type Done ¶
type Done struct {
// Initial order processed
Order *Order
// Original quantity of the order
Quantity fpdecimal.Decimal
// Trades executed, including the taker order if applicable
Trades []TradeOrder
// Orders canceled, e.g., due to TIF or OCO
Canceled []*Order
// Activations, e.g., stop orders converted to limit
Activated []*Order
// Remaining quantity left for the initial order
Left fpdecimal.Decimal
// Total quantity processed for the initial order
Processed fpdecimal.Decimal
// Whether the order was stored in the book (e.g., partial fill GTC)
Stored bool
}
Done contains information about the order execution result
func (*Done) GetTradeOrder ¶
func (d *Done) GetTradeOrder(id string) *TradeOrder
GetTradeOrder returns TradeOrder by id
func (*Done) MarshalJSON ¶
MarshalJSON implements json.Marshaler interface for Done
func (*Done) SetLeftQuantity ¶
SetLeftQuantity updates the left quantity and recalculates processed quantity
func (*Done) ToMessagingDoneMessage ¶
func (d *Done) ToMessagingDoneMessage() *messaging.DoneMessage
ToMessagingDoneMessage converts the Done object to a messaging.DoneMessage.
type Order ¶
type Order struct {
// contains filtered or unexported fields
}
Order stores information about order
func NewLimitOrder ¶
func NewLimitOrder(orderID string, side Side, quantity, price fpdecimal.Decimal, tif TIF, oco string, userAddress string) (*Order, error)
NewLimitOrder creates new constant object Order
func NewMarketOrder ¶
func NewMarketOrder(orderID string, side Side, quantity fpdecimal.Decimal, userAddress string) (*Order, error)
NewMarketOrder creates new constant object Order
func NewMarketQuoteOrder ¶
func NewMarketQuoteOrder(orderID string, side Side, quantity fpdecimal.Decimal, userAddress string) (*Order, error)
NewMarketQuoteOrder creates new constant object Order, but quantity is in Quote mode
func NewStopLimitOrder ¶
func NewStopLimitOrder(orderID string, side Side, quantity, price, stop fpdecimal.Decimal, oco string, userAddress string) (*Order, error)
NewStopLimitOrder creates new constant object Order
func (*Order) ActivateStopOrder ¶
func (o *Order) ActivateStopOrder()
ActivateStopOrder transforms Stop-GetOrder into Order
func (*Order) DecreaseQuantity ¶
DecreaseQuantity set Quantity field
func (*Order) IsLimitOrder ¶
IsLimitOrder returns true if Order is LIMIT
func (*Order) IsMarketOrder ¶
IsMarketOrder returns true if Order is MARKET
func (*Order) IsStopOrder ¶
IsStopOrder returns true if Order is STOP-LIMIT
func (*Order) MarshalJSON ¶
MarshalJSON implements custom JSON marshaling for Order
func (*Order) OriginalQty ¶
OriginalQty returns originalQty field copy
func (*Order) SetQuantity ¶
SetQuantity set Quantity field
func (*Order) ToLimitOrder ¶
ToLimitOrder converts a stop order to a limit order
func (*Order) UnmarshalJSON ¶
UnmarshalJSON implements custom JSON unmarshaling for Order
func (*Order) UserAddress ¶
UserAddress returns the user's address
type OrderBook ¶
type OrderBook struct {
// contains filtered or unexported fields
}
OrderBook implements standard matching algorithm
func NewOrderBook ¶
func NewOrderBook(backend OrderBookBackend) *OrderBook
NewOrderBook creates Orderbook object with a backend
func (*OrderBook) CalculateMarketPrice ¶
func (ob *OrderBook) CalculateMarketPrice(side Side, quantity fpdecimal.Decimal) (price fpdecimal.Decimal, err error)
CalculateMarketPrice returns total market Price for requested quantity
func (*OrderBook) CancelOrder ¶
CancelOrder removes Order with given ID from the Order book or the Stop book
func (*OrderBook) GetAsks ¶
func (ob *OrderBook) GetAsks() interface{}
GetAsks returns the ask side of the order book
func (*OrderBook) GetBids ¶
func (ob *OrderBook) GetBids() interface{}
GetBids returns the bid side of the order book
type OrderBookBackend ¶
type OrderBookBackend interface {
// Order operations
GetOrder(orderID string) *Order
StoreOrder(order *Order) error
UpdateOrder(order *Order) error
DeleteOrder(orderID string)
// Side operations
AppendToSide(side Side, order *Order)
RemoveFromSide(side Side, order *Order) bool
// Stop book operations
AppendToStopBook(order *Order)
RemoveFromStopBook(order *Order) bool
// OCO operations
CheckOCO(orderID string) string
// Get sides for iterating
GetBids() interface{}
GetAsks() interface{}
GetStopBook() interface{}
}
OrderBookBackend defines the interface for different backend implementations
type TradeOrder ¶
type TradeOrder struct {
OrderID string
Role Role
Price fpdecimal.Decimal
IsQuote bool
Quantity fpdecimal.Decimal
UserAddress string
}
TradeOrder structure
func (*TradeOrder) MarshalJSON ¶
func (t *TradeOrder) MarshalJSON() ([]byte, error)
MarshalJSON implements Marshaler interface