Documentation ¶
Index ¶
- Variables
- func NewDefaultTotpKey() (*otp.Key, error)
- func ReformatMysqlDSN(dsn string) (string, error)
- type AccountService
- type AggOrder
- type BacktestService
- func (s *BacktestService) BatchInsert(kline []types.KLine) error
- func (s *BacktestService) Insert(kline types.KLine) error
- func (s *BacktestService) QueryFirstKLine(ex types.ExchangeName, symbol string, interval types.Interval) (*types.KLine, error)
- func (s *BacktestService) QueryKLine(ex types.ExchangeName, symbol string, interval types.Interval, orderBy string, ...) (*types.KLine, error)
- func (s *BacktestService) QueryKLinesBackward(exchange types.ExchangeName, symbol string, interval types.Interval, ...) ([]types.KLine, error)
- func (s *BacktestService) QueryKLinesCh(since, until time.Time, exchange types.Exchange, symbols []string, ...) (chan types.KLine, chan error)
- func (s *BacktestService) QueryKLinesForward(exchange types.ExchangeName, symbol string, interval types.Interval, ...) ([]types.KLine, error)
- func (s *BacktestService) QueryLastKLine(ex types.ExchangeName, symbol string, interval types.Interval) (*types.KLine, error)
- func (s *BacktestService) Sync(ctx context.Context, exchange types.Exchange, symbol string, ...) error
- func (s *BacktestService) SyncExist(ctx context.Context, exchange types.Exchange, symbol string, ...) error
- func (s *BacktestService) SyncKLineByInterval(ctx context.Context, exchange types.Exchange, symbol string, ...) error
- func (s *BacktestService) Verify(symbols []string, startTime time.Time, endTime time.Time, ...) (error, bool)
- type CurrencyPositionMap
- type DatabaseService
- type DepositService
- func (s *DepositService) Insert(deposit types.Deposit) error
- func (s *DepositService) Query(exchangeName types.ExchangeName) ([]types.Deposit, error)
- func (s *DepositService) QueryLast(ex types.ExchangeName, limit int) ([]types.Deposit, error)
- func (s *DepositService) Sync(ctx context.Context, ex types.Exchange) error
- type JsonPersistenceConfig
- type JsonPersistenceService
- type JsonStore
- type MemoryService
- type MemoryStore
- type OrderService
- func (s *OrderService) Insert(order types.Order) (err error)
- func (s *OrderService) Query(options QueryOrdersOptions) ([]AggOrder, error)
- func (s *OrderService) QueryLast(ex types.ExchangeName, symbol string, isMargin, isFutures, isIsolated bool, ...) ([]types.Order, error)
- func (s *OrderService) Sync(ctx context.Context, exchange types.Exchange, symbol string, ...) error
- type PersistenceService
- type PersistenceServiceFacade
- type QueryOrdersOptions
- type QueryTradesOptions
- type RedisPersistenceConfig
- type RedisPersistenceService
- type RedisStore
- type RewardService
- func (s *RewardService) AggregateUnspentCurrencyPosition(ctx context.Context, ex types.ExchangeName, since time.Time) (CurrencyPositionMap, error)
- func (s *RewardService) Insert(reward types.Reward) error
- func (s *RewardService) MarkAsSpent(ctx context.Context, uuid string) error
- func (s *RewardService) MarkCurrencyAsSpent(ctx context.Context, currency string) error
- func (s *RewardService) QueryLast(ex types.ExchangeName, limit int) ([]types.Reward, error)
- func (s *RewardService) QueryUnspent(ctx context.Context, ex types.ExchangeName, rewardTypes ...types.RewardType) ([]types.Reward, error)
- func (s *RewardService) QueryUnspentSince(ctx context.Context, ex types.ExchangeName, since time.Time, ...) ([]types.Reward, error)
- func (s *RewardService) Sync(ctx context.Context, exchange types.Exchange) error
- type Store
- type SyncService
- type TradeService
- func (s *TradeService) DeleteAll() error
- func (s *TradeService) Insert(trade types.Trade) error
- func (s *TradeService) Load(ctx context.Context, id int64) (*types.Trade, error)
- func (s *TradeService) Mark(ctx context.Context, id int64, strategyID string) error
- func (s *TradeService) Query(options QueryTradesOptions) ([]types.Trade, error)
- func (s *TradeService) QueryForTradingFeeCurrency(ex types.ExchangeName, symbol string, feeCurrency string) ([]types.Trade, error)
- func (s *TradeService) QueryLast(ex types.ExchangeName, symbol string, isMargin, isFutures, isIsolated bool, ...) ([]types.Trade, error)
- func (s *TradeService) QueryTradingVolume(startTime time.Time, options TradingVolumeQueryOptions) ([]TradingVolume, error)
- func (s *TradeService) Sync(ctx context.Context, exchange types.Exchange, symbol string) error
- func (s *TradeService) UpdatePnL(ctx context.Context, id int64, pnl float64) error
- type TradingVolume
- type TradingVolumeQueryOptions
- type WebsocketClientBase
- func (s *WebsocketClientBase) Conn() *websocket.Conn
- func (s *WebsocketClientBase) Connect(ctx context.Context) error
- func (s *WebsocketClientBase) EmitConnected(conn *websocket.Conn)
- func (s *WebsocketClientBase) EmitDisconnected(conn *websocket.Conn)
- func (s *WebsocketClientBase) EmitError(err error)
- func (s *WebsocketClientBase) EmitMessage(message []byte)
- func (s *WebsocketClientBase) Listen(ctx context.Context)
- func (s *WebsocketClientBase) OnConnected(cb func(conn *websocket.Conn))
- func (s *WebsocketClientBase) OnDisconnected(cb func(conn *websocket.Conn))
- func (s *WebsocketClientBase) OnError(cb func(err error))
- func (s *WebsocketClientBase) OnMessage(cb func(message []byte))
- func (s *WebsocketClientBase) Reconnect()
- type WithdrawService
- func (s *WithdrawService) Insert(withdrawal types.Withdraw) error
- func (s *WithdrawService) Query(exchangeName types.ExchangeName) ([]types.Withdraw, error)
- func (s *WithdrawService) QueryLast(ex types.ExchangeName, limit int) ([]types.Withdraw, error)
- func (s *WithdrawService) Sync(ctx context.Context, ex types.Exchange) error
Constants ¶
This section is empty.
Variables ¶
var ErrExchangeRewardServiceNotImplemented = errors.New("exchange does not implement ExchangeRewardService interface")
var ErrNotImplemented = errors.New("not implemented")
var ErrPersistenceNotExists = errors.New("persistent data does not exists")
var ErrTradeNotFound = errors.New("trade not found")
Functions ¶
func NewDefaultTotpKey ¶ added in v1.4.0
func ReformatMysqlDSN ¶ added in v1.11.0
Types ¶
type AccountService ¶ added in v1.21.0
func NewAccountService ¶ added in v1.21.0
func NewAccountService(db *sqlx.DB) *AccountService
func (*AccountService) InsertAsset ¶ added in v1.21.0
func (s *AccountService) InsertAsset(time time.Time, name types.ExchangeName, account string, assets types.AssetMap) error
type BacktestService ¶
func (*BacktestService) BatchInsert ¶ added in v1.21.0
func (s *BacktestService) BatchInsert(kline []types.KLine) error
BatchInsert Note: all kline should be same exchange, or it will cause issue.
func (*BacktestService) QueryFirstKLine ¶ added in v1.19.3
func (s *BacktestService) QueryFirstKLine(ex types.ExchangeName, symbol string, interval types.Interval) (*types.KLine, error)
func (*BacktestService) QueryKLine ¶ added in v1.19.3
func (s *BacktestService) QueryKLine(ex types.ExchangeName, symbol string, interval types.Interval, orderBy string, limit int) (*types.KLine, error)
QueryKLine queries the klines from the database
func (*BacktestService) QueryKLinesBackward ¶
func (*BacktestService) QueryKLinesCh ¶
func (*BacktestService) QueryKLinesForward ¶
func (*BacktestService) QueryLastKLine ¶ added in v1.19.3
func (s *BacktestService) QueryLastKLine(ex types.ExchangeName, symbol string, interval types.Interval) (*types.KLine, error)
QueryLastKLine queries the last kline from the database
func (*BacktestService) SyncKLineByInterval ¶ added in v1.14.0
type CurrencyPositionMap ¶ added in v1.13.0
type CurrencyPositionMap map[string]fixedpoint.Value
type DatabaseService ¶ added in v1.11.0
func NewDatabaseService ¶ added in v1.11.0
func NewDatabaseService(driver, dsn string) *DatabaseService
func (*DatabaseService) Close ¶ added in v1.11.0
func (s *DatabaseService) Close() error
func (*DatabaseService) Connect ¶ added in v1.11.0
func (s *DatabaseService) Connect() error
type DepositService ¶ added in v1.14.0
func (*DepositService) Insert ¶ added in v1.14.0
func (s *DepositService) Insert(deposit types.Deposit) error
func (*DepositService) Query ¶ added in v1.14.0
func (s *DepositService) Query(exchangeName types.ExchangeName) ([]types.Deposit, error)
func (*DepositService) QueryLast ¶ added in v1.14.0
func (s *DepositService) QueryLast(ex types.ExchangeName, limit int) ([]types.Deposit, error)
type JsonPersistenceConfig ¶ added in v1.12.0
type JsonPersistenceConfig struct {
Directory string `yaml:"directory" json:"directory"`
}
type JsonPersistenceService ¶ added in v1.12.0
type JsonPersistenceService struct {
Directory string
}
type MemoryService ¶ added in v1.12.0
type MemoryService struct {
Slots map[string]interface{}
}
func NewMemoryService ¶ added in v1.12.0
func NewMemoryService() *MemoryService
type MemoryStore ¶ added in v1.12.0
type MemoryStore struct { Key string // contains filtered or unexported fields }
func (*MemoryStore) Load ¶ added in v1.12.0
func (store *MemoryStore) Load(val interface{}) error
func (*MemoryStore) Reset ¶ added in v1.12.0
func (store *MemoryStore) Reset() error
func (*MemoryStore) Save ¶ added in v1.12.0
func (store *MemoryStore) Save(val interface{}) error
type OrderService ¶
func (*OrderService) Query ¶
func (s *OrderService) Query(options QueryOrdersOptions) ([]AggOrder, error)
type PersistenceService ¶ added in v1.12.0
type PersistenceServiceFacade ¶ added in v1.12.0
type PersistenceServiceFacade struct { Redis *RedisPersistenceService Json *JsonPersistenceService Memory *MemoryService }
func (*PersistenceServiceFacade) Get ¶ added in v1.12.0
func (facade *PersistenceServiceFacade) Get() PersistenceService
Get returns the preferred persistence service by fallbacks Redis will be preferred at the first position.
type QueryOrdersOptions ¶ added in v1.11.0
type QueryOrdersOptions struct { Exchange types.ExchangeName Symbol string LastGID int64 Ordering string }
type QueryTradesOptions ¶ added in v1.11.0
type RedisPersistenceConfig ¶ added in v1.12.0
type RedisPersistenceService ¶ added in v1.12.0
type RedisPersistenceService struct {
// contains filtered or unexported fields
}
func NewRedisPersistenceService ¶ added in v1.12.0
func NewRedisPersistenceService(config *RedisPersistenceConfig) *RedisPersistenceService
type RedisStore ¶ added in v1.12.0
type RedisStore struct { ID string // contains filtered or unexported fields }
func (*RedisStore) Load ¶ added in v1.12.0
func (store *RedisStore) Load(val interface{}) error
func (*RedisStore) Reset ¶ added in v1.12.0
func (store *RedisStore) Reset() error
func (*RedisStore) Save ¶ added in v1.12.0
func (store *RedisStore) Save(val interface{}) error
type RewardService ¶ added in v1.13.0
RewardService collects the reward records from the exchange, currently it's only available for MAX exchange. TODO: add summary query for calculating the reward amounts CREATE VIEW reward_summary_by_years AS SELECT YEAR(created_at) as year, reward_type, currency, SUM(quantity) FROM rewards WHERE reward_type != 'airdrop' GROUP BY YEAR(created_at), reward_type, currency ORDER BY year DESC;
func (*RewardService) AggregateUnspentCurrencyPosition ¶ added in v1.13.0
func (s *RewardService) AggregateUnspentCurrencyPosition(ctx context.Context, ex types.ExchangeName, since time.Time) (CurrencyPositionMap, error)
func (*RewardService) Insert ¶ added in v1.13.0
func (s *RewardService) Insert(reward types.Reward) error
func (*RewardService) MarkAsSpent ¶ added in v1.13.0
func (s *RewardService) MarkAsSpent(ctx context.Context, uuid string) error
func (*RewardService) MarkCurrencyAsSpent ¶ added in v1.13.0
func (s *RewardService) MarkCurrencyAsSpent(ctx context.Context, currency string) error
func (*RewardService) QueryLast ¶ added in v1.13.0
func (s *RewardService) QueryLast(ex types.ExchangeName, limit int) ([]types.Reward, error)
func (*RewardService) QueryUnspent ¶ added in v1.13.0
func (s *RewardService) QueryUnspent(ctx context.Context, ex types.ExchangeName, rewardTypes ...types.RewardType) ([]types.Reward, error)
func (*RewardService) QueryUnspentSince ¶ added in v1.13.0
func (s *RewardService) QueryUnspentSince(ctx context.Context, ex types.ExchangeName, since time.Time, rewardTypes ...types.RewardType) ([]types.Reward, error)
type SyncService ¶
type SyncService struct { TradeService *TradeService OrderService *OrderService RewardService *RewardService WithdrawService *WithdrawService DepositService *DepositService }
type TradeService ¶
func NewTradeService ¶
func NewTradeService(db *sqlx.DB) *TradeService
func (*TradeService) DeleteAll ¶ added in v1.17.0
func (s *TradeService) DeleteAll() error
func (*TradeService) Query ¶
func (s *TradeService) Query(options QueryTradesOptions) ([]types.Trade, error)
func (*TradeService) QueryForTradingFeeCurrency ¶
func (s *TradeService) QueryForTradingFeeCurrency(ex types.ExchangeName, symbol string, feeCurrency string) ([]types.Trade, error)
func (*TradeService) QueryLast ¶
func (s *TradeService) QueryLast(ex types.ExchangeName, symbol string, isMargin, isFutures, isIsolated bool, limit int) ([]types.Trade, error)
QueryLast queries the last trade from the database
func (*TradeService) QueryTradingVolume ¶ added in v1.11.0
func (s *TradeService) QueryTradingVolume(startTime time.Time, options TradingVolumeQueryOptions) ([]TradingVolume, error)
type TradingVolume ¶ added in v1.11.0
type TradingVolume struct { Year int `db:"year" json:"year"` Month int `db:"month" json:"month,omitempty"` Day int `db:"day" json:"day,omitempty"` Time time.Time `json:"time,omitempty"` Exchange string `db:"exchange" json:"exchange,omitempty"` Symbol string `db:"symbol" json:"symbol,omitempty"` QuoteVolume float64 `db:"quote_volume" json:"quoteVolume"` }
type TradingVolumeQueryOptions ¶ added in v1.11.0
type WebsocketClientBase ¶ added in v1.13.0
type WebsocketClientBase struct {
// contains filtered or unexported fields
}
func NewWebsocketClientBase ¶ added in v1.13.0
func NewWebsocketClientBase(baseURL string, reconnectDuration time.Duration) *WebsocketClientBase
func (*WebsocketClientBase) Conn ¶ added in v1.13.0
func (s *WebsocketClientBase) Conn() *websocket.Conn
func (*WebsocketClientBase) Connect ¶ added in v1.13.0
func (s *WebsocketClientBase) Connect(ctx context.Context) error
func (*WebsocketClientBase) EmitConnected ¶ added in v1.13.0
func (s *WebsocketClientBase) EmitConnected(conn *websocket.Conn)
func (*WebsocketClientBase) EmitDisconnected ¶ added in v1.13.0
func (s *WebsocketClientBase) EmitDisconnected(conn *websocket.Conn)
func (*WebsocketClientBase) EmitError ¶ added in v1.13.0
func (s *WebsocketClientBase) EmitError(err error)
func (*WebsocketClientBase) EmitMessage ¶ added in v1.13.0
func (s *WebsocketClientBase) EmitMessage(message []byte)
func (*WebsocketClientBase) Listen ¶ added in v1.13.0
func (s *WebsocketClientBase) Listen(ctx context.Context)
func (*WebsocketClientBase) OnConnected ¶ added in v1.13.0
func (s *WebsocketClientBase) OnConnected(cb func(conn *websocket.Conn))
func (*WebsocketClientBase) OnDisconnected ¶ added in v1.13.0
func (s *WebsocketClientBase) OnDisconnected(cb func(conn *websocket.Conn))
func (*WebsocketClientBase) OnError ¶ added in v1.13.0
func (s *WebsocketClientBase) OnError(cb func(err error))
func (*WebsocketClientBase) OnMessage ¶ added in v1.13.0
func (s *WebsocketClientBase) OnMessage(cb func(message []byte))
func (*WebsocketClientBase) Reconnect ¶ added in v1.13.0
func (s *WebsocketClientBase) Reconnect()
type WithdrawService ¶ added in v1.14.0
func (*WithdrawService) Insert ¶ added in v1.14.0
func (s *WithdrawService) Insert(withdrawal types.Withdraw) error
func (*WithdrawService) Query ¶ added in v1.14.0
func (s *WithdrawService) Query(exchangeName types.ExchangeName) ([]types.Withdraw, error)
func (*WithdrawService) QueryLast ¶ added in v1.14.0
func (s *WithdrawService) QueryLast(ex types.ExchangeName, limit int) ([]types.Withdraw, error)