exchange

package
v0.3.0-pre2 Latest Latest
Warning

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

Go to latest
Published: Dec 26, 2020 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OrderSideBuy = iota
	OrderSideSell
	OrderSideCloseLong
	OrderSideCloseShort

	OrderTypeLimit = iota
	OrderTypeMarket
	OrderTypeStopLimit
	OrderTypeStopMarket

	//OrderStatusUnknown means order info need check with api
	OrderStatusUnknown = iota
	OrderStatusOpen
	OrderStatusDone
	OrderStatusCancel
	OrderStatusFailed

	//TimeInForceGTC good_till_cancel
	TimeInForceGTC = "gtc"
	//TimeInForceFOK fill_or_kill
	TimeInForceFOK = "fok"
	//TimeInForceIOC immediate_or_cancel
	TimeInForceIOC = "ioc"
)
View Source
const (
	PositionSideLong = iota
	PositionSideShort

	PositionModeFixed
	PositionModeCross
)
View Source
const (
	OptionTypeCall = iota
	OptionTypePut

	//FutureTypeCW current week settle future
	FutureTypeCW
	//FutureTypeNW next week settle future
	FutureTypeNW
	//FutureTypeCQ current quarter settle future
	FutureTypeCQ
	//FutureTypeNQ next quarter settle future
	FutureTypeNQ
)

Variables

View Source
var (
	TimeNoExpire = time.Time{}
)

Functions

func NewBadArg

func NewBadArg(msg string, arg interface{}) error

func NewBadExResp

func NewBadExResp(err error) error

Types

type BaseFutureSymbol

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

BaseFutureSymbol define common property of future symbol

func NewBaseFutureSymbol

func NewBaseFutureSymbol(index string, st time.Time, typ FutureType) *BaseFutureSymbol

func (*BaseFutureSymbol) Index

func (bfs *BaseFutureSymbol) Index() string

func (*BaseFutureSymbol) SettleTime

func (bfs *BaseFutureSymbol) SettleTime() time.Time

func (*BaseFutureSymbol) Type added in v0.3.0

func (bfs *BaseFutureSymbol) Type() FutureType

type BaseMarket

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

func (*BaseMarket) Expire

func (m *BaseMarket) Expire() bool

func (*BaseMarket) Symbol

func (m *BaseMarket) Symbol() Symbol

type BaseOptionSymbol

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

BaseOptionSymbol define common property of option symbol

func NewBaseOptionSymbol

func NewBaseOptionSymbol(index string, st time.Time, strike float64, typ OptionType) *BaseOptionSymbol

func (*BaseOptionSymbol) Index

func (bos *BaseOptionSymbol) Index() string

func (*BaseOptionSymbol) SettleTime

func (bos *BaseOptionSymbol) SettleTime() time.Time

func (*BaseOptionSymbol) Strike

func (bos *BaseOptionSymbol) Strike() float64

func (*BaseOptionSymbol) Type

func (bos *BaseOptionSymbol) Type() OptionType

type BaseSpotSymbol

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

BaseSpotSymbol define common property of spot symbol

func NewBaseSpotSymbol

func NewBaseSpotSymbol(base, quote string) *BaseSpotSymbol

func (*BaseSpotSymbol) Base

func (bss *BaseSpotSymbol) Base() string

func (*BaseSpotSymbol) Quote

func (bss *BaseSpotSymbol) Quote() string

type BaseSwapSymbol

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

func NewBaseSwapSymbol

func NewBaseSwapSymbol(index string) *BaseSwapSymbol

func (*BaseSwapSymbol) Index

func (bsw *BaseSwapSymbol) Index() string

type Channel

type Channel interface {
	String() string
}

Channel a subscribe channel

type Client

type Client struct {
	NewConn ConnCB
	Conn    rpc.Conn
	Addr    string
	Key     string
	Secret  string
	Timeout time.Duration
	//subscribe struct will be updated via rpc Conn notify message
	Sub   map[string]interface{}
	SubMu sync.Mutex
}

