Documentation ¶
Overview ¶
Package quotes implements multiple price feed adapters.
Index ¶
- Variables
- type BinanceConfig
- type BitfakerConfig
- type ConfFuncVWA
- type Config
- type DisabledFilter
- type Driver
- type DriverType
- type ExchangeType
- type Filter
- type FilterConfig
- type FilterType
- type IndexConfig
- type KrakenConfig
- type Market
- func (m Market) ApplyMainQuote() Market
- func (m Market) Base() string
- func (m Market) IsEmpty() bool
- func (m Market) LegacyQuote() string
- func (m Market) MarshalJSON() ([]byte, error)
- func (m Market) Quote() string
- func (m Market) String() string
- func (m Market) StringWithoutMain() string
- func (m *Market) UnmarshalJSON(raw []byte) error
- type OpendaxConfig
- type PriceCacheVWA
- func (p *PriceCacheVWA) ActivateDriver(driver DriverType, market Market)
- func (p *PriceCacheVWA) ActiveWeights(market Market) decimal.Decimal
- func (p *PriceCacheVWA) AddTrade(market Market, price, volume, weight decimal.Decimal, timestamp time.Time)
- func (p *PriceCacheVWA) GetVWA(market Market) (decimal.Decimal, bool)
- type PriceDiffFilter
- type PriceDiffFilterConfig
- type QuickswapConfig
- type SamplerFilterConfig
- type SyncswapConfig
- type TakerType
- type TradeEvent
- type UniswapV3ApiConfig
- type UniswapV3GethConfig
Constants ¶
This section is empty.
Variables ¶
var ( DriverBinance = DriverType{"binance"} DriverKraken = DriverType{"kraken"} DriverOpendax = DriverType{"opendax"} DriverBitfaker = DriverType{"bitfaker"} DriverUniswapV3Api = DriverType{"uniswap_v3_api"} DriverUniswapV3Geth = DriverType{"uniswap_v3_geth"} DriverSyncswap = DriverType{"syncswap"} DriverQuickswap = DriverType{"quickswap"} DriverInternal = DriverType{"internal"} // Internal trades )
var ( // TakerTypeUnknown represents the trade, // for which you can't determine its type, // and therefore the taker side cannot be deduced. TakerTypeUnknown = TakerType{""} // TakerTypeBuy represents the "buy" trade. // It's value is set to "sell" because the sell order it // was matched with was present in the order book before, // therefore the taker is the "sell" side. TakerTypeBuy = TakerType{"sell"} // TakerTypeSell represents the "sell" trade. // It's value is set to "buy" because the buy order it // was matched with was present in the order book before, // therefore the taker is the "buy" side. TakerTypeSell = TakerType{"buy"} )
Functions ¶
This section is empty.
Types ¶
type BinanceConfig ¶ added in v0.0.23
type BinanceConfig struct { USDCtoUSDT bool `yaml:"usdc_to_usdt" env:"USDC_TO_USDT" env-default:"true"` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
type BitfakerConfig ¶ added in v0.0.23
type BitfakerConfig struct { Period time.Duration `yaml:"period" env:"PERIOD" env-default:"5s"` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
type ConfFuncVWA ¶ added in v0.0.26
type ConfFuncVWA func(*strategyVWA)
func WithCustomWeightsVWA ¶ added in v0.0.26
func WithCustomWeightsVWA(driversWeights map[DriverType]decimal.Decimal) ConfFuncVWA
WithCustomWeightsVWA configures custom drivers weights. Should be passed as an argument to the NewStrategyVWA() constructor.
type Config ¶
type Config struct { Drivers []DriverType `yaml:"drivers" env:"QUOTES_DRIVERS" env-default:"binance,syncswap"` Index IndexConfig `yaml:"index" env-prefix:"QUOTES_INDEX_"` Binance BinanceConfig `yaml:"binance" env-prefix:"QUOTES_BINANCE_"` Kraken KrakenConfig `yaml:"kraken" env-prefix:"QUOTES_KRAKEN_"` Opendax OpendaxConfig `yaml:"opendax" env-prefix:"QUOTES_OPENDAX_"` Bitfaker BitfakerConfig `yaml:"bitfaker" env-prefix:"QUOTES_BITFAKER_"` UniswapV3Api UniswapV3ApiConfig `yaml:"uniswap_v3_api" env-prefix:"QUOTES_UNISWAP_V3_API_"` UniswapV3Geth UniswapV3GethConfig `yaml:"uniswap_v3_geth" env-prefix:"QUOTES_UNISWAP_V3_GETH_"` Syncswap SyncswapConfig `yaml:"syncswap" env-prefix:"QUOTES_SYNCSWAP_"` Quickswap QuickswapConfig `yaml:"quickswap" env-prefix:"QUOTES_QUICKSWAP_"` }
func NewConfigFromEnv ¶ added in v0.0.22
func NewConfigFromFile ¶ added in v0.0.24
func (Config) GetByDriverType ¶ added in v0.0.61
func (config Config) GetByDriverType(driver DriverType) (Config, error)
type DisabledFilter ¶ added in v0.0.30
type DisabledFilter struct{}
func (DisabledFilter) Allow ¶ added in v0.0.30
func (f DisabledFilter) Allow(trade TradeEvent) bool
type Driver ¶
type Driver interface { ActiveDrivers() []DriverType ExchangeType() ExchangeType Start() error Stop() error Subscribe(market Market) error Unsubscribe(market Market) error SetInbox(inbox <-chan TradeEvent) }
type DriverType ¶
type DriverType struct {
// contains filtered or unexported fields
}
DriverType is enum that represents all available quotes providers.
func ToDriverType ¶
func ToDriverType(raw string) (DriverType, error)
func (DriverType) MarshalJSON ¶
func (t DriverType) MarshalJSON() ([]byte, error)
func (DriverType) MarshalYAML ¶
func (t DriverType) MarshalYAML() (any, error)
func (*DriverType) SetValue ¶ added in v0.0.61
func (t *DriverType) SetValue(s string) error
func (DriverType) String ¶
func (d DriverType) String() string
func (*DriverType) UnmarshalJSON ¶
func (t *DriverType) UnmarshalJSON(raw []byte) error
func (*DriverType) UnmarshalYAML ¶
func (t *DriverType) UnmarshalYAML(value *yaml.Node) error
type ExchangeType ¶ added in v0.0.61
type ExchangeType string
var ( ExchangeTypeUnspecified ExchangeType = "" ExchangeTypeCEX ExchangeType = "cex" ExchangeTypeDEX ExchangeType = "dex" ExchangeTypeHybrid ExchangeType = "hybrid" )
type Filter ¶ added in v0.0.30
type Filter interface {
Allow(trade TradeEvent) bool
}
func NewFilter ¶ added in v0.0.41
func NewFilter(conf FilterConfig) Filter
type FilterConfig ¶ added in v0.0.30
type FilterConfig struct { FilterType FilterType `yaml:"filter_type" env:"TYPE" env-default:"disabled"` SamplerFilter SamplerFilterConfig `yaml:"sampler" env-prefix:"SAMPLER_"` PriceDiffFilter PriceDiffFilterConfig `yaml:"price_diff" env-prefix:"PRICE_DIFF_"` }
type FilterType ¶ added in v0.0.30
type FilterType string
const ( SamplerFilterType FilterType = "sampler" PriceDiffFilterType FilterType = "price_diff" DisabledFilterType FilterType = "disabled" )
type IndexConfig ¶ added in v0.0.26
type IndexConfig struct { TradesCached int `yaml:"trades_cached" env:"TRADES_CACHED" env-default:"20"` BufferMinutes int `yaml:"buffer_minutes" env:"BUFFER_MINUTES" env-default:"15"` BatchBufferSeconds int `yaml:"batch_seconds" env:"BATCH_SECONDS" env-default:"5"` MarketsMapping map[string][]string `yaml:"markets_mapping" env:"MARKETS_MAPPING"` }
type KrakenConfig ¶ added in v0.0.23
type KrakenConfig struct { URL string `yaml:"url" env:"URL" env-default:"wss://ws.kraken.com"` ReconnectPeriod time.Duration `yaml:"period" env:"RECONNECT_PERIOD" env-default:"5s"` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
type Market ¶
type Market struct {
// contains filtered or unexported fields
}
func NewDerivedMerket ¶ added in v0.0.43
func NewMarketFromString ¶ added in v0.0.26
NewMarketFromString returns a new Market from a string "btc/usdt" -> Market{btc, usdt} NOTE: string must contain "/" delimiter
func NewMarketWithMainQuote ¶ added in v0.0.63
func (Market) ApplyMainQuote ¶ added in v0.0.63
func (Market) LegacyQuote ¶ added in v0.0.63
func (Market) MarshalJSON ¶ added in v0.0.46
func (Market) String ¶ added in v0.0.26
String returns a string representation of the market. Example: `Market{btc, usdt}` -> "btc/usdt"
func (Market) StringWithoutMain ¶ added in v0.0.63
func (*Market) UnmarshalJSON ¶ added in v0.0.46
type OpendaxConfig ¶ added in v0.0.23
type OpendaxConfig struct { URL string `yaml:"url" env:"URL" env-default:"wss://alpha.yellow.org/api/v1/finex/ws"` ReconnectPeriod time.Duration `yaml:"period" env:"RECONNECT_PERIOD" env-default:"5s"` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
type PriceCacheVWA ¶ added in v0.0.26
type PriceCacheVWA struct {
// contains filtered or unexported fields
}
func (*PriceCacheVWA) ActivateDriver ¶ added in v0.0.26
func (p *PriceCacheVWA) ActivateDriver(driver DriverType, market Market)
ActivateDriver makes the driver active for the market.
func (*PriceCacheVWA) ActiveWeights ¶ added in v0.0.26
func (p *PriceCacheVWA) ActiveWeights(market Market) decimal.Decimal
ActiveWeights returns the sum of active driver weights for the market. TODO: cache the weights inside the marketHistory
type PriceDiffFilter ¶ added in v0.0.30
type PriceDiffFilter struct {
// contains filtered or unexported fields
}
func (*PriceDiffFilter) Allow ¶ added in v0.0.30
func (f *PriceDiffFilter) Allow(trade TradeEvent) bool
type PriceDiffFilterConfig ¶ added in v0.0.30
type PriceDiffFilterConfig struct {
Threshold string `yaml:"threshold" env:"THRESHOLD" env-default:"0.05"`
}
type QuickswapConfig ¶ added in v0.0.40
type QuickswapConfig struct { URL string `yaml:"url" env:"URL"` AssetsURL string `` /* 136-byte string literal not displayed */ // PoolFactoryAddress is the address of the factory contract. // See docs at https://docs.quickswap.exchange/technical-reference/smart-contracts/v3/factory. // Note that the contract used in this lib is compiled from https://github.com/code-423n4/2022-09-quickswap. PoolFactoryAddress string `yaml:"pool_factory_address" env:"POOL_FACTORY_ADDRESS" env-default:"0x411b0fAcC3489691f28ad58c47006AF5E3Ab3A28"` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
type SamplerFilterConfig ¶ added in v0.0.30
type SamplerFilterConfig struct {
Percentage int64 `yaml:"percentage" env:"PERCENTAGE" env-default:"5"`
}
type SyncswapConfig ¶ added in v0.0.23
type SyncswapConfig struct { URL string `yaml:"url" env:"URL"` AssetsURL string `` /* 134-byte string literal not displayed */ MappingURL string `` /* 139-byte string literal not displayed */ ClassicPoolFactoryAddress string `` /* 127-byte string literal not displayed */ StablePoolFactoryAddress string `yaml:"stable_pool_factory_address" env:"STABLE_POOL_FACTORY_ADDRESS" env-default:"0xE4CF807E351b56720B17A59094179e7Ed9dD3727"` StablePoolMarkets []string `yaml:"stable_pool_markets" env:"STABLE_POOL_MARKETS" env-default:"usdt/usdc"` // `env-default` tag value is a comma separated list of markets as in `usdt/usdc,usdc/dai` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
type TakerType ¶
type TakerType struct {
// contains filtered or unexported fields
}
TakerType is enum that represents the side of taker in a trade.
func ToTakerType ¶
func (TakerType) MarshalJSON ¶
func (TakerType) MarshalYAML ¶
func (*TakerType) UnmarshalJSON ¶
func (*TakerType) UnmarshalYAML ¶
type TradeEvent ¶
type TradeEvent struct { Source DriverType Market Market // e.g. `btc/usdt` Price decimal.Decimal Amount decimal.Decimal Total decimal.Decimal TakerType TakerType CreatedAt time.Time }
TradeEvent is a generic container for trades received from providers.
type UniswapV3ApiConfig ¶ added in v0.0.23
type UniswapV3ApiConfig struct { URL string `yaml:"url" env:"URL" env-default:"https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3"` WindowSize time.Duration `yaml:"window_size" env:"WINDOW_SIZE" env-default:"2s"` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
type UniswapV3GethConfig ¶ added in v0.0.23
type UniswapV3GethConfig struct { URL string `yaml:"url" env:"URL"` AssetsURL string `` /* 134-byte string literal not displayed */ FactoryAddress string `yaml:"factory_address" env:"FACTORY_ADDRESS" env-default:"0x1F98431c8aD98523631AE4a59f267346ea31F984"` Filter FilterConfig `yaml:"filter" env-prefix:"FILTER_"` }
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Types and helpers for easy formatting and parsing open-finance protocol messages.
|
Types and helpers for easy formatting and parsing open-finance protocol messages. |
App for testing quotes drivers.
|
App for testing quotes drivers. |