exchange

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2021 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidQuantity   = errors.New("invalid quantity")
	ErrInsufficientFunds = errors.New("insufficient funds or locked")
	ErrInvalidAsset      = errors.New("invalid asset")
)
View Source
var ErrInsufficientData = errors.New("insufficient data")

Functions

func CandleFromKline

func CandleFromKline(symbol string, k binance.Kline) model.Candle

func CandleFromWsKline

func CandleFromWsKline(symbol string, k binance.WsKline) model.Candle

func SplitAssetQuote

func SplitAssetQuote(symbol string) (string, string)

Types

type AssetInfo

type AssetInfo struct {
	BaseAsset  string
	QuoteAsset string

	MinPrice    float64
	MaxPrice    float64
	MinQuantity float64
	MaxQuantity float64
	StepSize    float64
	TickSize    float64

	// Number of decimal places
	QtyDecimalPrecision   int64
	PriceDecimalPrecision int64
}

type AssetQuote

type AssetQuote struct {
	Quote string
	Asset string
}

type Binance

type Binance struct {
	APIKey    string
	APISecret string
	// contains filtered or unexported fields
}

func NewBinance

func NewBinance(ctx context.Context, options ...BinanceOption) (*Binance, error)

func (*Binance) Account

func (b *Binance) Account() (model.Account, error)

func (*Binance) Cancel

func (b *Binance) Cancel(order model.Order) error

func (*Binance) CandlesByLimit

func (b *Binance) CandlesByLimit(ctx context.Context, symbol, period string, limit int) ([]model.Candle, error)

func (*Binance) CandlesByPeriod

func (b *Binance) CandlesByPeriod(ctx context.Context, symbol, period string,
	start, end time.Time) ([]model.Candle, error)

func (*Binance) CandlesSubscription

func (b *Binance) CandlesSubscription(symbol, period string) (chan model.Candle, chan error)

func (*Binance) Order

func (b *Binance) Order(symbol string, id int64) (model.Order, error)

func (*Binance) OrderLimit

func (b *Binance) OrderLimit(side model.SideType, symbol string, quantity float64, limit float64) (model.Order, error)

func (*Binance) OrderMarket

func (b *Binance) OrderMarket(side model.SideType, symbol string, quantity float64) (model.Order, error)

func (*Binance) OrderOCO

func (b *Binance) OrderOCO(side model.SideType, symbol string,
	quantity, price, stop, stopLimit float64) ([]model.Order, error)

func (*Binance) OrderStop

func (b *Binance) OrderStop(symbol string, quantity float64, limit float64) (model.Order, error)

func (*Binance) Orders

func (b *Binance) Orders(symbol string, limit int) ([]model.Order, error)

func (*Binance) Position

func (b *Binance) Position(symbol string) (asset, quote float64, err error)

type BinanceOption

type BinanceOption func(*Binance)

func WithBinanceCredentials

func WithBinanceCredentials(key, secret string) BinanceOption

type Broker

type Broker interface {
	Account() (model.Account, error)
	Position(symbol string) (asset, quote float64, err error)
	Order(symbol string, id int64) (model.Order, error)
	OrderOCO(side model.SideType, symbol string, size, price, stop, stopLimit float64) ([]model.Order, error)
	OrderLimit(side model.SideType, symbol string, size float64, limit float64) (model.Order, error)
	OrderMarket(side model.SideType, symbol string, size float64) (model.Order, error)
	Cancel(model.Order) error
}

type CSVFeed

type CSVFeed struct {
	Feeds               map[string]PairFeed
	CandlePairTimeFrame map[string][]model.Candle
}

func NewCSVFeed

func NewCSVFeed(targetTimeframe string, feeds ...PairFeed) (*CSVFeed, error)

func (*CSVFeed) CandlesByLimit

func (c *CSVFeed) CandlesByLimit(_ context.Context, pair, timeframe string, limit int) ([]model.Candle, error)

func (CSVFeed) CandlesByPeriod

func (c CSVFeed) CandlesByPeriod(_ context.Context, pair, timeframe string,
	start, end time.Time) ([]model.Candle, error)