func NewClient

func NewClient(cb ConnCB, addr, key, secret string, timeout time.Duration) *Client

NewClient got a new client instance

func (*Client) Close

func (c *Client) Close() error

Close the running loop

func (*Client) Done

func (c *Client) Done() <-chan struct{}

Done get notify if running loop closed

func (*Client) Error

func (c *Client) Error() error

Error return error if running loop closed due to error

func (*Client) Handle

func (c *Client) Handle(_ context.Context, notify *rpc.Notify)

Handler handle notify message

func (*Client) Index

func (c *Client) Index(sym Symbol) (*Index, error)

func (*Client) OrderBook

func (c *Client) OrderBook(symbol Symbol) (*OrderBook, error)

func (*Client) Run

func (c *Client) Run(ctx context.Context) error

Run create wsconn and start conn running loop

type CodeC

type CodeC struct {
}

CodeC define base encode method

func NewCodeC

func NewCodeC() *CodeC

func (*CodeC) Encode

func (cc *CodeC) Encode(req rpc.Request) ([]byte, error)

Encode encode req with json.Marshal

type ConnCB

type ConnCB func(addr string) (rpc.Conn, error)

type ErrBadArg

type ErrBadArg struct {
	Arg interface{}
	Msg string
}

ErrBadArg means func argument is incorrect

func (*ErrBadArg) Error

func (eba *ErrBadArg) Error() string

func (*ErrBadArg) Is

func (eba *ErrBadArg) Is(target error) bool

type ErrBadExResp

type ErrBadExResp struct {
	Err error
}

ErrBadResp means exchange response message error

func (*ErrBadExResp) Error

func (ebe *ErrBadExResp) Error() string

func (*ErrBadExResp) Is

func (ebe *ErrBadExResp) Is(target error) bool

type FutureType added in v0.3.0

type FutureType int

type FuturesSymbol

type FuturesSymbol interface {
	Symbol
	Index() string
	SettleTime() time.Time
	Type() FutureType
}

type Index

type Index struct {
	Price   float64
	Created time.Time
	Symbol  Symbol
}

Index price

type IndexNotify

type IndexNotify Index

func (*IndexNotify) Key

func (i *IndexNotify) Key() string

func (*IndexNotify) Snapshot

func (i *IndexNotify) Snapshot() *Index

type IntID

type IntID struct {
	ID int64
}

func NewIntID

func NewIntID(id int64) IntID

func (IntID) String

func (sid IntID) String() string

type OptionSymbol

type OptionSymbol interface {
	Symbol
	Strike() float64
	Index() string
	SettleTime() time.Time
	Type() OptionType
}

type OptionType

type OptionType int

func (OptionType) String

func (ot OptionType) String() string

type Order

type Order struct {
	ID       OrderID
	ClientID OrderID
	Symbol   Symbol
	Amount   decimal.Decimal
	Filled   decimal.Decimal
	Price    decimal.Decimal
	AvgPrice decimal.Decimal
	Fee      decimal.Decimal
	Created  time.Time
	Updated  time.Time
	Side     OrderSide
	Status   OrderStatus
	Type     OrderType
	Raw      interface{} `json:"-"`
}

func (*Order) Equal

func (o *Order) Equal(o2 *Order) bool

Equal check whether o equal o2 mainly used for test

type OrderBook

type OrderBook struct {
	Symbol  Symbol
	Bids    []OrderElem
	Asks    []OrderElem
	Created time.Time
}

OrderBook get via OrderBookDS.Snapshot

type OrderBookDS

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

OrderBookDS is the ds which hold orderbook info

func NewOrderBookDS

func NewOrderBookDS(notify *OrderBookNotify) *OrderBookDS

func (*OrderBookDS) Snapshot

func (ds *OrderBookDS) Snapshot() *OrderBook

