Documentation ¶
Index ¶
- Constants
- Variables
- func ConvertFiat(amount float64, from, to Code) (float64, error)
- func FindMatchingPairsBetween(this, that PairsWithTranslation) map[Pair]Pair
- func ForexEnabled() bool
- func GetForeignExchangeRate(quotation Pair) (float64, error)
- func GetSymbolByCurrencyName(currency Code) (string, error)
- func RunStorageUpdater(o BotOverrides, m *Config, filepath string) error
- func SeedForeignExchangeData(c Currencies) error
- func ShutdownStorageUpdater() error
- func UpdateBaseCurrency(c Code) error
- func UpdateCurrencies(c Currencies, isCryptocurrency bool)
- type AllFXSettings
- type BaseCodes
- type BotOverrides
- type Code
- func (c Code) Equal(check Code) bool
- func (c Code) IsCryptocurrency() bool
- func (c Code) IsEmpty() bool
- func (c Code) IsFiatCurrency() bool
- func (c Code) IsStableCurrency() bool
- func (c Code) Lower() Code
- func (c Code) MarshalJSON() ([]byte, error)
- func (c Code) String() string
- func (c *Code) UnmarshalJSON(d []byte) error
- func (c Code) Upper() Code
- type CoinmarketcapSettings
- type Config
- type Conversion
- func (c Conversion) Convert(fromAmount float64) (float64, error)
- func (c Conversion) ConvertInverse(fromAmount float64) (float64, error)
- func (c Conversion) GetInversionRate() (float64, error)
- func (c Conversion) GetRate() (float64, error)
- func (c Conversion) IsFiat() bool
- func (c Conversion) IsInvalid() bool
- func (c Conversion) String() string
- type ConversionRates
- type Conversions
- type Currencies
- func (c Currencies) Add(a Code) Currencies
- func (c Currencies) Contains(check Code) bool
- func (c Currencies) HasData() bool
- func (c Currencies) Join() string
- func (c Currencies) MarshalJSON() ([]byte, error)
- func (c Currencies) Match(other Currencies) bool
- func (c Currencies) Strings() []string
- func (c *Currencies) UnmarshalJSON(d []byte) error
- type FXSettings
- type File
- type FullStore
- type Item
- type OrderParameters
- type Pair
- func CopyPairFormat(p Pair, pairs []Pair, exact bool) Pair
- func MatchPairsWithNoDelimiter(currencyPair string, pairs Pairs, pairFmt PairFormat) (Pair, error)
- func NewBTCUSD() Pair
- func NewBTCUSDT() Pair
- func NewPair(baseCurrency, quoteCurrency Code) Pair
- func NewPairDelimiter(currencyPair, delimiter string) (Pair, error)
- func NewPairFromFormattedPairs(currencyPair string, pairs Pairs, pairFmt PairFormat) (Pair, error)
- func NewPairFromString(currencyPair string) (Pair, error)
- func NewPairFromStrings(base, quote string) (Pair, error)
- func NewPairWithDelimiter(base, quote, delimiter string) Pair
- func (p Pair) Contains(c Code) bool
- func (p Pair) Equal(cPair Pair) bool
- func (p Pair) EqualIncludeReciprocal(cPair Pair) bool
- func (p Pair) Format(pf PairFormat) Pair
- func (p Pair) GetFormatting() (PairFormat, error)
- func (p Pair) IsAssociated(a Pair) bool
- func (p Pair) IsCryptoFiatPair() bool
- func (p Pair) IsCryptoPair() bool
- func (p Pair) IsCryptoStablePair() bool
- func (p Pair) IsEmpty() bool
- func (p Pair) IsFiatPair() bool
- func (p Pair) IsInvalid() bool
- func (p Pair) IsPopulated() bool
- func (p Pair) IsStablePair() bool
- func (p Pair) Len() int
- func (p Pair) LimitBuyOrderParameters(wantingToBuy Code) (*OrderParameters, error)
- func (p Pair) LimitSellOrderParameters(wantingToSell Code) (*OrderParameters, error)
- func (p Pair) Lower() Pair
- func (p Pair) MarketBuyOrderParameters(wantingToBuy Code) (*OrderParameters, error)
- func (p Pair) MarketSellOrderParameters(wantingToSell Code) (*OrderParameters, error)
- func (p Pair) MarshalJSON() ([]byte, error)
- func (p Pair) Other(c Code) (Code, error)
- func (p Pair) String() string
- func (p Pair) Swap() Pair
- func (p *Pair) UnmarshalJSON(d []byte) error
- func (p Pair) Upper() Pair
- type PairDifference
- type PairFormat
- type PairStore
- type Pairs
- func (p Pairs) Add(pairs ...Pair) Pairs
- func (p Pairs) Contains(check Pair, exact bool) bool
- func (p Pairs) ContainsAll(check Pairs, exact bool) error
- func (p Pairs) ContainsCurrency(check Code) bool
- func (p Pairs) DeriveFrom(symbol string) (Pair, error)
- func (p Pairs) Equal(b Pairs) bool
- func (p Pairs) FindDifferences(incoming Pairs, pairFmt PairFormat) (PairDifference, error)
- func (p Pairs) Format(pairFmt PairFormat) Pairs
- func (p Pairs) GetCrypto() Currencies
- func (p Pairs) GetCurrencies() Currencies
- func (p Pairs) GetFiat() Currencies
- func (p Pairs) GetFormatting() (PairFormat, error)
- func (p Pairs) GetMatch(pair Pair) (Pair, error)
- func (p Pairs) GetPairsByBase(baseTerm Code) (Pairs, error)
- func (p Pairs) GetPairsByCurrencies(currencies Currencies) Pairs
- func (p Pairs) GetPairsByFilter(filter Code) Pairs
- func (p Pairs) GetPairsByQuote(quoteTerm Code) (Pairs, error)
- func (p Pairs) GetRandomPair() (Pair, error)
- func (p Pairs) GetStables() Currencies
- func (p Pairs) GetStablesMatch(code Code) Pairs
- func (p Pairs) HasFormatDifference(pairFmt PairFormat) bool
- func (p Pairs) Join() string
- func (p Pairs) Lower() Pairs
- func (p Pairs) MarshalJSON() ([]byte, error)
- func (p Pairs) Remove(rem ...Pair) Pairs
- func (p Pairs) RemovePairsByFilter(filter Code) Pairs
- func (p Pairs) Strings() []string
- func (p *Pairs) UnmarshalJSON(d []byte) error
- func (p Pairs) Upper() Pairs
- func (p Pairs) ValidateAndConform(pFmt PairFormat, bypassFormatting bool) (Pairs, error)
- type PairsManager
- func (p *PairsManager) Delete(a asset.Item)
- func (p *PairsManager) DisablePair(a asset.Item, pair Pair) error
- func (p *PairsManager) EnablePair(a asset.Item, pair Pair) error
- func (p *PairsManager) EnsureOnePairEnabled() (Pair, asset.Item, error)
- func (p *PairsManager) Get(a asset.Item) (*PairStore, error)
- func (p *PairsManager) GetAssetTypes(enabled bool) asset.Items
- func (p *PairsManager) GetFormat(a asset.Item, request bool) (PairFormat, error)
- func (p *PairsManager) GetPairs(a asset.Item, enabled bool) (Pairs, error)
- func (p *PairsManager) IsAssetEnabled(a asset.Item) error
- func (p *PairsManager) IsAssetSupported(a asset.Item) bool
- func (p *PairsManager) IsPairAvailable(pair Pair, a asset.Item) (bool, error)
- func (p *PairsManager) IsPairEnabled(pair Pair, a asset.Item) (bool, error)
- func (p *PairsManager) Load(seed *PairsManager)
- func (p *PairsManager) Match(symbol string, a asset.Item) (Pair, error)
- func (p *PairsManager) SetAssetEnabled(a asset.Item, enabled bool) error
- func (p *PairsManager) SetDelimitersFromConfig() error
- func (p *PairsManager) Store(a asset.Item, ps *PairStore) error
- func (p *PairsManager) StoreFormat(a asset.Item, pFmt *PairFormat, config bool) error
- func (p *PairsManager) StorePairs(a asset.Item, pairs Pairs, enabled bool) error
- type PairsWithTranslation
- type Provider
- type Role
- type Storage
- func (s *Storage) ConvertCurrency(amount float64, from, to Code) (float64, error)
- func (s *Storage) FetchCurrencyAnalysisData() error
- func (s *Storage) ForeignExchangeUpdater()
- func (s *Storage) GetBaseCurrency() Code
- func (s *Storage) GetCryptocurrencies() Currencies
- func (s *Storage) GetDefaultBaseCurrency() Code
- func (s *Storage) GetDefaultCryptocurrencies() Currencies
- func (s *Storage) GetDefaultFiatCurrencies() Currencies
- func (s *Storage) GetDefaultForeignExchangeRates() (Conversions, error)
- func (s *Storage) GetExchangeRates() (Conversions, error)
- func (s *Storage) GetFiatCurrencies() Currencies
- func (s *Storage) GetStorageRate(from, to Code) (float64, error)
- func (s *Storage) GetTotalMarketCryptocurrencies() (Currencies, error)
- func (s *Storage) IsDefaultCryptocurrency(c Code) bool
- func (s *Storage) IsDefaultCurrency(c Code) bool
- func (s *Storage) IsVerbose() bool
- func (s *Storage) LoadFileCurrencyData(f *File) error
- func (s *Storage) NewConversion(from, to Code) (Conversion, error)
- func (s *Storage) RunUpdater(overrides BotOverrides, settings *Config, filePath string) error
- func (s *Storage) SeedCurrencyAnalysisData() error
- func (s *Storage) SeedDefaultForeignExchangeRates() error
- func (s *Storage) SeedForeignExchangeRate(from, to Code) (map[string]float64, error)
- func (s *Storage) SeedForeignExchangeRates() error
- func (s *Storage) SeedForeignExchangeRatesByCurrencies(c Currencies) error
- func (s *Storage) SetDefaultCryptocurrencies(c Currencies) error
- func (s *Storage) SetDefaultFiatCurrencies(c Currencies) error
- func (s *Storage) SetDefaults()
- func (s *Storage) SetStableCoins(c Currencies) error
- func (s *Storage) SetupConversionRates()
- func (s *Storage) SetupForexProviders(setting ...base.Settings) error
- func (s *Storage) Shutdown() error
- func (s *Storage) UpdateBaseCurrency(c Code) error
- func (s *Storage) UpdateCurrencies() error
- func (s *Storage) UpdateEnabledCryptoCurrencies(c Currencies)
- func (s *Storage) UpdateEnabledFiatCurrencies(c Currencies)
- func (s *Storage) ValidateCode(newCode string) Code
- func (s *Storage) ValidateFiatCode(newCode string) Code
- func (s *Storage) WriteCurrencyDataToFile(path string, mainUpdate bool) error
- type SystemsSettings
- type Translations
- type Translator
Constants ¶
const ( Unset Role = 0 Fiat Role = 1 << (iota - 1) Cryptocurrency Token Contract Stable UnsetRoleString = "roleUnset" FiatCurrencyString = "fiatcurrency" CryptocurrencyString = "cryptocurrency" TokenString = "token" ContractString = "contract" StableString = "stablecurrency" )
Bitmasks const for currency roles
const ( UnderscoreDelimiter = "_" DashDelimiter = "-" ForwardSlashDelimiter = "/" ColonDelimiter = ":" )
Const here are packaged defined delimiters
const ( DefaultCurrencyFileDelay = 168 * time.Hour DefaultForeignExchangeDelay = 1 * time.Minute DefaultStorageFile = "currency.json" )
CurrencyFileUpdateDelay defines the rate at which the currency.json file is updated
Variables ¶
var ( // ErrCurrencyCodeEmpty defines an error if the currency code is empty ErrCurrencyCodeEmpty = errors.New("currency code is empty") // ErrCurrencyNotFound returned when a currency is not found in a list ErrCurrencyNotFound = errors.New("currency code not found in list") // ErrCurrencyPairEmpty defines an error if the currency pair is empty ErrCurrencyPairEmpty = errors.New("currency pair is empty") // ErrCurrencyNotSupported defines an error if the currency pair is not supported ErrCurrencyNotSupported = errors.New("currency not supported") // ErrCurrencyPairsEmpty returns when a currency.Pairs has len == 0 ErrCurrencyPairsEmpty = errors.New("currency pairs is empty") // EMPTYCODE is an empty currency code EMPTYCODE = Code{} // EMPTYPAIR is an empty currency pair EMPTYPAIR = Pair{} )
var ( BTC = NewCode("BTC") LTC = NewCode("LTC") ETH = NewCode("ETH") XRP = NewCode("XRP") BCH = NewCode("BCH") EOS = NewCode("EOS") XLM = NewCode("XLM") USDT = NewCode("USDT") USDC = NewCode("USDC") ADA = NewCode("ADA") XMR = NewCode("XMR") TRX = NewCode("TRX") MIOTA = NewCode("MIOTA") DASH = NewCode("DASH") BNB = NewCode("BNB") NEO = NewCode("NEO") ETC = NewCode("ETC") XEM = NewCode("XEM") XTZ = NewCode("XTZ") VET = NewCode("VET") DOGE = NewCode("DOGE") ZEC = NewCode("ZEC") OMG = NewCode("OMG") BTG = NewCode("BTG") MKR = NewCode("MKR") BCN = NewCode("BCN") ONT = NewCode("ONT") ZRX = NewCode("ZRX") LSK = NewCode("LSK") DCR = NewCode("DCR") QTUM = NewCode("QTUM") BCD = NewCode("BCD") BTS = NewCode("BTS") NANO = NewCode("NANO") ZIL = NewCode("ZIL") SC = NewCode("SC") DGB = NewCode("DGB") ICX = NewCode("ICX") STEEM = NewCode("STEEM") AE = NewCode("AE") XVG = NewCode("XVG") WAVES = NewCode("WAVES") NPXS = NewCode("NPXS") ETN = NewCode("ETN") BTM = NewCode("BTM") BAT = NewCode("BAT") ETP = NewCode("ETP") HOT = NewCode("HOT") STRAT = NewCode("STRAT") //nolint // Cryptocurrency code GNT = NewCode("GNT") REP = NewCode("REP") SNT = NewCode("SNT") PPT = NewCode("PPT") KMD = NewCode("KMD") TUSD = NewCode("TUSD") CNX = NewCode("CNX") LINK = NewCode("LINK") WTC = NewCode("WTC") ARDR = NewCode("ARDR") WAN = NewCode("WAN") MITH = NewCode("MITH") RDD = NewCode("RDD") IOST = NewCode("IOST") IOT = NewCode("IOT") KCS = NewCode("KCS") MAID = NewCode("MAID") XET = NewCode("XET") MOAC = NewCode("MOAC") HC = NewCode("HC") AION = NewCode("AION") AOA = NewCode("AOA") HT = NewCode("HT") ELF = NewCode("ELF") LRC = NewCode("LRC") BNT = NewCode("BNT") CMT = NewCode("CMT") DGD = NewCode("DGD") DCN = NewCode("DCN") FUN = NewCode("FUN") GXS = NewCode("GXS") DROP = NewCode("DROP") MANA = NewCode("MANA") APE = NewCode("APE") PAY = NewCode("PAY") MCO = NewCode("MCO") THETA = NewCode("THETA") NXT = NewCode("NXT") NOAH = NewCode("NOAH") LOOM = NewCode("LOOM") POWR = NewCode("POWR") WAX = NewCode("WAX") ELA = NewCode("ELA") PIVX = NewCode("PIVX") XIN = NewCode("XIN") DAI = NewCode("DAI") BTCP = NewCode("BTCP") NEXO = NewCode("NEXO") XBT = NewCode("XBT") SAN = NewCode("SAN") GAS = NewCode("GAS") BCC = NewCode("BCC") HCC = NewCode("HCC") OAX = NewCode("OAX") DNT = NewCode("DNT") ICN = NewCode("ICN") LLT = NewCode("LLT") YOYO = NewCode("YOYO") SNGLS = NewCode("SNGLS") BQX = NewCode("BQX") KNC = NewCode("KNC") SNM = NewCode("SNM") CTR = NewCode("CTR") SALT = NewCode("SALT") MDA = NewCode("MDA") IOTA = NewCode("IOTA") SUB = NewCode("SUB") MTL = NewCode("MTL") MTH = NewCode("MTH") ENG = NewCode("ENG") AST = NewCode("AST") CLN = NewCode("CLN") EDG = NewCode("EDG") FIRST = NewCode("1ST") GOLOS = NewCode("GOLOS") ANT = NewCode("ANT") GBG = NewCode("GBG") HMQ = NewCode("HMQ") INCNT = NewCode("INCNT") ACE = NewCode("ACE") ACT = NewCode("ACT") AAC = NewCode("AAC") AIDOC = NewCode("AIDOC") SOC = NewCode("SOC") ATL = NewCode("ATL") AVT = NewCode("AVT") BKX = NewCode("BKX") BEC = NewCode("BEC") VEE = NewCode("VEE") PTOY = NewCode("PTOY") CAG = NewCode("CAG") CIC = NewCode("CIC") CBT = NewCode("CBT") CAN = NewCode("CAN") DAT = NewCode("DAT") DNA = NewCode("DNA") INT = NewCode("INT") IPC = NewCode("IPC") ILA = NewCode("ILA") LIGHT = NewCode("LIGHT") MAG = NewCode("MAG") AMM = NewCode("AMM") MOF = NewCode("MOF") MGC = NewCode("MGC") OF = NewCode("OF") LA = NewCode("LA") LEV = NewCode("LEV") NGC = NewCode("NGC") OKB = NewCode("OKB") MOT = NewCode("MOT") PRA = NewCode("PRA") R = NewCode("R") SSC = NewCode("SSC") SHOW = NewCode("SHOW") SPF = NewCode("SPF") PF = NewCode("PF") SNC = NewCode("SNC") SWFTC = NewCode("SWFTC") TRA = NewCode("TRA") TOPC = NewCode("TOPC") TRIO = NewCode("TRIO") QVT = NewCode("QVT") UCT = NewCode("UCT") UKG = NewCode("UKG") UTK = NewCode("UTK") VIU = NewCode("VIU") WFEE = NewCode("WFEE") WRC = NewCode("WRC") UGC = NewCode("UGC") YEE = NewCode("YEE") YOYOW = NewCode("YOYOW") ZIP = NewCode("ZIP") READ = NewCode("READ") RCT = NewCode("RCT") REF = NewCode("REF") XUC = NewCode("XUC") FAIR = NewCode("FAIR") GSC = NewCode("GSC") HMC = NewCode("HMC") PLU = NewCode("PLU") PRO = NewCode("PRO") QRL = NewCode("QRL") REN = NewCode("REN") ROUND = NewCode("ROUND") SRN = NewCode("SRN") XID = NewCode("XID") SBD = NewCode("SBD") TAAS = NewCode("TAAS") TKN = NewCode("TKN") VEN = NewCode("VEN") VSL = NewCode("VSL") TRST = NewCode("TRST") XXX = NewCode("XXX") IND = NewCode("IND") LDC = NewCode("LDC") GUP = NewCode("GUP") MGO = NewCode("MGO") MYST = NewCode("MYST") NEU = NewCode("NEU") NET = NewCode("NET") BMC = NewCode("BMC") BCAP = NewCode("BCAP") TIME = NewCode("TIME") CFI = NewCode("CFI") EVX = NewCode("EVX") REQ = NewCode("REQ") VIB = NewCode("VIB") ARK = NewCode("ARK") MOD = NewCode("MOD") ENJ = NewCode("ENJ") PFC = NewCode("PFC") STORJ = NewCode("STORJ") RCN = NewCode("RCN") NULS = NewCode("NULS") RDN = NewCode("RDN") DLT = NewCode("DLT") AMB = NewCode("AMB") BCPT = NewCode("BCPT") ARN = NewCode("ARN") GVT = NewCode("GVT") CDT = NewCode("CDT") POE = NewCode("POE") QSP = NewCode("QSP") XZC = NewCode("XZC") TNT = NewCode("TNT") FUEL = NewCode("FUEL") ADX = NewCode("ADX") CND = NewCode("CND") LEND = NewCode("LEND") WABI = NewCode("WABI") SBTC = NewCode("SBTC") BCX = NewCode("BCX") TNB = NewCode("TNB") GTO = NewCode("GTO") OST = NewCode("OST") CVC = NewCode("CVC") DATA = NewCode("DATA") ETF = NewCode("ETF") BRD = NewCode("BRD") NEBL = NewCode("NEBL") VIBE = NewCode("VIBE") LUN = NewCode("LUN") CHAT = NewCode("CHAT") RLC = NewCode("RLC") INS = NewCode("INS") VIA = NewCode("VIA") BLZ = NewCode("BLZ") SYS = NewCode("SYS") NCASH = NewCode("NCASH") POA = NewCode("POA") STORM = NewCode("STORM") WPR = NewCode("WPR") QLC = NewCode("QLC") GRS = NewCode("GRS") CLOAK = NewCode("CLOAK") ZEN = NewCode("ZEN") SKY = NewCode("SKY") IOTX = NewCode("IOTX") QKC = NewCode("QKC") AGI = NewCode("AGI") NXS = NewCode("NXS") EON = NewCode("EON") KEY = NewCode("KEY") NAS = NewCode("NAS") ADD = NewCode("ADD") MEETONE = NewCode("MEETONE") ATD = NewCode("ATD") MFT = NewCode("MFT") EOP = NewCode("EOP") DENT = NewCode("DENT") IQ = NewCode("IQ") DOCK = NewCode("DOCK") POLY = NewCode("POLY") VTHO = NewCode("VTHO") ONG = NewCode("ONG") PHX = NewCode("PHX") GO = NewCode("GO") PAX = NewCode("PAX") PAXG = NewCode("PAXG") EDO = NewCode("EDO") WINGS = NewCode("WINGS") NAV = NewCode("NAV") TRIG = NewCode("TRIG") APPC = NewCode("APPC") KRW = NewCode("KRW") HSR = NewCode("HSR") ETHOS = NewCode("ETHOS") CTXC = NewCode("CTXC") ITC = NewCode("ITC") TRUE = NewCode("TRUE") ABT = NewCode("ABT") RNT = NewCode("RNT") PLY = NewCode("PLY") PST = NewCode("PST") KICK = NewCode("KICK") BTCZ = NewCode("BTCZ") DXT = NewCode("DXT") STQ = NewCode("STQ") INK = NewCode("INK") HBZ = NewCode("HBZ") USDT_ETH = NewCode("USDT_ETH") //nolint // Cryptocurrency code QTUM_ETH = NewCode("QTUM_ETH") //nolint // Cryptocurrency code BTM_ETH = NewCode("BTM_ETH") //nolint // Cryptocurrency code FIL = NewCode("FIL") STX = NewCode("STX") BOT = NewCode("BOT") VERI = NewCode("VERI") ZSC = NewCode("ZSC") QBT = NewCode("QBT") MED = NewCode("MED") QASH = NewCode("QASH") MDS = NewCode("MDS") GOD = NewCode("GOD") SMT = NewCode("SMT") BTF = NewCode("BTF") NAS_ETH = NewCode("NAS_ETH") //nolint // Cryptocurrency code TSL = NewCode("TSL") BIFI = NewCode("BIFI") BNTY = NewCode("BNTY") DRGN = NewCode("DRGN") GTC = NewCode("GTC") MDT = NewCode("MDT") QUN = NewCode("QUN") GNX = NewCode("GNX") DDD = NewCode("DDD") BTO = NewCode("BTO") TIO = NewCode("TIO") OCN = NewCode("OCN") RUFF = NewCode("RUFF") TNC = NewCode("TNC") SNET = NewCode("SNET") COFI = NewCode("COFI") ZPT = NewCode("ZPT") JNT = NewCode("JNT") MTN = NewCode("MTN") GEM = NewCode("GEM") DADI = NewCode("DADI") RFR = NewCode("RFR") MOBI = NewCode("MOBI") LEDU = NewCode("LEDU") DBC = NewCode("DBC") MKR_OLD = NewCode("MKR_OLD") //nolint // Cryptocurrency code DPY = NewCode("DPY") BCDN = NewCode("BCDN") EOSDAC = NewCode("EOSDAC") TIPS = NewCode("TIPS") XMC = NewCode("XMC") PPS = NewCode("PPS") BOE = NewCode("BOE") MEDX = NewCode("MEDX") SMT_ETH = NewCode("SMT_ETH") //nolint // Cryptocurrency code CS = NewCode("CS") MAN = NewCode("MAN") REM = NewCode("REM") LYM = NewCode("LYM") INSTAR = NewCode("INSTAR") BFT = NewCode("BFT") IHT = NewCode("IHT") SENC = NewCode("SENC") TOMO = NewCode("TOMO") ELEC = NewCode("ELEC") SHIP = NewCode("SHIP") TFD = NewCode("TFD") HAV = NewCode("HAV") HUR = NewCode("HUR") LST = NewCode("LST") LINO = NewCode("LINO") SWTH = NewCode("SWTH") NKN = NewCode("NKN") SOUL = NewCode("SOUL") GALA_NEO = NewCode("GALA_NEO") //nolint // Cryptocurrency code LRN = NewCode("LRN") GSE = NewCode("GSE") RATING = NewCode("RATING") HSC = NewCode("HSC") HIT = NewCode("HIT") DX = NewCode("DX") BXC = NewCode("BXC") GARD = NewCode("GARD") FTI = NewCode("FTI") SOP = NewCode("SOP") LEMO = NewCode("LEMO") RED = NewCode("RED") LBA = NewCode("LBA") KAN = NewCode("KAN") OPEN = NewCode("OPEN") SKM = NewCode("SKM") NBAI = NewCode("NBAI") UPP = NewCode("UPP") ATMI = NewCode("ATMI") TMT = NewCode("TMT") BBK = NewCode("BBK") EDR = NewCode("EDR") MET = NewCode("MET") TCT = NewCode("TCT") EXC = NewCode("EXC") CNC = NewCode("CNC") TIX = NewCode("TIX") XTC = NewCode("XTC") BU = NewCode("BU") GNO = NewCode("GNO") MLN = NewCode("MLN") XBC = NewCode("XBC") BTCD = NewCode("BTCD") BURST = NewCode("BURST") CLAM = NewCode("CLAM") XCP = NewCode("XCP") EMC2 = NewCode("EMC2") EXP = NewCode("EXP") FCT = NewCode("FCT") GAME = NewCode("GAME") GRC = NewCode("GRC") HUC = NewCode("HUC") LBC = NewCode("LBC") NMC = NewCode("NMC") NEOS = NewCode("NEOS") OMNI = NewCode("OMNI") PASC = NewCode("PASC") PPC = NewCode("PPC") DSH = NewCode("DSH") GML = NewCode("GML") GSY = NewCode("GSY") POT = NewCode("POT") XPM = NewCode("XPM") AMP = NewCode("AMP") VRC = NewCode("VRC") VTC = NewCode("VTC") ZERO07 = NewCode("007") BIT16 = NewCode("BIT16") TWO015 = NewCode("2015") TWO56 = NewCode("256") TWOBACCO = NewCode("2BACCO") TWOGIVE = NewCode("2GIVE") THIRTY2BIT = NewCode("32BIT") THREE65 = NewCode("365") FOUR04 = NewCode("404") SEVEN00 = NewCode("700") EIGHTBIT = NewCode("8BIT") ACLR = NewCode("ACLR") ACES = NewCode("ACES") ACPR = NewCode("ACPR") ACID = NewCode("ACID") ACOIN = NewCode("ACOIN") ACRN = NewCode("ACRN") ADAM = NewCode("ADAM") ADT = NewCode("ADT") AIB = NewCode("AIB") ADZ = NewCode("ADZ") AECC = NewCode("AECC") AM = NewCode("AM") AGRI = NewCode("AGRI") AGT = NewCode("AGT") AIR = NewCode("AIR") ALEX = NewCode("ALEX") AUM = NewCode("AUM") ALIEN = NewCode("ALIEN") ALIS = NewCode("ALIS") ALL = NewCode("ALL") ASAFE = NewCode("ASAFE") AMBER = NewCode("AMBER") AMS = NewCode("AMS") ANAL = NewCode("ANAL") ACP = NewCode("ACP") ANI = NewCode("ANI") ANTI = NewCode("ANTI") ALTC = NewCode("ALTC") APT = NewCode("APT") ARCO = NewCode("ARCO") ALC = NewCode("ALC") ARB = NewCode("ARB") ARCT = NewCode("ARCT") ARCX = NewCode("ARCX") ARGUS = NewCode("ARGUS") ARH = NewCode("ARH") ARM = NewCode("ARM") ARNA = NewCode("ARNA") ARPA = NewCode("ARPA") ARTA = NewCode("ARTA") ABY = NewCode("ABY") ARTC = NewCode("ARTC") AL = NewCode("AL") ASN = NewCode("ASN") ADCN = NewCode("ADCN") ATB = NewCode("ATB") ATM = NewCode("ATM") ATMCHA = NewCode("ATMCHA") ATOM = NewCode("ATOM") ADC = NewCode("ADC") ARE = NewCode("ARE") AUR = NewCode("AUR") AV = NewCode("AV") AXIOM = NewCode("AXIOM") B2B = NewCode("B2B") B2 = NewCode("B2") B3 = NewCode("B3") BAB = NewCode("BAB") BAN = NewCode("BAN") BamitCoin = NewCode("BamitCoin") NANAS = NewCode("NANAS") BBCC = NewCode("BBCC") BTA = NewCode("BTA") BSTK = NewCode("BSTK") BATL = NewCode("BATL") BBH = NewCode("BBH") BITB = NewCode("BITB") BRDD = NewCode("BRDD") XBTS = NewCode("XBTS") BVC = NewCode("BVC") CHATX = NewCode("CHATX") BEEP = NewCode("BEEP") BEEZ = NewCode("BEEZ") BENJI = NewCode("BENJI") BERN = NewCode("BERN") PROFIT = NewCode("PROFIT") BEST = NewCode("BEST") BGF = NewCode("BGF") BIGUP = NewCode("BIGUP") BLRY = NewCode("BLRY") BILL = NewCode("BILL") BIOB = NewCode("BIOB") BIO = NewCode("BIO") BIOS = NewCode("BIOS") BPTN = NewCode("BPTN") BTCA = NewCode("BTCA") BA = NewCode("BA") BAC = NewCode("BAC") BBT = NewCode("BBT") BOSS = NewCode("BOSS") BRONZ = NewCode("BRONZ") CAT = NewCode("CAT") BTD = NewCode("BTD") XBTC21 = NewCode("XBTC21") BCA = NewCode("BCA") BCP = NewCode("BCP") BTDOLL = NewCode("BTDOLL") LIZA = NewCode("LIZA") BTCRED = NewCode("BTCRED") BTCS = NewCode("BTCS") BTU = NewCode("BTU") BUM = NewCode("BUM") LITE = NewCode("LITE") BCM = NewCode("BCM") BCS = NewCode("BCS") BTCU = NewCode("BTCU") BM = NewCode("BM") BTCRY = NewCode("BTCRY") BTCR = NewCode("BTCR") HIRE = NewCode("HIRE") STU = NewCode("STU") BITOK = NewCode("BITOK") BITON = NewCode("BITON") BPC = NewCode("BPC") BPOK = NewCode("BPOK") BTP = NewCode("BTP") BITCNY = NewCode("bitCNY") RNTB = NewCode("RNTB") BSH = NewCode("BSH") XBS = NewCode("XBS") BITS = NewCode("BITS") BST = NewCode("BST") BXT = NewCode("BXT") VEG = NewCode("VEG") VOLT = NewCode("VOLT") BTV = NewCode("BTV") BITZ = NewCode("BITZ") BTZ = NewCode("BTZ") BHC = NewCode("BHC") BDC = NewCode("BDC") JACK = NewCode("JACK") BS = NewCode("BS") BSTAR = NewCode("BSTAR") BLAZR = NewCode("BLAZR") BOD = NewCode("BOD") BLUE = NewCode("BLUE") BLU = NewCode("BLU") BLUS = NewCode("BLUS") BMT = NewCode("BMT") BOLI = NewCode("BOLI") BOMB = NewCode("BOMB") BON = NewCode("BON") BOOM = NewCode("BOOM") BOSON = NewCode("BOSON") BSC = NewCode("BSC") BRH = NewCode("BRH") BRAIN = NewCode("BRAIN") BRE = NewCode("BRE") BTCM = NewCode("BTCM") BTCO = NewCode("BTCO") TALK = NewCode("TALK") BUB = NewCode("BUB") BUY = NewCode("BUY") BUZZ = NewCode("BUZZ") BTH = NewCode("BTH") C0C0 = NewCode("C0C0") CAB = NewCode("CAB") CF = NewCode("CF") CLO = NewCode("CLO") CAM = NewCode("CAM") CD = NewCode("CD") CANN = NewCode("CANN") CNNC = NewCode("CNNC") CPC = NewCode("CPC") CST = NewCode("CST") CAPT = NewCode("CAPT") CARBON = NewCode("CARBON") CME = NewCode("CME") CTK = NewCode("CTK") CBD = NewCode("CBD") CCC = NewCode("CCC") CNT = NewCode("CNT") XCE = NewCode("XCE") CHRG = NewCode("CHRG") CHEMX = NewCode("CHEMX") CHESS = NewCode("CHESS") CKS = NewCode("CKS") CHILL = NewCode("CHILL") CHIP = NewCode("CHIP") CHOOF = NewCode("CHOOF") CRX = NewCode("CRX") CIN = NewCode("CIN") POLL = NewCode("POLL") CLICK = NewCode("CLICK") CLINT = NewCode("CLINT") CLUB = NewCode("CLUB") CLUD = NewCode("CLUD") COX = NewCode("COX") COXST = NewCode("COXST") CFC = NewCode("CFC") CTIC2 = NewCode("CTIC2") COIN = NewCode("COIN") BTTF = NewCode("BTTF") C2 = NewCode("C2") CAID = NewCode("CAID") CL = NewCode("CL") CTIC = NewCode("CTIC") CXT = NewCode("CXT") CHP = NewCode("CHP") CV2 = NewCode("CV2") COC = NewCode("COC") COMP = NewCode("COMP") CMS = NewCode("CMS") CONX = NewCode("CONX") CCX = NewCode("CCX") CLR = NewCode("CLR") CORAL = NewCode("CORAL") CORG = NewCode("CORG") CSMIC = NewCode("CSMIC") CMC = NewCode("CMC") COV = NewCode("COV") COVX = NewCode("COVX") CRAB = NewCode("CRAB") CRAFT = NewCode("CRAFT") CRNK = NewCode("CRNK") CRAVE = NewCode("CRAVE") CRM = NewCode("CRM") XCRE = NewCode("XCRE") CREDIT = NewCode("CREDIT") CREVA = NewCode("CREVA") CRIME = NewCode("CRIME") CROC = NewCode("CROC") CRC = NewCode("CRC") CRW = NewCode("CRW") CRY = NewCode("CRY") CBX = NewCode("CBX") TKTX = NewCode("TKTX") CB = NewCode("CB") CIRC = NewCode("CIRC") CCB = NewCode("CCB") CDO = NewCode("CDO") CG = NewCode("CG") CJ = NewCode("CJ") CJC = NewCode("CJC") CYT = NewCode("CYT") CRPS = NewCode("CRPS") PING = NewCode("PING") CWXT = NewCode("CWXT") CCT = NewCode("CCT") CTL = NewCode("CTL") CURVES = NewCode("CURVES") CC = NewCode("CC") CYC = NewCode("CYC") CYG = NewCode("CYG") CYP = NewCode("CYP") FUNK = NewCode("FUNK") CZECO = NewCode("CZECO") DALC = NewCode("DALC") DLISK = NewCode("DLISK") MOOND = NewCode("MOOND") DB = NewCode("DB") DCC = NewCode("DCC") DCYP = NewCode("DCYP") DETH = NewCode("DETH") DKC = NewCode("DKC") DISK = NewCode("DISK") DRKT = NewCode("DRKT") DTT = NewCode("DTT") DASHS = NewCode("DASHS") DBTC = NewCode("DBTC") DCT = NewCode("DCT") DBET = NewCode("DBET") DEC = NewCode("DEC") DECR = NewCode("DECR") DEA = NewCode("DEA") DPAY = NewCode("DPAY") DCRE = NewCode("DCRE") DC = NewCode("DC") DES = NewCode("DES") DEM = NewCode("DEM") DXC = NewCode("DXC") DCK = NewCode("DCK") CUBE = NewCode("CUBE") DGMS = NewCode("DGMS") DBG = NewCode("DBG") DGCS = NewCode("DGCS") DBLK = NewCode("DBLK") DIME = NewCode("DIME") DIRT = NewCode("DIRT") DVD = NewCode("DVD") DMT = NewCode("DMT") NOTE = NewCode("NOTE") DGORE = NewCode("DGORE") DLC = NewCode("DLC") DRT = NewCode("DRT") DOTA = NewCode("DOTA") DOX = NewCode("DOX") DRA = NewCode("DRA") DFT = NewCode("DFT") XDB = NewCode("XDB") DRM = NewCode("DRM") DRZ = NewCode("DRZ") DRACO = NewCode("DRACO") DBIC = NewCode("DBIC") DUB = NewCode("DUB") GUM = NewCode("GUM") DUR = NewCode("DUR") DUST = NewCode("DUST") DUX = NewCode("DUX") DXO = NewCode("DXO") ECN = NewCode("ECN") EDR2 = NewCode("EDR2") EA = NewCode("EA") EAGS = NewCode("EAGS") EMT = NewCode("EMT") EBONUS = NewCode("EBONUS") ECCHI = NewCode("ECCHI") EKO = NewCode("EKO") ECLI = NewCode("ECLI") ECOB = NewCode("ECOB") ECO = NewCode("ECO") EDIT = NewCode("EDIT") EDRC = NewCode("EDRC") EDC = NewCode("EDC") EGAME = NewCode("EGAME") EGG = NewCode("EGG") EGO = NewCode("EGO") ELC = NewCode("ELC") ELCO = NewCode("ELCO") ECA = NewCode("ECA") EPC = NewCode("EPC") ELE = NewCode("ELE") ONE337 = NewCode("1337") EMB = NewCode("EMB") EMC = NewCode("EMC") EPY = NewCode("EPY") EMPC = NewCode("EMPC") EMP = NewCode("EMP") ENE = NewCode("ENE") EET = NewCode("EET") XNG = NewCode("XNG") EGMA = NewCode("EGMA") ENTER = NewCode("ENTER") ETRUST = NewCode("ETRUST") EQL = NewCode("EQL") EQM = NewCode("EQM") EQT = NewCode("EQT") ERR = NewCode("ERR") ESC = NewCode("ESC") ESP = NewCode("ESP") ENT = NewCode("ENT") ETCO = NewCode("ETCO") DOGETH = NewCode("DOGETH") ECASH = NewCode("ECASH") ELITE = NewCode("ELITE") ETHS = NewCode("ETHS") ETL = NewCode("ETL") ETZ = NewCode("ETZ") EUC = NewCode("EUC") EURC = NewCode("EURC") EUROPE = NewCode("EUROPE") EVA = NewCode("EVA") EGC = NewCode("EGC") EOC = NewCode("EOC") EVIL = NewCode("EVIL") EVO = NewCode("EVO") EXB = NewCode("EXB") EXIT = NewCode("EXIT") XT = NewCode("XT") F16 = NewCode("F16") FADE = NewCode("FADE") FAZZ = NewCode("FAZZ") FX = NewCode("FX") FIDEL = NewCode("FIDEL") FIDGT = NewCode("FIDGT") FIND = NewCode("FIND") FPC = NewCode("FPC") FIRE = NewCode("FIRE") FFC = NewCode("FFC") FRST = NewCode("FRST") FIST = NewCode("FIST") FIT = NewCode("FIT") FLX = NewCode("FLX") FLVR = NewCode("FLVR") FLY = NewCode("FLY") FONZ = NewCode("FONZ") XFCX = NewCode("XFCX") FOREX = NewCode("FOREX") FRN = NewCode("FRN") FRK = NewCode("FRK") FRWC = NewCode("FRWC") FGZ = NewCode("FGZ") FRE = NewCode("FRE") FRDC = NewCode("FRDC") FJC = NewCode("FJC") FURY = NewCode("FURY") FSN = NewCode("FSN") FCASH = NewCode("FCASH") FTO = NewCode("FTO") FUZZ = NewCode("FUZZ") GAKH = NewCode("GAKH") GBT = NewCode("GBT") UNITS = NewCode("UNITS") FOUR20G = NewCode("420G") GENIUS = NewCode("GENIUS") GEN = NewCode("GEN") GEO = NewCode("GEO") GER = NewCode("GER") GSR = NewCode("GSR") SPKTR = NewCode("SPKTR") GIFT = NewCode("GIFT") WTT = NewCode("WTT") GHS = NewCode("GHS") GIG = NewCode("GIG") GOT = NewCode("GOT") XGTC = NewCode("XGTC") GIZ = NewCode("GIZ") GLO = NewCode("GLO") GCR = NewCode("GCR") BSTY = NewCode("BSTY") GLC = NewCode("GLC") GSX = NewCode("GSX") GOAT = NewCode("GOAT") GB = NewCode("GB") GFL = NewCode("GFL") MNTP = NewCode("MNTP") GP = NewCode("GP") GLUCK = NewCode("GLUCK") GOON = NewCode("GOON") GTFO = NewCode("GTFO") GOTX = NewCode("GOTX") GPU = NewCode("GPU") GRF = NewCode("GRF") GRAM = NewCode("GRAM") GRAV = NewCode("GRAV") GBIT = NewCode("GBIT") GREED = NewCode("GREED") GE = NewCode("GE") GREENF = NewCode("GREENF") GRE = NewCode("GRE") GREXIT = NewCode("GREXIT") GMCX = NewCode("GMCX") GROW = NewCode("GROW") GSM = NewCode("GSM") GT = NewCode("GT") NLG = NewCode("NLG") HKN = NewCode("HKN") HAC = NewCode("HAC") HALLO = NewCode("HALLO") HAMS = NewCode("HAMS") HPC = NewCode("HPC") HAWK = NewCode("HAWK") HAZE = NewCode("HAZE") HZT = NewCode("HZT") HDG = NewCode("HDG") HEDG = NewCode("HEDG") HEEL = NewCode("HEEL") HMP = NewCode("HMP") PLAY = NewCode("PLAY") HXX = NewCode("HXX") XHI = NewCode("XHI") HVCO = NewCode("HVCO") HTC = NewCode("HTC") MINH = NewCode("MINH") HODL = NewCode("HODL") HON = NewCode("HON") HOPE = NewCode("HOPE") HQX = NewCode("HQX") HSP = NewCode("HSP") HTML5 = NewCode("HTML5") HYPERX = NewCode("HYPERX") HPS = NewCode("HPS") IOC = NewCode("IOC") IBANK = NewCode("IBANK") IBITS = NewCode("IBITS") ICASH = NewCode("ICASH") ICOB = NewCode("ICOB") ICON = NewCode("ICON") IETH = NewCode("IETH") ILM = NewCode("ILM") IMPS = NewCode("IMPS") NKA = NewCode("NKA") INCP = NewCode("INCP") IN = NewCode("IN") INC = NewCode("INC") OneINCH = NewCode("1INCH") FLR = NewCode("FLR") IMS = NewCode("IMS") IFLT = NewCode("IFLT") INFX = NewCode("INFX") INGT = NewCode("INGT") INPAY = NewCode("INPAY") INSANE = NewCode("INSANE") INXT = NewCode("INXT") IFT = NewCode("IFT") INV = NewCode("INV") IVZ = NewCode("IVZ") ILT = NewCode("ILT") IONX = NewCode("IONX") ISL = NewCode("ISL") ITI = NewCode("ITI") ING = NewCode("ING") IEC = NewCode("IEC") IW = NewCode("IW") IXC = NewCode("IXC") IXT = NewCode("IXT") JPC = NewCode("JPC") JANE = NewCode("JANE") JWL = NewCode("JWL") JIF = NewCode("JIF") JOBS = NewCode("JOBS") JOCKER = NewCode("JOCKER") JW = NewCode("JW") JOK = NewCode("JOK") XJO = NewCode("XJO") KGB = NewCode("KGB") KARMC = NewCode("KARMC") KARMA = NewCode("KARMA") KASHH = NewCode("KASHH") KAT = NewCode("KAT") KC = NewCode("KC") KIDS = NewCode("KIDS") KIN = NewCode("KIN") KISS = NewCode("KISS") KOBO = NewCode("KOBO") TP1 = NewCode("TP1") KRAK = NewCode("KRAK") KGC = NewCode("KGC") KTK = NewCode("KTK") KR = NewCode("KR") KUBO = NewCode("KUBO") KURT = NewCode("KURT") KUSH = NewCode("KUSH") LANA = NewCode("LANA") LTH = NewCode("LTH") LAZ = NewCode("LAZ") LEA = NewCode("LEA") LEAF = NewCode("LEAF") LENIN = NewCode("LENIN") LEPEN = NewCode("LEPEN") LIR = NewCode("LIR") LVG = NewCode("LVG") LGBTQ = NewCode("LGBTQ") LHC = NewCode("LHC") EXT = NewCode("EXT") LBTC = NewCode("LBTC") LSD = NewCode("LSD") LIMX = NewCode("LIMX") LTD = NewCode("LTD") LINDA = NewCode("LINDA") LKC = NewCode("LKC") LBTCX = NewCode("LBTCX") LCC = NewCode("LCC") LTCU = NewCode("LTCU") LTCR = NewCode("LTCR") LDOGE = NewCode("LDOGE") LTS = NewCode("LTS") LIV = NewCode("LIV") LIZI = NewCode("LIZI") LOC = NewCode("LOC") LOCX = NewCode("LOCX") LOOK = NewCode("LOOK") LOOT = NewCode("LOOT") XLTCG = NewCode("XLTCG") BASH = NewCode("BASH") LUCKY = NewCode("LUCKY") L7S = NewCode("L7S") LDM = NewCode("LDM") LUMI = NewCode("LUMI") LUNA = NewCode("LUNA") LC = NewCode("LC") LUX = NewCode("LUX") MCRN = NewCode("MCRN") XMG = NewCode("XMG") MMXIV = NewCode("MMXIV") MAT = NewCode("MAT") MAO = NewCode("MAO") MAPC = NewCode("MAPC") MRB = NewCode("MRB") MXT = NewCode("MXT") MARV = NewCode("MARV") MARX = NewCode("MARX") MCAR = NewCode("MCAR") MM = NewCode("MM") MVC = NewCode("MVC") MAVRO = NewCode("MAVRO") MAX = NewCode("MAX") MAZE = NewCode("MAZE") MBIT = NewCode("MBIT") MCOIN = NewCode("MCOIN") MPRO = NewCode("MPRO") XMS = NewCode("XMS") MLITE = NewCode("MLITE") MLNC = NewCode("MLNC") MENTAL = NewCode("MENTAL") MERGEC = NewCode("MERGEC") MTLMC3 = NewCode("MTLMC3") METAL = NewCode("METAL") MUU = NewCode("MUU") MILO = NewCode("MILO") MND = NewCode("MND") XMINE = NewCode("XMINE") MNM = NewCode("MNM") XNM = NewCode("XNM") MIRO = NewCode("MIRO") MIS = NewCode("MIS") MMXVI = NewCode("MMXVI") MOIN = NewCode("MOIN") MOJO = NewCode("MOJO") TAB = NewCode("TAB") MONETA = NewCode("MONETA") MUE = NewCode("MUE") MONEY = NewCode("MONEY") MRP = NewCode("MRP") MOTO = NewCode("MOTO") MULTI = NewCode("MULTI") MST = NewCode("MST") MVR = NewCode("MVR") MYSTIC = NewCode("MYSTIC") WISH = NewCode("WISH") NKT = NewCode("NKT") NAT = NewCode("NAT") ENAU = NewCode("ENAU") NEBU = NewCode("NEBU") NEF = NewCode("NEF") NBIT = NewCode("NBIT") NETKO = NewCode("NETKO") NTM = NewCode("NTM") NETC = NewCode("NETC") NRC = NewCode("NRC") NTK = NewCode("NTK") NTRN = NewCode("NTRN") NEVA = NewCode("NEVA") NIC = NewCode("NIC") NKC = NewCode("NKC") NYC = NewCode("NYC") NZC = NewCode("NZC") NICE = NewCode("NICE") NDOGE = NewCode("NDOGE") XTR = NewCode("XTR") N2O = NewCode("N2O") NIXON = NewCode("NIXON") NOC = NewCode("NOC") NODC = NewCode("NODC") NODES = NewCode("NODES") NODX = NewCode("NODX") NLC = NewCode("NLC") NLC2 = NewCode("NLC2") NOO = NewCode("NOO") NVC = NewCode("NVC") NPC = NewCode("NPC") NUBIS = NewCode("NUBIS") NUKE = NewCode("NUKE") N7 = NewCode("N7") NUM = NewCode("NUM") NMR = NewCode("NMR") NXE = NewCode("NXE") OBS = NewCode("OBS") OCEAN = NewCode("OCEAN") OCOW = NewCode("OCOW") EIGHT88 = NewCode("888") OCC = NewCode("OCC") OK = NewCode("OK") ODNT = NewCode("ODNT") FLAV = NewCode("FLAV") OLIT = NewCode("OLIT") OLYMP = NewCode("OLYMP") OMA = NewCode("OMA") OMC = NewCode("OMC") ONEK = NewCode("ONEK") ONX = NewCode("ONX") XPO = NewCode("XPO") OPAL = NewCode("OPAL") OTN = NewCode("OTN") OP = NewCode("OP") OPES = NewCode("OPES") OPTION = NewCode("OPTION") ORLY = NewCode("ORLY") OS76 = NewCode("OS76") OZC = NewCode("OZC") P7C = NewCode("P7C") PAC = NewCode("PAC") PAK = NewCode("PAK") PAL = NewCode("PAL") PND = NewCode("PND") PINKX = NewCode("PINKX") POPPY = NewCode("POPPY") DUO = NewCode("DUO") PARA = NewCode("PARA") PKB = NewCode("PKB") GENE = NewCode("GENE") PARTY = NewCode("PARTY") PYN = NewCode("PYN") XPY = NewCode("XPY") CON = NewCode("CON") PAYP = NewCode("PAYP") GUESS = NewCode("GUESS") PEN = NewCode("PEN") PTA = NewCode("PTA") PEO = NewCode("PEO") PSB = NewCode("PSB") XPD = NewCode("XPD") PXL = NewCode("PXL") PHR = NewCode("PHR") PIE = NewCode("PIE") PIO = NewCode("PIO") PIPR = NewCode("PIPR") SKULL = NewCode("SKULL") PLANET = NewCode("PLANET") PNC = NewCode("PNC") XPTX = NewCode("XPTX") PLNC = NewCode("PLNC") XPS = NewCode("XPS") POKE = NewCode("POKE") PLBT = NewCode("PLBT") POM = NewCode("POM") PONZ2 = NewCode("PONZ2") PONZI = NewCode("PONZI") XSP = NewCode("XSP") XPC = NewCode("XPC") PEX = NewCode("PEX") TRON = NewCode("TRON") POST = NewCode("POST") POSW = NewCode("POSW") PWR = NewCode("PWR") POWER = NewCode("POWER") PRE = NewCode("PRE") PRS = NewCode("PRS") PXI = NewCode("PXI") PEXT = NewCode("PEXT") PRIMU = NewCode("PRIMU") PRX = NewCode("PRX") PRM = NewCode("PRM") PRIX = NewCode("PRIX") XPRO = NewCode("XPRO") PCM = NewCode("PCM") PROC = NewCode("PROC") NANOX = NewCode("NANOX") VRP = NewCode("VRP") PTY = NewCode("PTY") PSI = NewCode("PSI") PSY = NewCode("PSY") PULSE = NewCode("PULSE") PUPA = NewCode("PUPA") PURE = NewCode("PURE") VIDZ = NewCode("VIDZ") PUTIN = NewCode("PUTIN") PX = NewCode("PX") QTM = NewCode("QTM") QTZ = NewCode("QTZ") QBC = NewCode("QBC") XQN = NewCode("XQN") RBBT = NewCode("RBBT") RAC = NewCode("RAC") RADI = NewCode("RADI") RAD = NewCode("RAD") RAI = NewCode("RAI") XRA = NewCode("XRA") RATIO = NewCode("RATIO") REA = NewCode("REA") RCX = NewCode("RCX") REE = NewCode("REE") REC = NewCode("REC") RMS = NewCode("RMS") RBIT = NewCode("RBIT") RNC = NewCode("RNC") REV = NewCode("REV") RH = NewCode("RH") XRL = NewCode("XRL") RICE = NewCode("RICE") RICHX = NewCode("RICHX") RID = NewCode("RID") RIDE = NewCode("RIDE") RBT = NewCode("RBT") RING = NewCode("RING") RIO = NewCode("RIO") RISE = NewCode("RISE") ROCKET = NewCode("ROCKET") RPC = NewCode("RPC") ROS = NewCode("ROS") ROYAL = NewCode("ROYAL") RSGP = NewCode("RSGP") RBIES = NewCode("RBIES") RUBIT = NewCode("RUBIT") RBY = NewCode("RBY") RUC = NewCode("RUC") RUPX = NewCode("RUPX") RUP = NewCode("RUP") RUST = NewCode("RUST") SFE = NewCode("SFE") SLS = NewCode("SLS") SMSR = NewCode("SMSR") RONIN = NewCode("RONIN") STV = NewCode("STV") HIFUN = NewCode("HIFUN") MAD = NewCode("MAD") SANDG = NewCode("SANDG") STO = NewCode("STO") SCAN = NewCode("SCAN") SCITW = NewCode("SCITW") SCRPT = NewCode("SCRPT") SCRT = NewCode("SCRT") SED = NewCode("SED") SEEDS = NewCode("SEEDS") B2X = NewCode("B2X") SEL = NewCode("SEL") SLFI = NewCode("SLFI") SMBR = NewCode("SMBR") SEN = NewCode("SEN") SENT = NewCode("SENT") SRNT = NewCode("SRNT") SEV = NewCode("SEV") SP = NewCode("SP") SXC = NewCode("SXC") GELD = NewCode("GELD") SHDW = NewCode("SHDW") SDC = NewCode("SDC") SAK = NewCode("SAK") SHRP = NewCode("SHRP") SHELL = NewCode("SHELL") SH = NewCode("SH") SHORTY = NewCode("SHORTY") SHREK = NewCode("SHREK") SHRM = NewCode("SHRM") SIB = NewCode("SIB") SIGT = NewCode("SIGT") SLCO = NewCode("SLCO") SIGU = NewCode("SIGU") SIX = NewCode("SIX") SJW = NewCode("SJW") SKB = NewCode("SKB") SW = NewCode("SW") SLEEP = NewCode("SLEEP") SLING = NewCode("SLING") SMART = NewCode("SMART") SMC = NewCode("SMC") SMF = NewCode("SMF") SOCC = NewCode("SOCC") SCL = NewCode("SCL") SDAO = NewCode("SDAO") SOLAR = NewCode("SOLAR") SOLO = NewCode("SOLO") SCT = NewCode("SCT") SONG = NewCode("SONG") ALTCOM = NewCode("ALTCOM") SPHTX = NewCode("SPHTX") SPC = NewCode("SPC") SPACE = NewCode("SPACE") SBT = NewCode("SBT") SPEC = NewCode("SPEC") SPX = NewCode("SPX") SCS = NewCode("SCS") SPORT = NewCode("SPORT") SPT = NewCode("SPT") SPR = NewCode("SPR") SPEX = NewCode("SPEX") SQL = NewCode("SQL") SBIT = NewCode("SBIT") STHR = NewCode("STHR") STALIN = NewCode("STALIN") STAR = NewCode("STAR") STA = NewCode("STA") START = NewCode("START") STP = NewCode("STP") PNK = NewCode("PNK") STEPS = NewCode("STEPS") STK = NewCode("STK") STONK = NewCode("STONK") STS = NewCode("STS") STRP = NewCode("STRP") STY = NewCode("STY") XMT = NewCode("XMT") SSTC = NewCode("SSTC") SUPER = NewCode("SUPER") SRND = NewCode("SRND") STRB = NewCode("STRB") M1 = NewCode("M1") SPM = NewCode("SPM") BUCKS = NewCode("BUCKS") TOKEN = NewCode("TOKEN") SWT = NewCode("SWT") SWEET = NewCode("SWEET") SWING = NewCode("SWING") CHSB = NewCode("CHSB") SIC = NewCode("SIC") SDP = NewCode("SDP") XSY = NewCode("XSY") SYNX = NewCode("SYNX") SNRG = NewCode("SNRG") TAG = NewCode("TAG") TAGR = NewCode("TAGR") TAJ = NewCode("TAJ") TAK = NewCode("TAK") TAKE = NewCode("TAKE") TAM = NewCode("TAM") XTO = NewCode("XTO") TAP = NewCode("TAP") TLE = NewCode("TLE") TSE = NewCode("TSE") TLEX = NewCode("TLEX") TAXI = NewCode("TAXI") TCN = NewCode("TCN") TDFB = NewCode("TDFB") TEAM = NewCode("TEAM") TECH = NewCode("TECH") TEC = NewCode("TEC") TEK = NewCode("TEK") TB = NewCode("TB") TLX = NewCode("TLX") TELL = NewCode("TELL") TENNET = NewCode("TENNET") TES = NewCode("TES") TGS = NewCode("TGS") XVE = NewCode("XVE") TCR = NewCode("TCR") GCC = NewCode("GCC") MAY = NewCode("MAY") THOM = NewCode("THOM") TIA = NewCode("TIA") TIDE = NewCode("TIDE") TIE = NewCode("TIE") TIT = NewCode("TIT") TTC = NewCode("TTC") TODAY = NewCode("TODAY") TBX = NewCode("TBX") TDS = NewCode("TDS") TLOSH = NewCode("TLOSH") TOKC = NewCode("TOKC") TMRW = NewCode("TMRW") TOOL = NewCode("TOOL") TCX = NewCode("TCX") TOT = NewCode("TOT") TX = NewCode("TX") TRANSF = NewCode("TRANSF") TRAP = NewCode("TRAP") TBCX = NewCode("TBCX") TRICK = NewCode("TRICK") TPG = NewCode("TPG") TFL = NewCode("TFL") TRUMP = NewCode("TRUMP") TNG = NewCode("TNG") TUR = NewCode("TUR") TWERK = NewCode("TWERK") TWIST = NewCode("TWIST") TWO = NewCode("TWO") UCASH = NewCode("UCASH") UAE = NewCode("UAE") XBU = NewCode("XBU") UBQ = NewCode("UBQ") U = NewCode("U") UDOWN = NewCode("UDOWN") GAIN = NewCode("GAIN") USC = NewCode("USC") UMC = NewCode("UMC") UNF = NewCode("UNF") UNIFY = NewCode("UNIFY") USDE = NewCode("USDE") UBTC = NewCode("UBTC") UIS = NewCode("UIS") UNIT = NewCode("UNIT") UNI = NewCode("UNI") UXC = NewCode("UXC") URC = NewCode("URC") XUP = NewCode("XUP") UFR = NewCode("UFR") URO = NewCode("URO") UTLE = NewCode("UTLE") VAL = NewCode("VAL") VPRC = NewCode("VPRC") VAPOR = NewCode("VAPOR") VCOIN = NewCode("VCOIN") VEC = NewCode("VEC") VEC2 = NewCode("VEC2") VLT = NewCode("VLT") VENE = NewCode("VENE") VNTX = NewCode("VNTX") VTN = NewCode("VTN") CRED = NewCode("CRED") VERS = NewCode("VERS") VTX = NewCode("VTX") VTY = NewCode("VTY") VIP = NewCode("VIP") VISIO = NewCode("VISIO") VK = NewCode("VK") VOL = NewCode("VOL") VOYA = NewCode("VOYA") VPN = NewCode("VPN") XVS = NewCode("XVS") VTL = NewCode("VTL") VULC = NewCode("VULC") VVI = NewCode("VVI") WGR = NewCode("WGR") WAM = NewCode("WAM") WARP = NewCode("WARP") WASH = NewCode("WASH") WGO = NewCode("WGO") WAY = NewCode("WAY") WCASH = NewCode("WCASH") WEALTH = NewCode("WEALTH") WEEK = NewCode("WEEK") WHO = NewCode("WHO") WIC = NewCode("WIC") WBB = NewCode("WBB") WINE = NewCode("WINE") WINK = NewCode("WINK") WISC = NewCode("WISC") WITCH = NewCode("WITCH") WMC = NewCode("WMC") WOMEN = NewCode("WOMEN") WOK = NewCode("WOK") WRT = NewCode("WRT") XCO = NewCode("XCO") X2 = NewCode("X2") XNX = NewCode("XNX") XAU = NewCode("XAU") XAV = NewCode("XAV") XDE2 = NewCode("XDE2") XDE = NewCode("XDE") XIOS = NewCode("XIOS") XOC = NewCode("XOC") XSSX = NewCode("XSSX") XBY = NewCode("XBY") YAC = NewCode("YAC") YMC = NewCode("YMC") YAY = NewCode("YAY") YBC = NewCode("YBC") YES = NewCode("YES") YOB2X = NewCode("YOB2X") YOVI = NewCode("YOVI") ZYD = NewCode("ZYD") ZECD = NewCode("ZECD") ZEIT = NewCode("ZEIT") ZENI = NewCode("ZENI") ZET2 = NewCode("ZET2") ZET = NewCode("ZET") ZMC = NewCode("ZMC") ZIRK = NewCode("ZIRK") ZLQ = NewCode("ZLQ") ZNE = NewCode("ZNE") ZONTO = NewCode("ZONTO") ZOOM = NewCode("ZOOM") ZRC = NewCode("ZRC") ZUR = NewCode("ZUR") ZB = NewCode("ZB") QC = NewCode("QC") HLC = NewCode("HLC") SAFE = NewCode("SAFE") BTN = NewCode("BTN") CDC = NewCode("CDC") DDM = NewCode("DDM") HOTC = NewCode("HOTC") BDS = NewCode("BDS") AAA = NewCode("AAA") XWC = NewCode("XWC") PDX = NewCode("PDX") SLT = NewCode("SLT") HPY = NewCode("HPY") XXRP = NewCode("XXRP") // XRP XXBT = NewCode("XXBT") // BTC, but XXBT instead XXDG = NewCode("XXDG") // DOGE XDG = NewCode("XDG") // DOGE HKD = NewCode("HKD") // Hong Kong Dollar AUD = NewCode("AUD") // Australian Dollar USD = NewCode("USD") // United States Dollar ZUSD = NewCode("ZUSD") // United States Dollar, but with a Z in front of it EUR = NewCode("EUR") // Euro ZEUR = NewCode("ZEUR") // Euro, but with a Z in front of it CAD = NewCode("CAD") // Canadaian Dollar ZCAD = NewCode("ZCAD") // Canadaian Dollar, but with a Z in front of it SGD = NewCode("SGD") // Singapore Dollar RUB = NewCode("RUB") // RUssian ruBle RUR = NewCode("RUR") // RUssian Ruble PLN = NewCode("PLN") // Polish złoty TRY = NewCode("TRY") // Turkish lira UAH = NewCode("UAH") // Ukrainian hryvnia JPY = NewCode("JPY") // Japanese yen ZJPY = NewCode("ZJPY") // Japanese yen, but with a Z in front of it LCH = NewCode("LCH") MYR = NewCode("MYR") AFN = NewCode("AFN") ARS = NewCode("ARS") AWG = NewCode("AWG") AZN = NewCode("AZN") BSD = NewCode("BSD") BBD = NewCode("BBD") BYN = NewCode("BYN") BZD = NewCode("BZD") BMD = NewCode("BMD") BOB = NewCode("BOB") BAM = NewCode("BAM") BWP = NewCode("BWP") BGN = NewCode("BGN") BRL = NewCode("BRL") BRWL = NewCode("BRWL") BND = NewCode("BND") KHR = NewCode("KHR") KYD = NewCode("KYD") CLP = NewCode("CLP") CNY = NewCode("CNY") COP = NewCode("COP") HRK = NewCode("HRK") CUP = NewCode("CUP") CZK = NewCode("CZK") DKK = NewCode("DKK") DOP = NewCode("DOP") XCD = NewCode("XCD") EGP = NewCode("EGP") SVC = NewCode("SVC") FKP = NewCode("FKP") FJD = NewCode("FJD") GIP = NewCode("GIP") GTQ = NewCode("GTQ") GGP = NewCode("GGP") GYD = NewCode("GYD") HNL = NewCode("HNL") HUF = NewCode("HUF") ISK = NewCode("ISK") INR = NewCode("INR") IDR = NewCode("IDR") IRR = NewCode("IRR") IMP = NewCode("IMP") ILS = NewCode("ILS") JMD = NewCode("JMD") JEP = NewCode("JEP") KZT = NewCode("KZT") KPW = NewCode("KPW") KGS = NewCode("KGS") LAK = NewCode("LAK") LBP = NewCode("LBP") LRD = NewCode("LRD") MKD = NewCode("MKD") MUR = NewCode("MUR") MXN = NewCode("MXN") MNT = NewCode("MNT") MZN = NewCode("MZN") NAD = NewCode("NAD") NPR = NewCode("NPR") ANG = NewCode("ANG") NZD = NewCode("NZD") NIO = NewCode("NIO") NGN = NewCode("NGN") NOK = NewCode("NOK") OMR = NewCode("OMR") PKR = NewCode("PKR") PAB = NewCode("PAB") PYG = NewCode("PYG") PHP = NewCode("PHP") QAR = NewCode("QAR") RON = NewCode("RON") SHP = NewCode("SHP") SAR = NewCode("SAR") RSD = NewCode("RSD") SCR = NewCode("SCR") SOS = NewCode("SOS") ZAR = NewCode("ZAR") LKR = NewCode("LKR") SEK = NewCode("SEK") CHF = NewCode("CHF") SRD = NewCode("SRD") SYP = NewCode("SYP") TWD = NewCode("TWD") THB = NewCode("THB") TTD = NewCode("TTD") TVD = NewCode("TVD") GBP = NewCode("GBP") UYU = NewCode("UYU") UZS = NewCode("UZS") VEF = NewCode("VEF") VND = NewCode("VND") YER = NewCode("YER") ZWD = NewCode("ZWD") XETH = NewCode("XETH") FX_BTC = NewCode("FX_BTC") //nolint // Cryptocurrency code AAVE = NewCode("AAVE") YFI = NewCode("YFI") BAL = NewCode("BAL") UMA = NewCode("UMA") SNX = NewCode("SNX") CRV = NewCode("CRV") OXT = NewCode("OXT") BUSD = NewCode("BUSD") SRM = NewCode("SRM") FTT = NewCode("FTT") UGX = NewCode("UGX") // Uganda Shilling GLM = NewCode("GLM") // Golem WAXP = NewCode("WAXP") STRAX = NewCode("STRAX") // Stratis TMTG = NewCode("TMTG") // The Midas Touch Gold HDAC = NewCode("HDAC") AMO = NewCode("AMO") BSV = NewCode("BSV") ORBS = NewCode("ORBS") TFUEL = NewCode("TFUEL") VALOR = NewCode("VALOR") ANKR = NewCode("ANKR") MIX = NewCode("MIX") CRO = NewCode("CRO") CHR = NewCode("CHR") MBL = NewCode("MBL") MXC = NewCode("MXC") TRV = NewCode("TRV") DAD = NewCode("DAD") WOM = NewCode("WOM") EM = NewCode("EM") BOA = NewCode("BOA") FLETA = NewCode("FLETA") SXP = NewCode("SXP") COS = NewCode("COS") APIX = NewCode("APIX") EL = NewCode("EL") BASIC = NewCode("BASIC") HIV = NewCode("HIV") XPR = NewCode("XPR") VRA = NewCode("VRA") BORA = NewCode("BORA") APM = NewCode("APM") CKB = NewCode("CKB") AERGO = NewCode("AERGO") ANW = NewCode("ANW") CENNZ = NewCode("CENNZ") EVZ = NewCode("EVZ") CYCLUB = NewCode("CYCLUB") QTCON = NewCode("QTCON") RSR = NewCode("RSR") UOS = NewCode("UOS") SAND = NewCode("SAND") STPT = NewCode("STPT") GOM2 = NewCode("GOM2") RINGX = NewCode("RINGX") BEL = NewCode("BEL") OBSR = NewCode("OBSR") ORC = NewCode("ORC") POLA = NewCode("POLA") AWO = NewCode("AWO") ADP = NewCode("ADP") DVI = NewCode("DVI") IBP = NewCode("IBP") MIR = NewCode("MIR") GHX = NewCode("GHX") BLY = NewCode("BLY") WOZX = NewCode("WOZX") ANV = NewCode("ANV") GRT = NewCode("GRT") BIOT = NewCode("BIOT") XNO = NewCode("XNO") COLA = NewCode("COLA") NU = NewCode("NU") LINA = NewCode("LINA") ASTA = NewCode("ASTA") MAP = NewCode("MAP") AQT = NewCode("AQT") WIKEN = NewCode("WIKEN") CTSI = NewCode("CTSI") LPT = NewCode("LPT") SUSHI = NewCode("SUSHI") ASM = NewCode("ASM") CELR = NewCode("CELR") PUNDIX = NewCode("PUNDIX") LF = NewCode("LF") ARW = NewCode("ARW") MSB = NewCode("MSB") RLY = NewCode("RLY") BFC = NewCode("BFC") ALICE = NewCode("ALICE") CAKE = NewCode("CAKE") CHZ = NewCode("CHZ") AXS = NewCode("AXS") MATIC = NewCode("MATIC") BAKE = NewCode("BAKE") VELO = NewCode("VELO") GXC = NewCode("GXC") BTT = NewCode("BTT") VSYS = NewCode("VSYS") IPX = NewCode("IPX") WICC = NewCode("WICC") META = NewCode("META") KLAY = NewCode("KLAY") ALGO = NewCode("ALGO") JST = NewCode("JST") MLK = NewCode("MLK") WEMIX = NewCode("WEMIX") DOT = NewCode("DOT") SSX = NewCode("SSX") TEMCO = NewCode("TEMCO") HIBS = NewCode("HIBS") BURGER = NewCode("BURGER") KSM = NewCode("KSM") XYM = NewCode("XYM") SUN = NewCode("SUN") XEC = NewCode("XEC") PCI = NewCode("PCI") SOL = NewCode("SOL") LN = NewCode("LN") GUSD = NewCode("GUSD") AUDIO = NewCode("AUDIO") EURT = NewCode("EURT") ALPHA = NewCode("ALPHA") MCAU = NewCode("MCAU") AED = NewCode("AED") BAND = NewCode("BAND") BCB = NewCode("BCB") BRZ = NewCode("BRZ") BTSE = NewCode("BTSE") FRM = NewCode("FRM") HXRO = NewCode("HXRO") LEO = NewCode("LEO") MBM = NewCode("MBM") PHNX = NewCode("PHNX") SFI = NewCode("SFI") SHIB = NewCode("SHIB") STAKE = NewCode("STAKE") SWRV = NewCode("SWRV") TRYB = NewCode("TRYB") USDP = NewCode("USDP") WAUD = NewCode("WAUD") WCAD = NewCode("WCAD") WCHF = NewCode("WCHF") WEUR = NewCode("WEUR") WGBP = NewCode("WGBP") WHKD = NewCode("WHKD") WINR = NewCode("WINR") WJPY = NewCode("WJPY") WMYR = NewCode("WMYR") WOO = NewCode("WOO") WSGD = NewCode("WSGD") WUSD = NewCode("WUSD") WXMR = NewCode("WXMR") XAUT = NewCode("XAUT") XSGD = NewCode("XSGD") EXM = NewCode("EXM") BTCV = NewCode("BTCV") CRON = NewCode("CRON") GNY = NewCode("GNY") HAI = NewCode("HAI") HB = NewCode("HB") HP = NewCode("HP") IQN = NewCode("IQN") MNC = NewCode("MNC") ONE = NewCode("ONE") USTC = NewCode("USTC") PRQ = NewCode("PRQ") ROOBEE = NewCode("ROOBEE") TONCOIN = NewCode("TONCOIN") VLX = NewCode("VLX") WXT = NewCode("WXT") UST = NewCode("UST") USDG = NewCode("USDG") NYZO = NewCode("NYZO") ETH2 = NewCode("ETH2") KAVA = NewCode("KAVA") RSV = NewCode("RSV") MTRG = NewCode("MTRG") COTI = NewCode("COTI") DIGG = NewCode("DIGG") YAMV1 = NewCode("YAMV1") BZRX = NewCode("BZRX") YAMV2 = NewCode("YAMV2") BOX = NewCode("BOX") ERG = NewCode("ERG") KPHA = NewCode("KPHA") KAR = NewCode("KAR") RMRK = NewCode("RMRK") CRING = NewCode("CRING") PICA = NewCode("PICA") XRT = NewCode("XRT") TEER = NewCode("TEER") SGB = NewCode("SGB") KPN = NewCode("KPN") CSM = NewCode("CSM") KAZE = NewCode("KAZE") SASHIMI = NewCode("SASHIMI") AUCTION = NewCode("AUCTION") OIN = NewCode("OIN") ADEL = NewCode("ADEL") KIMCHI = NewCode("KIMCHI") CREAM = NewCode("CREAM") DEGO = NewCode("DEGO") SFG = NewCode("SFG") CORE = NewCode("CORE") ARNX = NewCode("ARNX") ROSE = NewCode("ROSE") COVER = NewCode("COVER") BASE = NewCode("BASE") HEGIC = NewCode("HEGIC") DUSK = NewCode("DUSK") UNFI = NewCode("UNFI") GHST = NewCode("GHST") ACH = NewCode("ACH") FXS = NewCode("FXS") BORING = NewCode("BORING") LON = NewCode("LON") POND = NewCode("POND") DSD = NewCode("DSD") SHARE = NewCode("SHARE") ONC = NewCode("ONC") ZKS = NewCode("ZKS") RIF = NewCode("RIF") PROPS = NewCode("PROPS") LAYER = NewCode("LAYER") QNT = NewCode("QNT") YOP = NewCode("YOP") BONDED = NewCode("BONDED") ROOM = NewCode("ROOM") UNISTAKE = NewCode("UNISTAKE") FXF = NewCode("FXF") TORN = NewCode("TORN") UMB = NewCode("UMB") JASMY = NewCode("JASMY") BONDLY = NewCode("BONDLY") BMI = NewCode("BMI") RAY = NewCode("RAY") POLIS = NewCode("POLIS") WAG = NewCode("WAG") CYS = NewCode("CYS") SLRS = NewCode("SLRS") LIKE = NewCode("LIKE") PRT = NewCode("PRT") SUNNY = NewCode("SUNNY") MNGO = NewCode("MNGO") STEP = NewCode("STEP") FIDA = NewCode("FIDA") PBR = NewCode("PBR") HOPR = NewCode("HOPR") PROM = NewCode("PROM") TVK = NewCode("TVK") A5T = NewCode("A5T") CUDOS = NewCode("CUDOS") COMBO = NewCode("COMBO") DOWS = NewCode("DOWS") KYL = NewCode("KYL") EXRD = NewCode("EXRD") ETHA = NewCode("ETHA") ALN = NewCode("ALN") HAPI = NewCode("HAPI") BLANK = NewCode("BLANK") ERN = NewCode("ERN") KINE = NewCode("KINE") FET = NewCode("FET") ZEE = NewCode("ZEE") POLC = NewCode("POLC") XED = NewCode("XED") ANC = NewCode("ANC") DAFI = NewCode("DAFI") TARA = NewCode("TARA") PCNT = NewCode("PCNT") DG = NewCode("DG") SPI = NewCode("SPI") BANK = NewCode("BANK") UMX = NewCode("UMX") TIDAL = NewCode("TIDAL") LABS = NewCode("LABS") OGN = NewCode("OGN") BLES = NewCode("BLES") OVR = NewCode("OVR") HGET = NewCode("HGET") NOIA = NewCode("NOIA") COOK = NewCode("COOK") FST = NewCode("FST") AME = NewCode("AME") STN = NewCode("STN") SHOPX = NewCode("SHOPX") SHFT = NewCode("SHFT") RBC = NewCode("RBC") VAI = NewCode("VAI") FEI = NewCode("FEI") XEND = NewCode("XEND") SUKU = NewCode("SUKU") LTO = NewCode("LTO") TOTM = NewCode("TOTM") RAZE = NewCode("RAZE") DUCK2 = NewCode("DUCK2") CEL = NewCode("CEL") DDIM = NewCode("DDIM") TLM = NewCode("TLM") DDOS = NewCode("DDOS") GS = NewCode("GS") RAGE = NewCode("RAGE") AKITA = NewCode("AKITA") FORTH = NewCode("FORTH") CARDS = NewCode("CARDS") HORD = NewCode("HORD") WBTC = NewCode("WBTC") ARES = NewCode("ARES") SUSD = NewCode("SUSD") TCP = NewCode("TCP") BLACK = NewCode("BLACK") EZ = NewCode("EZ") VSO = NewCode("VSO") XAVA = NewCode("XAVA") PNG = NewCode("PNG") LOCG = NewCode("LOCG") WSIENNA = NewCode("WSIENNA") STBU = NewCode("STBU") DFND = NewCode("DFND") GDT = NewCode("GDT") PRARE = NewCode("PRARE") GYEN = NewCode("GYEN") METIS = NewCode("METIS") BZZ = NewCode("BZZ") TENSET = NewCode("10SET") STRING = NewCode("STRING") PDEX = NewCode("PDEX") FEAR = NewCode("FEAR") ELON = NewCode("ELON") NOA = NewCode("NOA") NAOS = NewCode("NAOS") GITCOIN = NewCode("GITCOIN") XCAD = NewCode("XCAD") LSS = NewCode("LSS") CVX = NewCode("CVX") PHTR = NewCode("PHTR") APN = NewCode("APN") DFYN = NewCode("DFYN") LIME = NewCode("LIME") FORM = NewCode("FORM") KEX = NewCode("KEX") DLTA = NewCode("DLTA") DPR = NewCode("DPR") CQT = NewCode("CQT") OLY = NewCode("OLY") FUSE = NewCode("FUSE") SRK = NewCode("SRK") BURP = NewCode("BURP") CART = NewCode("CART") C98 = NewCode("C98") DNXC = NewCode("DNXC") DERC = NewCode("DERC") PLA = NewCode("PLA") EFI = NewCode("EFI") HMT = NewCode("HMT") SKT = NewCode("SKT") SPHRI = NewCode("SPHRI") BIT = NewCode("BIT") RARE = NewCode("RARE") ZLW = NewCode("ZLW") SKYRIM = NewCode("SKYRIM") OCT = NewCode("OCT") ATA = NewCode("ATA") PUSH = NewCode("PUSH") REVO = NewCode("REVO") VENT = NewCode("VENT") LDO = NewCode("LDO") GEL = NewCode("GEL") CTRC = NewCode("CTRC") ITGR = NewCode("ITGR") HOTCROSS = NewCode("HOTCROSS") OPUL = NewCode("OPUL") POLI = NewCode("POLI") TAUR = NewCode("TAUR") EQX = NewCode("EQX") RBN = NewCode("RBN") PHM = NewCode("PHM") FLOKI = NewCode("FLOKI") CIRUS = NewCode("CIRUS") DYDX = NewCode("DYDX") RGT = NewCode("RGT") AGLD = NewCode("AGLD") DOGNFT = NewCode("DOGNFT") SOV = NewCode("SOV") URUS = NewCode("URUS") CFG = NewCode("CFG") TBTC = NewCode("TBTC") NFTX = NewCode("NFTX") ORAI = NewCode("ORAI") LIT = NewCode("LIT") POOLZ = NewCode("POOLZ") DODO = NewCode("DODO") IPAD = NewCode("IPAD") OPIUM = NewCode("OPIUM") REEF = NewCode("REEF") MAPS = NewCode("MAPS") ZCN = NewCode("ZCN") BAO = NewCode("BAO") DIS = NewCode("DIS") PBTC35A = NewCode("PBTC35A") NORD = NewCode("NORD") FLOW = NewCode("FLOW") FIN = NewCode("FIN") INJ = NewCode("INJ") KP3R = NewCode("KP3R") HYVE = NewCode("HYVE") RAMP = NewCode("RAMP") RARI = NewCode("RARI") MPH = NewCode("MPH") CVP = NewCode("CVP") VALUE = NewCode("VALUE") YFII = NewCode("YFII") TROY = NewCode("TROY") SPA = NewCode("SPA") FOR = NewCode("FOR") DIA = NewCode("DIA") TRB = NewCode("TRB") PEARL = NewCode("PEARL") NFT = NewCode("NFT") SLM = NewCode("SLM") TAI = NewCode("TAI") JFI = NewCode("JFI") DKA = NewCode("DKA") DOS = NewCode("DOS") LBK = NewCode("LBK") ASD = NewCode("ASD") SWOP = NewCode("SWOP") WEST = NewCode("WEST") HYDRA = NewCode("HYDRA") OLT = NewCode("OLT") LAT = NewCode("LAT") STC = NewCode("STC") HNT = NewCode("HNT") AKT = NewCode("AKT") BTC3L = NewCode("BTC3L") COTI3L = NewCode("COTI3L") XCH3L = NewCode("XCH3L") IOST3L = NewCode("IOST3L") BZZ3L = NewCode("BZZ3L") TRIBE3L = NewCode("TRIBE3L") RAY3L = NewCode("RAY3L") AR3L = NewCode("AR3L") ONE3L = NewCode("ONE3L") HBAR3L = NewCode("HBAR3L") CSPR3L = NewCode("CSPR3L") SXP3L = NewCode("SXP3L") XEC3L = NewCode("XEC3L") LIT3L = NewCode("LIT3L") MINA3L = NewCode("MINA3L") GALA3L = NewCode("GALA3L") FTT3L = NewCode("FTT3L") C983L = NewCode("C983L") DYDX3L = NewCode("DYDX3L") MTL3L = NewCode("MTL3L") FTM3L = NewCode("FTM3L") SAND3L = NewCode("SAND3L") LUNA3L = NewCode("LUNA3L") ALPHA3L = NewCode("ALPHA3L") RUNE3L = NewCode("RUNE3L") ICP3L = NewCode("ICP3L") SHIB3L = NewCode("SHIB3L") ACH3L = NewCode("ACH3L") ALICE3L = NewCode("ALICE3L") AXS3L = NewCode("AXS3L") MATIC3L = NewCode("MATIC3L") BTC5L = NewCode("BTC5L") BCH5L = NewCode("BCH5L") DOT5L = NewCode("DOT5L") XRP5L = NewCode("XRP5L") BSV5L = NewCode("BSV5L") LTC5L = NewCode("LTC5L") EOS5L = NewCode("EOS5L") ETH5L = NewCode("ETH5L") LINK3L = NewCode("LINK3L") KAVA3L = NewCode("KAVA3L") EGLD3L = NewCode("EGLD3L") CHZ3L = NewCode("CHZ3L") MKR3L = NewCode("MKR3L") LRC3L = NewCode("LRC3L") BAL3L = NewCode("BAL3L") JST3L = NewCode("JST3L") SERO3L = NewCode("SERO3L") VET3L = NewCode("VET3L") THETA3L = NewCode("THETA3L") ZIL3L = NewCode("ZIL3L") GRIN3L = NewCode("GRIN3L") BEAM3L = NewCode("BEAM3L") SOL3L = NewCode("SOL3L") SKL3L = NewCode("SKL3L") ONEINCH3L = NewCode("1INCH3L") LON3L = NewCode("LON3L") DOGE3L = NewCode("DOGE3L") GRT3L = NewCode("GRT3L") BNB3L = NewCode("BNB3L") TRX3L = NewCode("TRX3L") ATOM3L = NewCode("ATOM3L") AVAX3L = NewCode("AVAX3L") NEAR3L = NewCode("NEAR3L") ROSE3L = NewCode("ROSE3L") ZEN3L = NewCode("ZEN3L") QTUM3L = NewCode("QTUM3L") XLM3L = NewCode("XLM3L") XRP3L = NewCode("XRP3L") CFX3L = NewCode("CFX3L") OMG3L = NewCode("OMG3L") ALGO3L = NewCode("ALGO3L") WAVES3L = NewCode("WAVES3L") NEO3L = NewCode("NEO3L") ONT3L = NewCode("ONT3L") ETC3L = NewCode("ETC3L") CVC3L = NewCode("CVC3L") SNX3L = NewCode("SNX3L") ADA3L = NewCode("ADA3L") DASH3L = NewCode("DASH3L") AAVE3L = NewCode("AAVE3L") SRM3L = NewCode("SRM3L") KSM3L = NewCode("KSM3L") BTM3L = NewCode("BTM3L") ZEC3L = NewCode("ZEC3L") XMR3L = NewCode("XMR3L") AMPL3L = NewCode("AMPL3L") CRV3L = NewCode("CRV3L") COMP3L = NewCode("COMP3L") YFII3L = NewCode("YFII3L") YFI3L = NewCode("YFI3L") HT3L = NewCode("HT3L") OKB3L = NewCode("OKB3L") UNI3L = NewCode("UNI3L") DOT3L = NewCode("DOT3L") FIL3L = NewCode("FIL3L") SUSHI3L = NewCode("SUSHI3L") ETH3L = NewCode("ETH3L") EOS3L = NewCode("EOS3L") BSV3L = NewCode("BSV3L") BCH3L = NewCode("BCH3L") LTC3L = NewCode("LTC3L") XTZ3L = NewCode("XTZ3L") RVN = NewCode("RVN") AR = NewCode("AR") SNK = NewCode("SNK") NSDX = NewCode("NSDX") HIVE = NewCode("HIVE") BCHA = NewCode("BCHA") FLUX = NewCode("FLUX") NAX = NewCode("NAX") NBOT = NewCode("NBOT") BEAM = NewCode("BEAM") MINA = NewCode("MINA") LUNC = NewCode("LUNC") ABBC = NewCode("ABBC") FIC = NewCode("FIC") STOX = NewCode("STOX") VIDYX = NewCode("VIDYX") CNNS = NewCode("CNNS") BTCBEAR = NewCode("BTCBEAR") ETHBULL = NewCode("ETHBULL") EOSBEAR = NewCode("EOSBEAR") XRPBULL = NewCode("XRPBULL") WGRT = NewCode("WGRT") RUNE = NewCode("RUNE") CBK = NewCode("CBK") OPA = NewCode("OPA") KABY = NewCode("KABY") BP = NewCode("BP") SFUND = NewCode("SFUND") ASTRO = NewCode("ASTRO") ARV = NewCode("ARV") ROSN = NewCode("ROSN") CPHR = NewCode("CPHR") KWS = NewCode("KWS") CTT = NewCode("CTT") BEEFI = NewCode("BEEFI") BLIN = NewCode("BLIN") XPNET = NewCode("XPNET") BABY = NewCode("BABY") OPS = NewCode("OPS") RACA = NewCode("RACA") HOD = NewCode("HOD") OLYMPUS = NewCode("OLYMPUS") BMON = NewCode("BMON") PVU = NewCode("PVU") FAN = NewCode("FAN") SKILL = NewCode("SKILL") SPS = NewCode("SPS") HERO = NewCode("HERO") FEVR = NewCode("FEVR") WEX = NewCode("WEX") KALM = NewCode("KALM") KPAD = NewCode("KPAD") BABYDOGE = NewCode("BABYDOGE") PIG = NewCode("PIG") FINE = NewCode("FINE") BSCS = NewCode("BSCS") SAFEMARS = NewCode("SAFEMARS") PSG = NewCode("PSG") PET = NewCode("PET") ALPACA = NewCode("ALPACA") BRY = NewCode("BRY") TOOLS = NewCode("TOOLS") JULD = NewCode("JULD") FRA = NewCode("FRA") TWT = NewCode("TWT") WIN = NewCode("WIN") MTV = NewCode("MTV") HPB = NewCode("HPB") EGLD = NewCode("EGLD") CSPR = NewCode("CSPR") FIS = NewCode("FIS") MDX = NewCode("MDX") WAR = NewCode("WAR") XNFT = NewCode("XNFT") BXH = NewCode("BXH") BAGS = NewCode("BAGS") ALEPH = NewCode("ALEPH") KEEP = NewCode("KEEP") NXM = NewCode("NXM") ONEINCH = NewCode("ONEINCH") SKL = NewCode("SKL") BOND = NewCode("BOND") ALCX = NewCode("ALCX") API3 = NewCode("API3") DDX = NewCode("DDX") FTM = NewCode("FTM") CTX = NewCode("CTX") ILV = NewCode("ILV") MC02 = NewCode("MC02") SLP = NewCode("SLP") WTON = NewCode("WTON") EFIL = NewCode("EFIL") MTX = NewCode("MTX") YGG = NewCode("YGG") QCASH = NewCode("QCASH") TV = NewCode("TV") BCW = NewCode("BCW") ENTC = NewCode("ENTC") XWCC = NewCode("XWCC") BRC = NewCode("BRC") GRIN = NewCode("GRIN") B91 = NewCode("B91") YTNB = NewCode("YTNB") NWT = NewCode("NWT") BAR = NewCode("BAR") ACC = NewCode("ACC") HX = NewCode("HX") LVN = NewCode("LVN") TSR = NewCode("TSR") FN = NewCode("FN") HNS = NewCode("HNS") KPG = NewCode("KPG") LTG = NewCode("LTG") UFO = NewCode("UFO") GUCS = NewCode("GUCS") VBT = NewCode("VBT") DSF = NewCode("DSF") GST = NewCode("GST") DAWN = NewCode("DAWN") UFC = NewCode("UFC") EP = NewCode("EP") ULU = NewCode("ULU") DMD = NewCode("DMD") NBS = NewCode("NBS") BGPT = NewCode("BGPT") DIP = NewCode("DIP") QFIL = NewCode("QFIL") RTF = NewCode("RTF") M = NewCode("M") FOMP = NewCode("FOMP") BDM = NewCode("BDM") DORA = NewCode("DORA") UZ = NewCode("UZ") BKH = NewCode("BKH") CRU = NewCode("CRU") IDV = NewCode("IDV") NEAR = NewCode("NEAR") DFL = NewCode("DFL") BED = NewCode("BED") SDOG = NewCode("SDOG") CFX = NewCode("CFX") CATE = NewCode("CATE") ONETHOUSANDHOKK = NewCode("1000HOKK") ONETHOUSANDKISHU = NewCode("1000KISHU") XFLR = NewCode("XFLR") ICP = NewCode("ICP") BNA = NewCode("BNA") DOM = NewCode("DOM") POLS = NewCode("POLS") O3 = NewCode("O3") CLV = NewCode("CLV") FARM = NewCode("FARM") ORN = NewCode("ORN") QUICK = NewCode("QUICK") TRU = NewCode("TRU") SANA = NewCode("SANA") TRIBE = NewCode("TRIBE") CELO = NewCode("CELO") SDN = NewCode("SDN") WNCG = NewCode("WNCG") AMC = NewCode("AMC") OOE = NewCode("OOE") XYO = NewCode("XYO") GALA = NewCode("GALA") ZKN = NewCode("ZKN") XCH = NewCode("XCH") AC = NewCode("AC") ABTC = NewCode("ABTC") AFC = NewCode("AFC") AGE = NewCode("AGE") AIN = NewCode("AIN") ALI = NewCode("ALI") ALIX = NewCode("ALIX") ANJ = NewCode("ANJ") ANRX = NewCode("ANRX") ANY = NewCode("ANY") AOS = NewCode("AOS") AQUAGOAT = NewCode("AQUAGOAT") ARTCN = NewCode("ARTCN") ARTE = NewCode("ARTE") AT = NewCode("AT") ATC = NewCode("ATC") ATLAS = NewCode("ATLAS") ATP = NewCode("ATP") ATPNAS = NewCode("ATPNAS") AURY = NewCode("AURY") AUSD = NewCode("AUSD") AUTO = NewCode("AUTO") AVAX = NewCode("AVAX") AVF = NewCode("AVF") AWR = NewCode("AWR") B20 = NewCode("B20") BADGER = NewCode("BADGER") BAFE = NewCode("BAFE") BANANA = NewCode("BANANA") BAS = NewCode("BAS") BASEL = NewCode("BASEL") BASID = NewCode("BASID") BBC = NewCode("BBC") BBCNP = NewCode("BBCNP") BCK = NewCode("BCK") BDP = NewCode("BDP") BELT = NewCode("BELT") SLIM = NewCode("SLIM") SPN = NewCode("SPN") VUSD = NewCode("VUSD") POLYBUNNY = NewCode("POLYBUNNY") STARL = NewCode("STARL") KISC = NewCode("KISC") MASS = NewCode("MASS") MOYU = NewCode("MOYU") PLUG = NewCode("PLUG") SFC = NewCode("SFC") TEP = NewCode("TEP") GOFX = NewCode("GOFX") KAINET = NewCode("KAINET") BXA = NewCode("BXA") SLOT = NewCode("SLOT") EXVA = NewCode("EXVA") MW = NewCode("MW") BOO = NewCode("BOO") BZKY = NewCode("BZKY") NFTART = NewCode("NFTART") QRDO = NewCode("QRDO") SHILL = NewCode("SHILL") SIT = NewCode("SIT") USF = NewCode("USF") EBSO = NewCode("EBSO") GUSDT = NewCode("GUSDT") BTRST = NewCode("BTRST") DBX = NewCode("DBX") MARSINU = NewCode("MARSINU") GEMG = NewCode("GEMG") HYPE = NewCode("HYPE") ELCASH = NewCode("ELCASH") FEG = NewCode("FEG") MTC = NewCode("MTC") NCT = NewCode("NCT") PSYDUCK = NewCode("PSYDUCK") SEAL = NewCode("SEAL") DOGEKONGZILLA = NewCode("DOGEKONGZILLA") DOUGH = NewCode("DOUGH") SURFMOON = NewCode("SURFMOON") BUIDL = NewCode("BUIDL") DOGGY = NewCode("DOGGY") VNX = NewCode("VNX") BSB = NewCode("BSB") GOF = NewCode("GOF") GM = NewCode("GM") TEN = NewCode("TEN") CRT = NewCode("CRT") FIL12 = NewCode("FIL12") WAXE = NewCode("WAXE") VEGA = NewCode("VEGA") LSP = NewCode("LSP") TOWER = NewCode("TOWER") GL = NewCode("GL") IBNB = NewCode("IBNB") WDS = NewCode("WDS") YYE = NewCode("YYE") GHC = NewCode("GHC") LBKL = NewCode("LBKL") NASADOGE = NewCode("NASADOGE") TKX = NewCode("TKX") XWC2 = NewCode("XWC2") CNEX = NewCode("CNEX") DOKI = NewCode("DOKI") MX = NewCode("MX") UCA = NewCode("UCA") NKGEN = NewCode("NKGEN") STPL = NewCode("STPL") CYE = NewCode("CYE") KBC = NewCode("KBC") X = NewCode("X") GINU = NewCode("GINU") MEDA = NewCode("MEDA") TREES = NewCode("TREES") UZUMAKI = NewCode("UZUMAKI") CHLT = NewCode("CHLT") DBZ = NewCode("DBZ") IMX = NewCode("IMX") LIEN = NewCode("LIEN") ULTRA = NewCode("ULTRA") BTSC = NewCode("BTSC") EAI = NewCode("EAI") CORGI = NewCode("CORGI") MINISHIBA = NewCode("MINISHIBA") BLOC = NewCode("BLOC") PEPPA = NewCode("PEPPA") FOUR = NewCode("FOUR") PERP = NewCode("PERP") THG = NewCode("THG") COLLIE = NewCode("COLLIE") FO = NewCode("FO") HER = NewCode("HER") DNS = NewCode("DNS") ELS = NewCode("ELS") MINISAITAMA = NewCode("MINISAITAMA") PCH = NewCode("PCH") SBREE = NewCode("SBREE") BPRIVA = NewCode("BPRIVA") DLX = NewCode("DLX") NAFT = NewCode("NAFT") SHIBLITE = NewCode("SHIBLITE") BHD = NewCode("BHD") THN = NewCode("THN") //nolint:misspell // false positive DOGEDASH = NewCode("DOGEDASH") FARA = NewCode("FARA") FIL120 = NewCode("FIL120") RABBIT = NewCode("RABBIT") ZOON = NewCode("ZOON") BONFIRE = NewCode("BONFIRE") CHAIN = NewCode("CHAIN") GGC = NewCode("GGC") IOG = NewCode("IOG") MEME = NewCode("MEME") PINU = NewCode("PINU") CCASH = NewCode("CCASH") GART = NewCode("GART") VALK = NewCode("VALK") LM = NewCode("LM") MINIDOGE = NewCode("MINIDOGE") RAZOR = NewCode("RAZOR") KILL = NewCode("KILL") MASK = NewCode("MASK") BUMN = NewCode("BUMN") KLAYG = NewCode("KLAYG") MICROSHIB = NewCode("MICROSHIB") IDHUB = NewCode("IDHUB") JT = NewCode("JT") NTX = NewCode("NTX") SAMO = NewCode("SAMO") SANSHU = NewCode("SANSHU") TASTE = NewCode("TASTE") CXC = NewCode("CXC") FLDT = NewCode("FLDT") SAITO = NewCode("SAITO") UIP = NewCode("UIP") HTDF = NewCode("HTDF") MOONRISE = NewCode("MOONRISE") HOKK = NewCode("HOKK") LT = NewCode("LT") MINI = NewCode("MINI") MOK = NewCode("MOK") BLUESPARROW = NewCode("BLUESPARROW") FTS = NewCode("FTS") PN = NewCode("PN") KDC = NewCode("KDC") SAFEMOON = NewCode("SAFEMOON") SON = NewCode("SON") ZINU = NewCode("ZINU") FIL72 = NewCode("FIL72") PETS = NewCode("PETS") POK = NewCode("POK") RBASE = NewCode("RBASE") TOKAU = NewCode("TOKAU") UBEX = NewCode("UBEX") VENA = NewCode("VENA") FC = NewCode("FC") OEX = NewCode("OEX") DOGEBACK = NewCode("DOGEBACK") IOEX = NewCode("IOEX") MOVR = NewCode("MOVR") PTT = NewCode("PTT") ZOOT = NewCode("ZOOT") CATGIRL = NewCode("CATGIRL") CHOPPER = NewCode("CHOPPER") EDEN = NewCode("EDEN") GEP = NewCode("GEP") LVI = NewCode("LVI") PEG = NewCode("PEG") SUTER = NewCode("SUTER") CHECK = NewCode("CHECK") DRO = NewCode("DRO") FBC = NewCode("FBC") KABOSU = NewCode("KABOSU") CPX = NewCode("CPX") ZAK = NewCode("ZAK") ETERNAL = NewCode("ETERNAL") MILKTEA = NewCode("MILKTEA") KEANU = NewCode("KEANU") NSFW = NewCode("NSFW") XOM = NewCode("XOM") EMPIRE = NewCode("EMPIRE") FNK = NewCode("FNK") SMRAT = NewCode("SMRAT") TAPE = NewCode("TAPE") IIC = NewCode("IIC") IMI = NewCode("IMI") KIWI = NewCode("KIWI") POLO = NewCode("POLO") BRIGHT = NewCode("BRIGHT") HIKO = NewCode("HIKO") HELIOS = NewCode("HELIOS") KINGSHIB = NewCode("KINGSHIB") DOGE2 = NewCode("DOGE2") EFK = NewCode("EFK") LMCSWAP = NewCode("LMCSWAP") PMON = NewCode("PMON") POODL = NewCode("POODL") SSN = NewCode("SSN") BIN = NewCode("BIN") LFIL = NewCode("LFIL") BFDT = NewCode("BFDT") USDN = NewCode("USDN") GDOGE = NewCode("GDOGE") HUSD = NewCode("HUSD") FOIN = NewCode("FOIN") LARIX = NewCode("LARIX") MARSRISE = NewCode("MARSRISE") PUT = NewCode("PUT") ZIQ = NewCode("ZIQ") CCAR = NewCode("CCAR") CZ = NewCode("CZ") PLUGCN = NewCode("PLUGCN") X2P = NewCode("X2P") MOONX = NewCode("MOONX") TUDA = NewCode("TUDA") ZOE = NewCode("ZOE") FCF = NewCode("FCF") GHD = NewCode("GHD") KALA = NewCode("KALA") ULTI = NewCode("ULTI") GRAMS = NewCode("GRAMS") ODA = NewCode("ODA") PHV = NewCode("PHV") SAL = NewCode("SAL") TKY = NewCode("TKY") XWG = NewCode("XWG") CCTC = NewCode("CCTC") MKCY = NewCode("MKCY") LFIL36 = NewCode("LFIL36") PKMON = NewCode("PKMON") RCKT = NewCode("RCKT") VCC = NewCode("VCC") CUMSTAR = NewCode("CUMSTAR") JNTR = NewCode("JNTR") JIND = NewCode("JIND") SAITAMA = NewCode("SAITAMA") ELT = NewCode("ELT") FLOKIN = NewCode("FLOKIN") NEX = NewCode("NEX") TENA = NewCode("TENA") CAP = NewCode("CAP") LUFFY = NewCode("LUFFY") ET = NewCode("ET") DBNK = NewCode("DBNK") SDT = NewCode("SDT") NWC = NewCode("NWC") PAMP = NewCode("PAMP") XVIX = NewCode("XVIX") BLADE = NewCode("BLADE") GETH = NewCode("GETH") HIGH = NewCode("HIGH") PLF = NewCode("PLF") DSG = NewCode("DSG") GN = NewCode("GN") TTT = NewCode("TTT") HMR = NewCode("HMR") SMD = NewCode("SMD") WEYU = NewCode("WEYU") BIKI = NewCode("BIKI") VIKINGS = NewCode("VIKINGS") BUGG = NewCode("BUGG") LUNAPAD = NewCode("LUNAPAD") EAURIC = NewCode("EAURIC") HJW = NewCode("HJW") LUC = NewCode("LUC") BV = NewCode("BV") COGE = NewCode("COGE") DILI = NewCode("DILI") XHDX = NewCode("XHDX") XP = NewCode("XP") XSTAR = NewCode("XSTAR") FKX = NewCode("FKX") RPL = NewCode("RPL") JUS = NewCode("JUS") KISHIMOTO = NewCode("KISHIMOTO") NEST = NewCode("NEST") SMBSWAP = NewCode("SMBSWAP") WOLVERINU = NewCode("WOLVERINU") GNBT = NewCode("GNBT") HDS = NewCode("HDS") QNUT = NewCode("QNUT") ENS = NewCode("ENS") FOG = NewCode("FOG") NBTC = NewCode("NBTC") CHS = NewCode("CHS") GMT = NewCode("GMT") ORCA = NewCode("ORCA") SERO = NewCode("SERO") BGLD = NewCode("BGLD") CDB = NewCode("CDB") SLA = NewCode("SLA") UT = NewCode("UT") POLYDOGE = NewCode("POLYDOGE") SFP = NewCode("SFP") HKUN = NewCode("HKUN") WHALE = NewCode("WHALE") CCXX = NewCode("CCXX") DOR = NewCode("DOR") OATH = NewCode("OATH") GKI = NewCode("GKI") PANDA = NewCode("PANDA") OVO = NewCode("OVO") CELT = NewCode("CELT") OSST = NewCode("OSST") OMNIS = NewCode("OMNIS") TONE = NewCode("TONE") MERI = NewCode("MERI") MTA = NewCode("MTA") MBF = NewCode("MBF") Y1D1S = NewCode("Y1D1S") GMCOIN = NewCode("GMCOIN") KISHU = NewCode("KISHU") OPX = NewCode("OPX") PCE = NewCode("PCE") SFIL = NewCode("SFIL") BID = NewCode("BID") BKS = NewCode("BKS") PIZA = NewCode("PIZA") POSI = NewCode("POSI") WSG = NewCode("WSG") K21 = NewCode("K21") PAI = NewCode("PAI") HEX = NewCode("HEX") YFFII = NewCode("YFFII") IMC = NewCode("IMC") ONES = NewCode("ONES") CRB = NewCode("CRB") DBA = NewCode("DBA") SEAD = NewCode("SEAD") SYN = NewCode("SYN") TAC = NewCode("TAC") DAX = NewCode("DAX") LFIL12 = NewCode("LFIL12") LFW = NewCode("LFW") TYB = NewCode("TYB") FCL = NewCode("FCL") GERA = NewCode("GERA") LID = NewCode("LID") TT = NewCode("TT") WELL = NewCode("WELL") GALT = NewCode("GALT") GMC = NewCode("GMC") BPX = NewCode("BPX") DOE = NewCode("DOE") REVV = NewCode("REVV") VTT = NewCode("VTT") MAI = NewCode("MAI") PDF = NewCode("PDF") SEER = NewCode("SEER") GFI = NewCode("GFI") GODS = NewCode("GODS") FISH = NewCode("FISH") MIST = NewCode("MIST") SEOS = NewCode("SEOS") AWF = NewCode("AWF") DADDYDOGE = NewCode("DADDYDOGE") MNSTRS = NewCode("MNSTRS") TREE = NewCode("TREE") BNX = NewCode("BNX") DESIRE = NewCode("DESIRE") FIC24 = NewCode("FIC24") RYOSHI = NewCode("RYOSHI") TABOO = NewCode("TABOO") CMCX = NewCode("CMCX") CRE = NewCode("CRE") FIL6 = NewCode("FIL6") HTMOON = NewCode("HTMOON") PORNROCKET = NewCode("PORNROCKET") QUID = NewCode("QUID") SAIT = NewCode("SAIT") TGC = NewCode("TGC") CVA = NewCode("CVA") EMAX = NewCode("EMAX") XDOGE = NewCode("XDOGE") TUBE2 = NewCode("TUBE2") TZKI = NewCode("TZKI") YOOSHI = NewCode("YOOSHI") GLEEC = NewCode("GLEEC") PNT = NewCode("PNT") UMI = NewCode("UMI") DALI = NewCode("DALI") DUKE = NewCode("DUKE") MLTPX = NewCode("MLTPX") CHE = NewCode("CHE") KING = NewCode("KING") MEWTWO = NewCode("MEWTWO") SEED = NewCode("SEED") DEKU = NewCode("DEKU") FSHIB = NewCode("FSHIB") MFLOKIADA = NewCode("MFLOKIADA") MNI = NewCode("MNI") NBL = NewCode("NBL") POVE = NewCode("POVE") SMTY = NewCode("SMTY") CPH = NewCode("CPH") FLM = NewCode("FLM") GAT = NewCode("GAT") MONONOKEINU = NewCode("MONONOKEINU") SBR = NewCode("SBR") BMARS = NewCode("BMARS") GOMI = NewCode("GOMI") ONOT = NewCode("ONOT") //nolint:misspell // false positive GOKU = NewCode("GOKU") MINTYS = NewCode("MINTYS") PONYO = NewCode("PONYO") WZC = NewCode("WZC") ELAMA = NewCode("ELAMA") NAMI = NewCode("NAMI") SLINK = NewCode("SLINK") SQUID = NewCode("SQUID") DOGEZILLA = NewCode("DOGEZILLA") INSUR = NewCode("INSUR") IDA = NewCode("IDA") MDX1 = NewCode("MDX1") TRR = NewCode("TRR") DXN = NewCode("DXN") FCH = NewCode("FCH") KAWA = NewCode("KAWA") MCB = NewCode("MCB") NABOX = NewCode("NABOX") WANA = NewCode("WANA") DOGECOLA = NewCode("DOGECOLA") ELONGATE = NewCode("ELONGATE") TNS = NewCode("TNS") LEAD = NewCode("LEAD") SYBC = NewCode("SYBC") WINRY = NewCode("WINRY") DAWGS = NewCode("DAWGS") SMOON = NewCode("SMOON") FIL36 = NewCode("FIL36") KDS = NewCode("KDS") SHR = NewCode("SHR") BTY = NewCode("BTY") FODL = NewCode("FODL") XIASI = NewCode("XIASI") RVST = NewCode("RVST") VO = NewCode("VO") GDR = NewCode("GDR") RELCOIN = NewCode("RELCOIN") CISLA = NewCode("CISLA") ECOP = NewCode("ECOP") AXSOLD = NewCode("AXSOLD") BETA = NewCode("BETA") BLINK = NewCode("BLINK") PORTO = NewCode("PORTO") SPARTAOLD = NewCode("SPARTAOLD") WNXM = NewCode("WNXM") ASR = NewCode("ASR") COVEROLD = NewCode("COVEROLD") VRAB = NewCode("VRAB") NSBT = NewCode("NSBT") AGIX = NewCode("AGIX") BOLT = NewCode("BOLT") BIDR = NewCode("BIDR") VAB = NewCode("VAB") EOSBULL = NewCode("EOSBULL") FIO = NewCode("FIO") IDEX = NewCode("IDEX") PROS = NewCode("PROS") VITE = NewCode("VITE") WSOL = NewCode("WSOL") FIRO = NewCode("FIRO") MTLX = NewCode("MTLX") SLPOLD = NewCode("SLPOLD") WING = NewCode("WING") SPARTA = NewCode("SPARTA") USDS = NewCode("USDS") BNC = NewCode("BNC") BEAR = NewCode("BEAR") OG = NewCode("OG") TKO = NewCode("TKO") UFT = NewCode("UFT") SNMOLD = NewCode("SNMOLD") WRX = NewCode("WRX") BKRW = NewCode("BKRW") BNBBULL = NewCode("BNBBULL") PERLOLD = NewCode("PERLOLD") BOBA = NewCode("BOBA") COCOS = NewCode("COCOS") NVT = NewCode("NVT") TBCC = NewCode("TBCC") BTCST = NewCode("BTCST") DEXE = NewCode("DEXE") HARD = NewCode("HARD") DREPOLD = NewCode("DREPOLD") UND = NewCode("UND") XDATA = NewCode("XDATA") KEYFI = NewCode("KEYFI") MA = NewCode("MA") QI = NewCode("QI") ACA = NewCode("ACA") DF = NewCode("DF") KNCL = NewCode("KNCL") BVND = NewCode("BVND") PERL = NewCode("PERL") WETH = NewCode("WETH") BETH = NewCode("BETH") OM = NewCode("OM") OMOLD = NewCode("OMOLD") PHB = NewCode("PHB") ASTR = NewCode("ASTR") HNST = NewCode("HNST") JEX = NewCode("JEX") ZCX = NewCode("ZCX") DAR = NewCode("DAR") MDXT = NewCode("MDXT") RENBTC = NewCode("RENBTC") SSV = NewCode("SSV") XRPBEAR = NewCode("XRPBEAR") AVA = NewCode("AVA") SGT = NewCode("SGT") VGX = NewCode("VGX") EASY = NewCode("EASY") IRIS = NewCode("IRIS") VRT = NewCode("VRT") WBNB = NewCode("WBNB") DON = NewCode("DON") JUV = NewCode("JUV") PHA = NewCode("PHA") SPELL = NewCode("SPELL") QISWAP = NewCode("QISWAP") SUNOLD = NewCode("SUNOLD") ETHBEAR = NewCode("ETHBEAR") FRONT = NewCode("FRONT") LAZIO = NewCode("LAZIO") BCHSV = NewCode("BCHSV") EPS = NewCode("EPS") ETHBNT = NewCode("ETHBNT") HBAR = NewCode("HBAR") ACM = NewCode("ACM") CBM = NewCode("CBM") DREP = NewCode("DREP") ERD = NewCode("ERD") STMX = NewCode("STMX") ANTOLD = NewCode("ANTOLD") BULL = NewCode("BULL") BNBBEAR = NewCode("BNBBEAR") CITY = NewCode("CITY") AKRO = NewCode("AKRO") ENTRP = NewCode("ENTRP") REPV1 = NewCode("REPV1") VIDT = NewCode("VIDT") BGBP = NewCode("BGBP") LOOMOLD = NewCode("LOOMOLD") MBOX = NewCode("MBOX") ADXOLD = NewCode("ADXOLD") IDRT = NewCode("IDRT") PHBV1 = NewCode("PHBV1") FRAX = NewCode("FRAX") LUSD = NewCode("LUSD") OUSD = NewCode("OUSD") USDX = NewCode("USDX") EURS = NewCode("EURS") CUSD = NewCode("CUSD") MUSD = NewCode("MUSD") USDK = NewCode("USDK") EOSDT = NewCode("EOSDT") DGX = NewCode("DGX") XCHF = NewCode("XCHF") XAUR = NewCode("XAUR") USNBT = NewCode("USNBT") ITL = NewCode("ITL") MIM = NewCode("MIM") ALUSD = NewCode("ALUSD") BRCP = NewCode("BRCP") USDs = NewCode("USDs") MTR = NewCode("MTR") CEUR = NewCode("CEUR") ONEGOLD = NewCode("1GOLD") COFFIN = NewCode("COFFIN") MDO = NewCode("MDO") DPT = NewCode("DPT") XIDR = NewCode("XIDR") PAR = NewCode("PAR") XUSD = NewCode("XUSD") USDB = NewCode("USDB") USDQ = NewCode("USDQ") BITUSD = NewCode("BITUSD") BITGOLD = NewCode("BITGOLD") BITEUR = NewCode("BITEUR") HGT = NewCode("HGT") CONST = NewCode("CONST") XEUR = NewCode("XEUR") EBASE = NewCode("EBASE") USDL = NewCode("USDL") UETH = NewCode("UETH") USDEX = NewCode("USDEX") USDFL = NewCode("USDFL") FLUSD = NewCode("FLUSD") DUSD = NewCode("DUSD") USDD = NewCode("USDD") KDA = NewCode("KDA") XCN = NewCode("XCN") TEL = NewCode("TEL") XDC = NewCode("XDC") MHC = NewCode("MHC") OXEN = NewCode("OXEN") STETH = NewCode("STETH") SWAP = NewCode("SWAP") PI = NewCode("PI") FI = NewCode("FI") USDM = NewCode("USDM") USDTM = NewCode("USDTM") LEVER = NewCode("LEVER") NESS = NewCode("NESS") KAS = NewCode("KAS") NEXT = NewCode("NEXT") VEXT = NewCode("VEXT") PYUSD = NewCode("PYUSD") SAIL = NewCode("SAIL") VV = NewCode("VV") ORDI = NewCode("ORDI") CYBER = NewCode("CYBER") SEILOR = NewCode("SEILOR") TAVA = NewCode("TAVA") DSRUN = NewCode("DSRUN") CWAR = NewCode("CWAR") GALFT = NewCode("GALFT") LADYS10000 = NewCode("10000LADYS") NFT10000 = NewCode("10000NFT") BONK1000 = NewCode("1000BONK") BTT1000 = NewCode("1000BTT") FLOKI1000 = NewCode("1000FLOKI") LUNC1000 = NewCode("1000LUNC") PEPE1000 = NewCode("1000PEPE") XEC1000 = NewCode("1000XEC") ARKM = NewCode("ARKM") BICO = NewCode("BICO") BIGTIME = NewCode("BIGTIME") BLUR = NewCode("BLUR") CEEK = NewCode("CEEK") ETHW = NewCode("ETHW") FITFI = NewCode("FITFI") GLMR = NewCode("GLMR") HIFI = NewCode("HIFI") HOOK = NewCode("HOOK") LOOKS = NewCode("LOOKS") LQTY = NewCode("LQTY") LUNA2 = NewCode("LUNA2") MAGIC = NewCode("MAGIC") PENDLE = NewCode("PENDLE") PEOPLE = NewCode("PEOPLE") RDNT = NewCode("RDNT") RNDR = NewCode("RNDR") RSS3 = NewCode("RSS3") SHIB1000 = NewCode("SHIB1000") SWEAT = NewCode("SWEAT") TOMI = NewCode("TOMI") BONK = NewCode("BONK") WIF = NewCode("WIF") AIDOGE = NewCode("AIDOGE") PEPE = NewCode("PEPE") USDCM = NewCode("USDCM") EURR = NewCode("EURR") )
Const declarations for individual currencies/tokens/fiat An ever growing list. Cares not for equivalence, just is
var ( ErrAssetAlreadyEnabled = errors.New("asset already enabled") ErrAssetIsNil = errors.New("asset is nil") ErrAssetNotFound = errors.New("asset type not found in pair store") ErrPairAlreadyEnabled = errors.New("pair already enabled") ErrPairFormatIsNil = errors.New("pair format is nil") ErrPairManagerNotInitialised = errors.New("pair manager not initialised") ErrPairNotContainedInAvailablePairs = errors.New("pair not contained in available pairs") ErrPairNotEnabled = errors.New("pair not enabled") ErrPairNotFound = errors.New("pair not found") ErrSymbolStringEmpty = errors.New("symbol string is empty") )
Public errors
var EMPTYFORMAT = PairFormat{}
EMPTYFORMAT defines an empty pair format
var ErrCurrencyNotAssociatedWithPair = errors.New("currency not associated with pair")
ErrCurrencyNotAssociatedWithPair defines an error where a currency is not associated with a pair.
var ( // ErrFiatDisplayCurrencyIsNotFiat defines an error for when the fiat // display currency is not set as a fiat currency. ErrFiatDisplayCurrencyIsNotFiat = errors.New("fiat display currency is not a fiat currency") )
var ( // ErrPairDuplication defines an error when there is multiple of the same // currency pairs found. ErrPairDuplication = errors.New("currency pair duplication") )
Functions ¶
func ConvertFiat ¶
ConvertFiat converts a fiat amount from one currency to another
func FindMatchingPairsBetween ¶
func FindMatchingPairsBetween(this, that PairsWithTranslation) map[Pair]Pair
FindMatchingPairsBetween returns all pairs that match the incoming pairs. Translator is used to convert exchange specific currency codes to common currency codes used in lookup process. The pairs are not modified. So that the original pairs are returned for deployment to the specific exchange. NOTE: Translator is optional and can be nil. Translator can be obtained from the exchange implementation by calling Base() method and accessing Features and Translation fields.
func ForexEnabled ¶
func ForexEnabled() bool
ForexEnabled returns whether the currency system has any available forex providers enabled
func GetForeignExchangeRate ¶
GetForeignExchangeRate returns the foreign exchange rate for a fiat pair.
func GetSymbolByCurrencyName ¶
GetSymbolByCurrencyName returns a currency symbol
func RunStorageUpdater ¶
func RunStorageUpdater(o BotOverrides, m *Config, filepath string) error
RunStorageUpdater runs a new foreign exchange updater instance
func SeedForeignExchangeData ¶
func SeedForeignExchangeData(c Currencies) error
SeedForeignExchangeData seeds FX data with the currencies supplied
func ShutdownStorageUpdater ¶
func ShutdownStorageUpdater() error
ShutdownStorageUpdater cleanly shuts down and saves to currency.json
func UpdateBaseCurrency ¶
UpdateBaseCurrency updates storage base currency
func UpdateCurrencies ¶
func UpdateCurrencies(c Currencies, isCryptocurrency bool)
UpdateCurrencies updates the local cryptocurrency or fiat currency store
Types ¶
type AllFXSettings ¶
type AllFXSettings []FXSettings
AllFXSettings defines all the foreign exchange settings
func (AllFXSettings) IsEnabled ¶
func (settings AllFXSettings) IsEnabled(name string) bool
IsEnabled returns if the individual foreign exchange config setting is enabled
type BaseCodes ¶
type BaseCodes struct { Items map[string][]*Item LastMainUpdate time.Time // contains filtered or unexported fields }
BaseCodes defines a basket of bare currency codes
func (*BaseCodes) GetCurrencies ¶
func (b *BaseCodes) GetCurrencies() Currencies
GetCurrencies gets the full currency list from the base code type available from the currency system
func (*BaseCodes) GetFullCurrencyData ¶
GetFullCurrencyData returns a type that is read to dump to file
func (*BaseCodes) Register ¶
Register registers a currency from a string and returns a currency code, this can optionally include a role when it is known.
func (*BaseCodes) UpdateCurrency ¶
UpdateCurrency updates or registers a currency/contract
type BotOverrides ¶
type BotOverrides struct { Coinmarketcap bool CurrencyConverter bool CurrencyLayer bool ExchangeRates bool Fixer bool OpenExchangeRates bool }
BotOverrides defines a bot overriding factor for quick running currency subsystems
type Code ¶
type Code struct { Item *Item // contains filtered or unexported fields }
Code defines an ISO 4217 fiat currency or unofficial cryptocurrency code string
func GetBaseCurrency ¶
func GetBaseCurrency() Code
GetBaseCurrency returns the storage base currency
func GetDefaultBaseCurrency ¶
func GetDefaultBaseCurrency() Code
GetDefaultBaseCurrency returns storage default base currency
func GetTotalMarketCryptocurrencies ¶
GetTotalMarketCryptocurrencies returns the full market cryptocurrencies
func GetTranslation ¶
GetTranslation returns similar strings for a particular currency if not found returns the code back
func (Code) IsCryptocurrency ¶
IsCryptocurrency checks if the currency passed is an enabled CRYPTO currency. NOTE: All unset currencies will default to cryptocurrencies and stable coins are cryptocurrencies as well.
func (Code) IsFiatCurrency ¶
IsFiatCurrency checks if the currency passed is an enabled fiat currency
func (Code) IsStableCurrency ¶
IsStableCurrency checks if the currency is a stable currency.
func (Code) Lower ¶
Lower flags the Code to use LowerCase formatting, but does not change Symbol If Code cannot be lowercased then it will return Code unchanged
func (Code) MarshalJSON ¶
MarshalJSON conforms type to the marshaler interface
func (*Code) UnmarshalJSON ¶
UnmarshalJSON conforms type to the umarshaler interface
type CoinmarketcapSettings ¶
type CoinmarketcapSettings coinmarketcap.Settings
CoinmarketcapSettings refers to settings
type Config ¶
type Config struct { ForexProviders AllFXSettings `json:"forexProviders"` CryptocurrencyProvider Provider `json:"cryptocurrencyProvider"` CurrencyPairFormat *PairFormat `json:"currencyPairFormat"` FiatDisplayCurrency Code `json:"fiatDisplayCurrency"` CurrencyFileUpdateDuration time.Duration `json:"currencyFileUpdateDuration"` ForeignExchangeUpdateDuration time.Duration `json:"foreignExchangeUpdateDuration"` }
Config holds all the information needed for currency related manipulation
type Conversion ¶
Conversion defines a specific currency conversion for a rate
func NewConversion ¶
func NewConversion(from, to Code) (Conversion, error)
NewConversion returns a conversion rate object that allows for obtaining efficient rate values when needed
func NewConversionFromString ¶
func NewConversionFromString(p string) (Conversion, error)
NewConversionFromString splits a string from a foreign exchange provider
func NewConversionFromStrings ¶
func NewConversionFromStrings(from, to string) (Conversion, error)
NewConversionFromStrings assigns or finds a new conversion unit
func (Conversion) Convert ¶
func (c Conversion) Convert(fromAmount float64) (float64, error)
Convert for example converts $1 USD to the equivalent Japanese Yen or vice versa.
func (Conversion) ConvertInverse ¶
func (c Conversion) ConvertInverse(fromAmount float64) (float64, error)
ConvertInverse converts backwards if needed
func (Conversion) GetInversionRate ¶
func (c Conversion) GetInversionRate() (float64, error)
GetInversionRate returns the rate of the inversion of the conversion pair
func (Conversion) GetRate ¶
func (c Conversion) GetRate() (float64, error)
GetRate returns system rate if available
func (Conversion) IsFiat ¶
func (c Conversion) IsFiat() bool
IsFiat checks to see if the from and to currency is a fiat e.g. EURUSD
func (Conversion) IsInvalid ¶
func (c Conversion) IsInvalid() bool
IsInvalid returns true if both from and to currencies are the same
type ConversionRates ¶
type ConversionRates struct {
// contains filtered or unexported fields
}
ConversionRates defines protected conversion rate map for concurrent updating and retrieval of foreign exchange rates for mainly fiat currencies
func (*ConversionRates) GetFullRates ¶
func (c *ConversionRates) GetFullRates() Conversions
GetFullRates returns the full conversion list
func (*ConversionRates) GetRate ¶
func (c *ConversionRates) GetRate(from, to Code) (float64, error)
GetRate returns a rate from the conversion rate list
func (*ConversionRates) HasData ¶
func (c *ConversionRates) HasData() bool
HasData returns if conversion rates are present
func (*ConversionRates) Register ¶
func (c *ConversionRates) Register(from, to Code) (Conversion, error)
Register registers a new conversion rate if not found adds it and allows for quick updates
type Conversions ¶
type Conversions []Conversion
Conversions define a list of conversion data
func GetDefaultExchangeRates ¶
func GetDefaultExchangeRates() (Conversions, error)
GetDefaultExchangeRates returns the currency exchange rates based off the default fiat values
func GetExchangeRates ¶
func GetExchangeRates() (Conversions, error)
GetExchangeRates returns the full fiat currency exchange rates base off configuration parameters supplied to the currency storage
type Currencies ¶
type Currencies []Code
Currencies define a range of supported currency codes
func GetCryptocurrencies ¶
func GetCryptocurrencies() Currencies
GetCryptocurrencies returns the storage enabled cryptocurrencies
func GetDefaultCryptocurrencies ¶
func GetDefaultCryptocurrencies() Currencies
GetDefaultCryptocurrencies returns a list of default cryptocurrencies
func GetDefaultFiatCurrencies ¶
func GetDefaultFiatCurrencies() Currencies
GetDefaultFiatCurrencies returns a list of default fiat currencies
func GetFiatCurrencies ¶
func GetFiatCurrencies() Currencies
GetFiatCurrencies returns the storage enabled fiat currencies
func NewCurrenciesFromStringArray ¶
func NewCurrenciesFromStringArray(currencies []string) Currencies
NewCurrenciesFromStringArray returns a Currencies object from strings
func (Currencies) Add ¶
func (c Currencies) Add(a Code) Currencies
Add adds a currency to the list if it doesn't exist
func (Currencies) Contains ¶
func (c Currencies) Contains(check Code) bool
Contains checks to see if a currency code is contained in the currency list
func (Currencies) HasData ¶
func (c Currencies) HasData() bool
HasData checks to see if Currencies type has actual currencies
func (Currencies) MarshalJSON ¶
func (c Currencies) MarshalJSON() ([]byte, error)
MarshalJSON conforms type to the marshaler interface
func (Currencies) Match ¶
func (c Currencies) Match(other Currencies) bool
Match returns if the full list equals the supplied list
func (Currencies) Strings ¶
func (c Currencies) Strings() []string
Strings returns an array of currency strings
func (*Currencies) UnmarshalJSON ¶
func (c *Currencies) UnmarshalJSON(d []byte) error
UnmarshalJSON conforms type to the umarshaler interface
type FXSettings ¶
type FXSettings struct { Name string `json:"name"` Enabled bool `json:"enabled"` Verbose bool `json:"verbose"` APIKey string `json:"apiKey"` APIKeyLvl int `json:"apiKeyLvl"` PrimaryProvider bool `json:"primaryProvider"` }
FXSettings defines foreign exchange requester settings
type File ¶
type File struct { LastMainUpdate interface{} `json:"lastMainUpdate"` Cryptocurrency []*Item `json:"cryptocurrencies"` FiatCurrency []*Item `json:"fiatCurrencies"` UnsetCurrency []*Item `json:"unsetCurrencies"` Contracts []*Item `json:"contracts"` Token []*Item `json:"tokens"` Stable []*Item `json:"stableCurrencies"` }
File defines a full currency file generated by the currency storage analysis system
type FullStore ¶
FullStore holds all supported asset types with the enabled and available pairs for an exchange.
func (FullStore) MarshalJSON ¶
MarshalJSON implements the marshal json interface so that the key can be correctly marshalled from a uint.
func (*FullStore) UnmarshalJSON ¶
UnmarshalJSON implements the unmarshal json interface so that the key can be correctly unmarshalled from a string into a uint.
type Item ¶
type Item struct { ID int `json:"id,omitempty"` FullName string `json:"fullName,omitempty"` Symbol string `json:"symbol"` // Lower is the lower case symbol for optimization purposes so no need to // rely on the strings package to upper and lower strings when it is not // needed Lower string `json:"-"` Role Role `json:"role"` AssocChain string `json:"associatedBlockchain,omitempty"` }
Item defines a sub type containing the main attributes of a designated currency code pointer
type OrderParameters ¶
type OrderParameters struct { // SellingCurrency is the currency that will be sold first SellingCurrency Code // Purchasing is the currency that will be purchased last PurchasingCurrency Code // IsBuySide is the side of the order that will be placed true for buy/long, // false for sell/short. IsBuySide bool // IsAskLiquidity is the side of the orderbook that will be used, false for // bid liquidity. IsAskLiquidity bool // Pair is the currency pair that the order parameters are derived from. Pair Pair }
OrderParameters is used to determine the order side, liquidity side and the selling & purchasing currency derived from the currency pair.
type Pair ¶
type Pair struct { Delimiter string `json:"delimiter,omitempty"` Base Code `json:"base,omitempty"` Quote Code `json:"quote,omitempty"` }
Pair holds currency pair information NOTE: UnmarshalJSON allows string conversion to Pair type but only if there is a delimiter present in the string, otherwise it will return an error.
func CopyPairFormat ¶
CopyPairFormat copies the pair format from a list of pairs once matched
func MatchPairsWithNoDelimiter ¶
func MatchPairsWithNoDelimiter(currencyPair string, pairs Pairs, pairFmt PairFormat) (Pair, error)
MatchPairsWithNoDelimiter will move along a predictable index on the provided currencyPair it will then split on that index and verify whether that currencypair exists in the supplied pairs this allows for us to match strange currencies with no delimiter where it is difficult to infer where the delimiter is located eg BETHERETH is BETHER ETH
func NewPairDelimiter ¶
NewPairDelimiter splits the desired currency string at delimiter, then returns a Pair struct
func NewPairFromFormattedPairs ¶
func NewPairFromFormattedPairs(currencyPair string, pairs Pairs, pairFmt PairFormat) (Pair, error)
NewPairFromFormattedPairs matches a supplied currency pair to a list of pairs with a specific format. This is helpful for exchanges which provide currency pairs with no delimiter so we can match it with a list and apply the same format
func NewPairFromString ¶
NewPairFromString converts currency string into a new CurrencyPair with or without delimiter
func NewPairFromStrings ¶
NewPairFromStrings returns a CurrencyPair without a delimiter
func NewPairWithDelimiter ¶
NewPairWithDelimiter returns a CurrencyPair with a delimiter
func (Pair) EqualIncludeReciprocal ¶
EqualIncludeReciprocal compares two currency pairs and returns whether or not they are the same including reciprocal currencies.
func (Pair) Format ¶
func (p Pair) Format(pf PairFormat) Pair
Format changes the currency based on user preferences overriding the default String() display
func (Pair) GetFormatting ¶
func (p Pair) GetFormatting() (PairFormat, error)
GetFormatting returns the formatting style of a pair
func (Pair) IsAssociated ¶
IsAssociated checks to see if the pair is associated with another pair
func (Pair) IsCryptoFiatPair ¶
IsCryptoFiatPair checks to see if the pair is a crypto fiat pair e.g. BTCUSD
func (Pair) IsCryptoPair ¶
IsCryptoPair checks to see if the pair is a crypto pair e.g. BTCLTC
func (Pair) IsCryptoStablePair ¶
IsCryptoStablePair checks to see if the pair is a crypto stable pair e.g. LTC-USDT
func (Pair) IsEmpty ¶
IsEmpty returns whether or not the pair is empty or is missing a currency code
func (Pair) IsFiatPair ¶
IsFiatPair checks to see if the pair is a fiat pair e.g. EURUSD
func (Pair) IsPopulated ¶
IsPopulated returns true if the currency pair have both non-empty values for base and quote.
func (Pair) IsStablePair ¶
IsStablePair checks to see if the pair is a stable pair e.g. USDT-DAI
func (Pair) LimitBuyOrderParameters ¶
func (p Pair) LimitBuyOrderParameters(wantingToBuy Code) (*OrderParameters, error)
LimitBuyOrderParameters returns order parameters for when you want to sell a currency which purchases another currency. This specifically returns what liquidity side you will be affecting, what order side you will be placing and what currency you will be purchasing.
func (Pair) LimitSellOrderParameters ¶
func (p Pair) LimitSellOrderParameters(wantingToSell Code) (*OrderParameters, error)
LimitSellOrderParameters returns order parameters for when you want to sell a currency which purchases another currency. This specifically returns what liquidity side you will be affecting, what order side you will be placing and what currency you will be purchasing.
func (Pair) MarketBuyOrderParameters ¶
func (p Pair) MarketBuyOrderParameters(wantingToBuy Code) (*OrderParameters, error)
MarketBuyOrderParameters returns order parameters for when you want to sell a currency which purchases another currency. This specifically returns what liquidity side you will be affecting, what order side you will be placing and what currency you will be purchasing.
func (Pair) MarketSellOrderParameters ¶
func (p Pair) MarketSellOrderParameters(wantingToSell Code) (*OrderParameters, error)
MarketSellOrderParameters returns order parameters for when you want to sell a currency which purchases another currency. This specifically returns what liquidity side you will be affecting, what order side you will be placing and what currency you will be purchasing.
func (Pair) MarshalJSON ¶
MarshalJSON conforms type to the marshaler interface
func (*Pair) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler
type PairDifference ¶
PairDifference defines the difference between a set of pairs including a change in format.
type PairFormat ¶
type PairFormat struct { Uppercase bool `json:"uppercase"` Delimiter string `json:"delimiter,omitempty"` Separator string `json:"separator,omitempty"` }
PairFormat returns the pair format
func (PairFormat) Format ¶
func (f PairFormat) Format(pair Pair) string
Format formats the given pair as a string
type PairStore ¶
type PairStore struct { AssetEnabled *bool `json:"assetEnabled"` Enabled Pairs `json:"enabled"` Available Pairs `json:"available"` RequestFormat *PairFormat `json:"requestFormat,omitempty"` ConfigFormat *PairFormat `json:"configFormat,omitempty"` }
PairStore stores a currency pair store
type Pairs ¶
type Pairs []Pair
Pairs defines a list of pairs
func FormatPairs ¶
FormatPairs formats a string array to a list of currency pairs with the supplied currency pair format
func NewPairsFromString ¶
NewPairsFromString takes in a delimiter string and returns a Pairs type
func NewPairsFromStrings ¶
NewPairsFromStrings takes in currency pair strings and returns a currency pair list
func (Pairs) Contains ¶
Contains checks to see if a specified pair exists inside a currency pair array
func (Pairs) ContainsAll ¶
ContainsAll checks to see if all pairs supplied are contained within the original pairs list
func (Pairs) ContainsCurrency ¶
ContainsCurrency checks to see if a specified currency code exists inside a currency pair array
func (Pairs) DeriveFrom ¶
DeriveFrom matches symbol string to the available pairs list when no delimiter is supplied. WARNING: This is not optimised and should only be used for one off processes.
func (Pairs) Equal ¶
Equal checks to see if two lists of pairs contain only the same pairs, ignoring delimiter and case Does not check for inverted/reciprocal pairs
func (Pairs) FindDifferences ¶
func (p Pairs) FindDifferences(incoming Pairs, pairFmt PairFormat) (PairDifference, error)
FindDifferences returns pairs which are new or have been removed
func (Pairs) Format ¶
func (p Pairs) Format(pairFmt PairFormat) Pairs
Format formats the pair list to the exchange format configuration
func (Pairs) GetCrypto ¶
func (p Pairs) GetCrypto() Currencies
GetCrypto returns all the cryptos contained in the list.
func (Pairs) GetCurrencies ¶
func (p Pairs) GetCurrencies() Currencies
GetCurrencies returns the full currency code list contained derived from the pairs list.
func (Pairs) GetFiat ¶
func (p Pairs) GetFiat() Currencies
GetFiat returns all the cryptos contained in the list.
func (Pairs) GetFormatting ¶
func (p Pairs) GetFormatting() (PairFormat, error)
GetFormatting returns the formatting of a set of pairs
func (Pairs) GetMatch ¶
GetMatch returns either the pair that is equal including the reciprocal for when currencies are constructed from different exchange pairs e.g. Exchange one USDT-DAI to exchange two DAI-USDT enabled/available pairs.
func (Pairs) GetPairsByBase ¶
GetPairsByBase returns all pairs that have a matching base currency
func (Pairs) GetPairsByCurrencies ¶
func (p Pairs) GetPairsByCurrencies(currencies Currencies) Pairs
GetPairsByCurrencies returns all pairs that have both matches to the currencies passed in. This allows for the construction of pairs by required currency codes.
func (Pairs) GetPairsByFilter ¶
GetPairsByFilter returns all pairs that have at least one match base or quote to the filter code.
func (Pairs) GetPairsByQuote ¶
GetPairsByQuote returns all pairs that have a matching quote currency
func (Pairs) GetRandomPair ¶
GetRandomPair returns a random pair from a list of pairs
func (Pairs) GetStables ¶
func (p Pairs) GetStables() Currencies
GetStables returns the stable currency code list derived from the pairs list.
func (Pairs) GetStablesMatch ¶
GetStablesMatch returns all stable pairs matched with code
func (Pairs) HasFormatDifference ¶
func (p Pairs) HasFormatDifference(pairFmt PairFormat) bool
HasFormatDifference checks and validates full formatting across a pairs list
func (Pairs) Lower ¶
Lower updates and returns the entire slice of pairs to upper casing NOTE: Do not duplicate slice reference as this can cause race issues.
func (Pairs) MarshalJSON ¶
MarshalJSON conforms type to the marshaler interface
func (Pairs) RemovePairsByFilter ¶
RemovePairsByFilter checks to see if a pair contains a specific currency and removes it from the list of pairs
func (*Pairs) UnmarshalJSON ¶
UnmarshalJSON conforms type to the umarshaler interface
func (Pairs) Upper ¶
Upper updates and returns the entire slice of pairs to upper casing NOTE: Do not duplicate slice reference as this can cause race issues.
func (Pairs) ValidateAndConform ¶
func (p Pairs) ValidateAndConform(pFmt PairFormat, bypassFormatting bool) (Pairs, error)
ValidateAndConform checks for duplications and empty pairs then conforms the entire pairs list to the supplied formatting (unless bypassed). Map[string]bool type is used to make sure delimiters are not included so different formatting entry duplications can be found e.g. `LINKUSDTM21`, `LIN-KUSDTM21` or `LINK-USDTM21 are all the same instances but with different unintentional processes for formatting.
type PairsManager ¶
type PairsManager struct { BypassConfigFormatUpgrades bool `json:"bypassConfigFormatUpgrades"` RequestFormat *PairFormat `json:"requestFormat,omitempty"` ConfigFormat *PairFormat `json:"configFormat,omitempty"` UseGlobalFormat bool `json:"useGlobalFormat,omitempty"` LastUpdated int64 `json:"lastUpdated,omitempty"` Pairs FullStore `json:"pairs"` // contains filtered or unexported fields }
PairsManager manages asset pairs
func (*PairsManager) Delete ¶
func (p *PairsManager) Delete(a asset.Item)
Delete deletes a map entry based on the supplied asset type
func (*PairsManager) DisablePair ¶
func (p *PairsManager) DisablePair(a asset.Item, pair Pair) error
DisablePair removes the pair from the enabled pairs list if found
func (*PairsManager) EnablePair ¶
func (p *PairsManager) EnablePair(a asset.Item, pair Pair) error
EnablePair adds a pair to the list of enabled pairs if it exists in the list of available pairs and isn't already added
func (*PairsManager) EnsureOnePairEnabled ¶
func (p *PairsManager) EnsureOnePairEnabled() (Pair, asset.Item, error)
EnsureOnePairEnabled not all assets have pairs, eg options search for an asset that does and enable one if none are enabled error if no currency pairs found for an entire exchange returns the asset and pair of a pair if it has been enabled
func (*PairsManager) Get ¶
func (p *PairsManager) Get(a asset.Item) (*PairStore, error)
Get gets the currency pair config based on the asset type
func (*PairsManager) GetAssetTypes ¶
func (p *PairsManager) GetAssetTypes(enabled bool) asset.Items
GetAssetTypes returns a list of stored asset types
func (*PairsManager) GetFormat ¶
func (p *PairsManager) GetFormat(a asset.Item, request bool) (PairFormat, error)
GetFormat returns the pair format in a concurrent safe manner
func (*PairsManager) GetPairs ¶
GetPairs gets a list of stored pairs based on the asset type and whether they're enabled or not
func (*PairsManager) IsAssetEnabled ¶
func (p *PairsManager) IsAssetEnabled(a asset.Item) error
IsAssetEnabled checks to see if an asset is enabled
func (*PairsManager) IsAssetSupported ¶
func (p *PairsManager) IsAssetSupported(a asset.Item) bool
IsAssetSupported returns if the asset is supported by an exchange Does not imply that the Asset is enabled
func (*PairsManager) IsPairAvailable ¶
IsPairAvailable checks if a pair is available for a given asset type
func (*PairsManager) IsPairEnabled ¶
IsPairEnabled checks if a pair is enabled for an enabled asset type
func (*PairsManager) Load ¶
func (p *PairsManager) Load(seed *PairsManager)
Load sets the pair manager from a seed without copying mutexes
func (*PairsManager) Match ¶
Match returns a currency pair based on the supplied symbol and asset type
func (*PairsManager) SetAssetEnabled ¶
func (p *PairsManager) SetAssetEnabled(a asset.Item, enabled bool) error
SetAssetEnabled sets if an asset is enabled or disabled for first run
func (*PairsManager) SetDelimitersFromConfig ¶
func (p *PairsManager) SetDelimitersFromConfig() error
SetDelimitersFromConfig ensures that the pairs adhere to the configured delimiters Pairs.Unmarshal doesn't know what the delimiter is, so uses the first punctuation rune
func (*PairsManager) Store ¶
func (p *PairsManager) Store(a asset.Item, ps *PairStore) error
Store stores a new currency pair config based on its asset type
func (*PairsManager) StoreFormat ¶
func (p *PairsManager) StoreFormat(a asset.Item, pFmt *PairFormat, config bool) error
StoreFormat stores a new format for request or config format.
func (*PairsManager) StorePairs ¶
StorePairs stores a list of pairs based on the asset type and whether they're enabled or not
type PairsWithTranslation ¶
type PairsWithTranslation struct { Pairs Pairs Translator Translator }
PairsWithTranslation is a pair list with a translator for a specific exchange.
type Provider ¶
type Provider struct { Name string `json:"name"` Enabled bool `json:"enabled"` Verbose bool `json:"verbose"` APIKey string `json:"apiKey"` AccountPlan string `json:"accountPlan"` }
Provider defines coinmarketcap tools
type Role ¶
type Role uint8
Role defines a bitmask for the full currency roles either; fiat, cryptocurrency, token, or contract
func (Role) MarshalJSON ¶
MarshalJSON conforms Role to the marshaller interface
func (Role) String ¶
String implements the stringer interface and returns a string representation of the underlying role.
func (*Role) UnmarshalJSON ¶
UnmarshalJSON conforms Role to the unmarshaller interface
type Storage ¶
type Storage struct { Verbose bool // contains filtered or unexported fields }
Storage contains the loaded storage currencies supported on available crypto or fiat marketplaces NOTE: All internal currencies are upper case
func (*Storage) ConvertCurrency ¶
ConvertCurrency for example converts $1 USD to the equivalent Japanese Yen or vice versa.
func (*Storage) FetchCurrencyAnalysisData ¶
FetchCurrencyAnalysisData fetches a new fresh batch of currency data and loads it into memory
func (*Storage) ForeignExchangeUpdater ¶
func (s *Storage) ForeignExchangeUpdater()
ForeignExchangeUpdater is a routine that seeds foreign exchange rate and keeps updated as fast as possible
func (*Storage) GetBaseCurrency ¶
GetBaseCurrency returns the current storage base currency
func (*Storage) GetCryptocurrencies ¶
func (s *Storage) GetCryptocurrencies() Currencies
GetCryptocurrencies returns the cryptocurrency list
func (*Storage) GetDefaultBaseCurrency ¶
GetDefaultBaseCurrency returns the default base currency
func (*Storage) GetDefaultCryptocurrencies ¶
func (s *Storage) GetDefaultCryptocurrencies() Currencies
GetDefaultCryptocurrencies returns a list of default cryptocurrencies
func (*Storage) GetDefaultFiatCurrencies ¶
func (s *Storage) GetDefaultFiatCurrencies() Currencies
GetDefaultFiatCurrencies returns the default fiat currencies list
func (*Storage) GetDefaultForeignExchangeRates ¶
func (s *Storage) GetDefaultForeignExchangeRates() (Conversions, error)
GetDefaultForeignExchangeRates returns foreign exchange rates based off default fiat currencies.
func (*Storage) GetExchangeRates ¶
func (s *Storage) GetExchangeRates() (Conversions, error)
GetExchangeRates returns storage seeded exchange rates
func (*Storage) GetFiatCurrencies ¶
func (s *Storage) GetFiatCurrencies() Currencies
GetFiatCurrencies returns the fiat currencies list
func (*Storage) GetStorageRate ¶
GetStorageRate returns the rate of the conversion value
func (*Storage) GetTotalMarketCryptocurrencies ¶
func (s *Storage) GetTotalMarketCryptocurrencies() (Currencies, error)
GetTotalMarketCryptocurrencies returns the total seeded market cryptocurrencies
func (*Storage) IsDefaultCryptocurrency ¶
IsDefaultCryptocurrency returns if a cryptocurrency is a default cryptocurrency
func (*Storage) IsDefaultCurrency ¶
IsDefaultCurrency returns if a currency is a default currency
func (*Storage) LoadFileCurrencyData ¶
LoadFileCurrencyData loads currencies into the currency codes
func (*Storage) NewConversion ¶
func (s *Storage) NewConversion(from, to Code) (Conversion, error)
NewConversion returns a new conversion object that has a pointer to a related rate with its inversion.
func (*Storage) RunUpdater ¶
func (s *Storage) RunUpdater(overrides BotOverrides, settings *Config, filePath string) error
RunUpdater runs the foreign exchange updater service. This will set up a JSON dump file and keep foreign exchange rates updated as fast as possible without triggering rate limiters, it will also run a full cryptocurrency check through coin market cap and expose analytics for exchange services
func (*Storage) SeedCurrencyAnalysisData ¶
SeedCurrencyAnalysisData sets a new instance of a coinmarketcap data.
func (*Storage) SeedDefaultForeignExchangeRates ¶
SeedDefaultForeignExchangeRates seeds the default foreign exchange rates
func (*Storage) SeedForeignExchangeRate ¶
SeedForeignExchangeRate returns a singular exchange rate
func (*Storage) SeedForeignExchangeRates ¶
SeedForeignExchangeRates seeds the foreign exchange rates from storage config currencies
func (*Storage) SeedForeignExchangeRatesByCurrencies ¶
func (s *Storage) SeedForeignExchangeRatesByCurrencies(c Currencies) error
SeedForeignExchangeRatesByCurrencies seeds the foreign exchange rates by currencies supplied
func (*Storage) SetDefaultCryptocurrencies ¶
func (s *Storage) SetDefaultCryptocurrencies(c Currencies) error
SetDefaultCryptocurrencies assigns the default cryptocurrency list and adds it to the running list
func (*Storage) SetDefaultFiatCurrencies ¶
func (s *Storage) SetDefaultFiatCurrencies(c Currencies) error
SetDefaultFiatCurrencies assigns the default fiat currency list and adds it to the running list
func (*Storage) SetDefaults ¶
func (s *Storage) SetDefaults()
SetDefaults sets storage defaults for basic package functionality
func (*Storage) SetStableCoins ¶
func (s *Storage) SetStableCoins(c Currencies) error
SetStableCoins assigns the stable currency list and adds it to the running list
func (*Storage) SetupConversionRates ¶
func (s *Storage) SetupConversionRates()
SetupConversionRates sets default conversion rate values
func (*Storage) SetupForexProviders ¶
SetupForexProviders sets up a new instance of the forex providers
func (*Storage) Shutdown ¶
Shutdown shuts down the currency storage system and saves to currency.json
func (*Storage) UpdateBaseCurrency ¶
UpdateBaseCurrency changes base currency
func (*Storage) UpdateCurrencies ¶
UpdateCurrencies updates currency role and information using coin market cap
func (*Storage) UpdateEnabledCryptoCurrencies ¶
func (s *Storage) UpdateEnabledCryptoCurrencies(c Currencies)
UpdateEnabledCryptoCurrencies appends new cryptocurrencies to the enabled currency list
func (*Storage) UpdateEnabledFiatCurrencies ¶
func (s *Storage) UpdateEnabledFiatCurrencies(c Currencies)
UpdateEnabledFiatCurrencies appends new fiat currencies to the enabled currency list
func (*Storage) ValidateCode ¶
ValidateCode validates string against currency list and returns a currency code
func (*Storage) ValidateFiatCode ¶
ValidateFiatCode validates a fiat currency string and returns a currency code
type SystemsSettings ¶
type SystemsSettings struct { Coinmarketcap coinmarketcap.Settings Currencyconverter FXSettings Currencylayer FXSettings Fixer FXSettings Openexchangerates FXSettings }
SystemsSettings defines incoming system settings
type Translations ¶
Translations is a map of translations for a specific exchange implementation
func NewTranslations ¶
func NewTranslations(t map[Code]Code) Translations
NewTranslations returns a new translation map, the key indicates the exchange representation and the value indicates the internal representation/common/standard representation. e.g. XBT as key and BTC as value, this is useful for exchanges that use different naming conventions. TODO: Expand for specific assets.
func (Translations) Translate ¶
func (t Translations) Translate(incoming Code) Code
Translate returns the translated currency code, usually used to convert exchange specific currency codes to common currency codes. If no translation is found it will return the original currency code. TODO: Add TranslateToCommon and TranslateToExchange methods to allow for translation to and from exchange specific currency codes.
type Translator ¶
type Translator interface { // TODO: Add a asset.Item param so that we can translate for asset // permutations. Also return error. Translate(Code) Code }
Translator is an interface for translating currency codes
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package coinmarketcap connects to a suite of high-performance RESTful JSON endpoints that are specifically designed to meet the mission-critical demands of application developers, data scientists, and enterprise business platforms.
|
Package coinmarketcap connects to a suite of high-performance RESTful JSON endpoints that are specifically designed to meet the mission-critical demands of application developers, data scientists, and enterprise business platforms. |
Package forexprovider utilises foreign exchange API services to manage relational FIAT currencies
|
Package forexprovider utilises foreign exchange API services to manage relational FIAT currencies |
currencyconverterapi
Package currencyconverter package https://free.currencyconverterapi.com/
|
Package currencyconverter package https://free.currencyconverterapi.com/ |
currencylayer
Package currencylayer provides a simple REST API with real-time and historical exchange rates for 168 world currencies, delivering currency pairs in universally usable JSON format - compatible with any of your applications.
|
Package currencylayer provides a simple REST API with real-time and historical exchange rates for 168 world currencies, delivering currency pairs in universally usable JSON format - compatible with any of your applications. |