func (CSVFeed) CandlesSubscription

func (c CSVFeed) CandlesSubscription(pair, timeframe string) (chan model.Candle, chan error)

type DataFeed

type DataFeed struct {
	Data chan model.Candle
	Err  chan error
}

type DataFeedConsumer

type DataFeedConsumer func(model.Candle)

type DataFeedSubscription

type DataFeedSubscription struct {
	Feeds                   []string
	DataFeeds               map[string]*DataFeed
	SubscriptionsByDataFeed map[string][]Subscription
	// contains filtered or unexported fields
}

func NewDataFeed

func NewDataFeed(exchange Exchange) *DataFeedSubscription

func (*DataFeedSubscription) Connect

func (d *DataFeedSubscription) Connect()

func (*DataFeedSubscription) Preload

func (d *DataFeedSubscription) Preload(pair, timeframe string, candles []model.Candle)

func (*DataFeedSubscription) Start

func (d *DataFeedSubscription) Start()

func (*DataFeedSubscription) Subscribe

func (d *DataFeedSubscription) Subscribe(pair, timeframe string, consumer DataFeedConsumer, onCandleClose bool)

type Exchange

type Exchange interface {
	Broker
	Feeder
}

type Feeder

type Feeder interface {
	CandlesByPeriod(ctx context.Context, pair, period string, start, end time.Time) ([]model.Candle, error)
	CandlesByLimit(ctx context.Context, pair, period string, limit int) ([]model.Candle, error)
	CandlesSubscription(pair, timeframe string) (chan model.Candle, chan error)
}

type PairFeed

type PairFeed struct {
	Pair      string
	File      string
	Timeframe string
}

type PaperWallet

type PaperWallet struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewPaperWallet

func NewPaperWallet(ctx context.Context, baseCoin string, options ...PaperWalletOption) *PaperWallet

func (*PaperWallet) Account

func (p *PaperWallet) Account() (model.Account, error)

func (*PaperWallet) Cancel

func (p *PaperWallet) Cancel(order model.Order) error

func (*PaperWallet) CandlesByLimit

func (p *PaperWallet) CandlesByLimit(ctx context.Context, pair, period string, limit int) ([]model.Candle, error)

func (*PaperWallet) CandlesByPeriod

func (p *PaperWallet) CandlesByPeriod(ctx context.Context, pair, period string,
	start, end time.Time) ([]model.Candle, error)

func (*PaperWallet) CandlesSubscription

func (p *PaperWallet) CandlesSubscription(pair, timeframe string) (chan model.Candle, chan error)

func (*PaperWallet) ID

func (p *PaperWallet) ID() int64

func (*PaperWallet) OnCandle

func (p *PaperWallet) OnCandle(candle model.Candle)

func (*PaperWallet) Order

func (p *PaperWallet) Order(symbol string, id int64) (model.Order, error)

func (*PaperWallet) OrderLimit

func (p *PaperWallet) OrderLimit(side model.SideType, symbol string, size float64, limit float64) (model.Order, error)

func (*PaperWallet) OrderMarket

func (p *PaperWallet) OrderMarket(side model.SideType, symbol string, size float64) (model.Order, error)

func (*PaperWallet) OrderOCO

func (p *PaperWallet) OrderOCO(side model.SideType, symbol string,
	size, price, stop, stopLimit float64) ([]model.Order, error)

func (*PaperWallet) Position

func (p *PaperWallet) Position(symbol string) (asset, quote float64, err error)

func (*PaperWallet) Summary

func (p *PaperWallet) Summary()

type PaperWalletOption

type PaperWalletOption func(*PaperWallet)

func WithDataFeed

func WithDataFeed(feeder Feeder) PaperWalletOption

func WithPaperAsset

func WithPaperAsset(symbol string, amount float64) PaperWalletOption

func WithPaperFee

func WithPaperFee(maker, taker float64) PaperWalletOption

type Subscription

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

type UserInfo

type UserInfo struct {
	MakerCommission float64
	TakerCommission float64
}

Jump to

Keyboard shortcuts

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