func (*OrderBookDS) Update

func (ds *OrderBookDS) Update(notify *OrderBookNotify)

type OrderBookNotify

type OrderBookNotify struct {
	Symbol Symbol
	Bids   []OrderElem
	Asks   []OrderElem
}

OrderBookNotify change of current orderbook OrderElem.Amount == 0 means delete

func (*OrderBookNotify) Key

func (notify *OrderBookNotify) Key() string

type OrderElem

type OrderElem struct {
	Price  float64
	Amount float64
}

type OrderID

type OrderID interface {
	String() string
}

type OrderReqOption

type OrderReqOption interface {
}

OrderReqOption specific option to create order each exchange support different options.

func NewPostOnlyOption

func NewPostOnlyOption(postOnly bool) OrderReqOption

func NewTimeInForceOption

func NewTimeInForceOption(flag TimeInForceFlag) OrderReqOption

type OrderRequest

type OrderRequest struct {
	Symbol   Symbol
	ClientID OrderID
	Side     OrderSide
	Type     OrderType
	Price    decimal.Decimal
	Amount   decimal.Decimal
}

OrderRequest carry field which used to create order

func NewOrderRequest

func NewOrderRequest(sym Symbol, cid OrderID, side OrderSide, typ OrderType,
	price float64, amount float64) *OrderRequest

type OrderSide

type OrderSide int

func (OrderSide) String

func (s OrderSide) String() string

type OrderStatus

type OrderStatus int

type OrderType

type OrderType int

func (OrderType) String

func (t OrderType) String() string

type Position

type Position struct {
	Symbol           Symbol
	Mode             PositionMode
	Side             PositionSide
	LiquidationPrice decimal.Decimal
	AvgOpenPrice     decimal.Decimal
	CreateTime       time.Time
	Margin           decimal.Decimal
	MarginMaintRatio decimal.Decimal
	Position         decimal.Decimal
	AvailPosition    decimal.Decimal
	RealizedPNL      decimal.Decimal
	UNRealizedPNL    decimal.Decimal
	Leverage         decimal.Decimal
	Raw              interface{}
}

Position info

type PositionMode

type PositionMode int

func (PositionMode) String

func (pm PositionMode) String() string

type PositionSide

type PositionSide int

func (PositionSide) String

func (ps PositionSide) String() string

type PostOnlyOption

type PostOnlyOption struct {
	PostOnly bool
}

PostOnlyOption wether the order ensure maker

type SpotSymbol

type SpotSymbol interface {
	Symbol
	Base() string
	Quote() string
}

type StrID

type StrID string

func NewStrID

func NewStrID(id string) StrID

func (StrID) String

func (sid StrID) String() string

type SubType

type SubType int
const (
	SubTypeOrderBook SubType = iota
	SubTypeIndex
	SubTypeTrade
	SubTypePrivateOrder
	SubTypePrivateTrade
)

type SwapSymbol

type SwapSymbol interface {
	Symbol
	Index() string
}

type Symbol

type Symbol interface {
	String() string
}

Symbol is used to unit different exchange markets symbol serialize

type TimeInForceFlag

type TimeInForceFlag string

TimeInForceFlag specific TimeInForceOption value

type TimeInForceOption

type TimeInForceOption struct {
	Flag TimeInForceFlag
}

TimeInForceOption specific how long the order remains in effect

type TradeFee

type TradeFee struct {
	Symbol Symbol
	Maker  float64
	Taker  float64
}

TradeFee for the symbol

type WSClient

type WSClient struct {
	rpc.Conn
	// contains filtered or unexported fields
}

func NewWSClient

func NewWSClient(addr string, codec rpc.Codec, handler rpc.Handler) *WSClient

func (*WSClient) Run

func (wc *WSClient) Run(ctx context.Context) error

type WSNotify

type WSNotify struct {
	Exchange string
	Chan     string
	Data     interface{}
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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