Documentation ¶
Index ¶
- Constants
- Variables
- func ConvertCurrency(amount float64, from, to Code) (float64, error)
- func GetSymbolByCurrencyName(currency Code) (string, error)
- func RunStorageUpdater(o BotOverrides, m *MainConfiguration, filepath string) error
- func SeedForeignExchangeData(c Currencies) error
- func ShutdownStorageUpdater() error
- func UpdateBaseCurrency(c Code) error
- func UpdateCurrencies(c Currencies, isCryptocurrency bool)
- type BaseCodes
- func (b *BaseCodes) GetCurrencies() Currencies
- func (b *BaseCodes) GetFullCurrencyData() (File, error)
- func (b *BaseCodes) HasData() bool
- func (b *BaseCodes) LoadItem(item *Item) error
- func (b *BaseCodes) Register(c string) Code
- func (b *BaseCodes) RegisterFiat(c string) Code
- func (b *BaseCodes) UpdateCurrency(fullName, symbol, blockchain string, id int, r Role) error
- type BotOverrides
- type Code
- func (c Code) IsCryptocurrency() bool
- func (c Code) IsDefaultCryptocurrency() bool
- func (c Code) IsDefaultFiatCurrency() bool
- func (c Code) IsEmpty() bool
- func (c Code) IsFiatCurrency() bool
- func (c Code) Lower() Code
- func (c Code) MarshalJSON() ([]byte, error)
- func (c Code) Match(check Code) bool
- func (c Code) String() string
- func (c *Code) UnmarshalJSON(d []byte) error
- func (c Code) Upper() Code
- type CoinmarketcapSettings
- 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) Contains(cc 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 Item
- type MainConfiguration
- type Pair
- func CopyPairFormat(p Pair, pairs []Pair, exact bool) Pair
- func MatchPairsWithNoDelimiter(currencyPair string, pairs Pairs, pairFmt PairFormat) (Pair, error)
- func NewPair(baseCurrency, quoteCurrency Code) Pair
- func NewPairDelimiter(currencyPair, delimiter string) (Pair, error)
- func NewPairFromFormattedPairs(currencyPair string, pairs Pairs, pairFmt PairFormat) (Pair, error)
- func NewPairFromIndex(currencyPair, index string) (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) ContainsCurrency(c Code) bool
- func (p Pair) Equal(cPair Pair) bool
- func (p Pair) EqualIncludeReciprocal(cPair Pair) bool
- func (p Pair) Format(delimiter string, uppercase bool) Pair
- func (p Pair) IsCryptoFiatPair() bool
- func (p Pair) IsCryptoPair() bool
- func (p Pair) IsEmpty() bool
- func (p Pair) IsFiatPair() bool
- func (p Pair) IsInvalid() bool
- func (p Pair) Lower() Pair
- func (p Pair) MarshalJSON() ([]byte, error)
- func (p Pair) String() string
- func (p Pair) Swap() Pair
- func (p *Pair) UnmarshalJSON(d []byte) error
- func (p Pair) Upper() Pair
- type PairFormat
- type PairStore
- type Pairs
- func (p Pairs) Add(pair Pair) Pairs
- func (p Pairs) Contains(check Pair, exact bool) bool
- func (p Pairs) FindDifferences(pairs Pairs) (newPairs, removedPairs Pairs)
- func (p Pairs) Format(delimiter, index string, uppercase bool) Pairs
- func (p Pairs) GetRandomPair() Pair
- func (p Pairs) Join() string
- func (p Pairs) MarshalJSON() ([]byte, error)
- func (p Pairs) Remove(pair 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
- 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) Get(a asset.Item) (*PairStore, error)
- func (p *PairsManager) GetAssetTypes(enabled bool) asset.Items
- func (p *PairsManager) GetPairs(a asset.Item, enabled bool) (Pairs, error)
- func (p *PairsManager) IsAssetEnabled(a asset.Item) error
- func (p *PairsManager) SetAssetEnabled(a asset.Item, enabled bool) error
- func (p *PairsManager) Store(a asset.Item, ps PairStore)
- func (p *PairsManager) StorePairs(a asset.Item, pairs Pairs, enabled bool)
- 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) IsCryptocurrency(c Code) bool
- func (s *Storage) IsDefaultCryptocurrency(c Code) bool
- func (s *Storage) IsDefaultCurrency(c Code) bool
- func (s *Storage) IsFiatCurrency(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 *MainConfiguration, 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 ...Code) error
- func (s *Storage) SetDefaultFiatCurrencies(c ...Code) error
- func (s *Storage) SetDefaults()
- func (s *Storage) SetupConversionRates()
- func (s *Storage) SetupCryptoProvider(settings coinmarketcap.Settings) error
- 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) ValidateCryptoCode(newCode string) Code
- func (s *Storage) ValidateFiatCode(newCode string) Code
- func (s *Storage) WriteCurrencyDataToFile(path string, mainUpdate bool) error
- type SystemsSettings
Constants ¶
const ( Unset Role = 0 Fiat Role = 1 << (iota - 1) Cryptocurrency Token Contract UnsetRoleString = "roleUnset" FiatCurrencyString = "fiatCurrency" CryptocurrencyString = "cryptocurrency" TokenString = "token" ContractString = "contract" )
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 ( 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") 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") 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") 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") 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") 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") UST = NewCode("UST") )
Const declarations for individual currencies/tokens/fiat An ever growing list. Cares not for equivalence, just is
var ( // ErrAssetAlreadyEnabled defines an error for the pairs management system // that declares the asset is already enabled. ErrAssetAlreadyEnabled = errors.New("asset already enabled") // ErrPairAlreadyEnabled returns when enabling a pair that is already enabled ErrPairAlreadyEnabled = errors.New("pair already enabled") // ErrPairNotFound is returned when a currency pair is not found ErrPairNotFound = errors.New("pair not found") )
Functions ¶
func ConvertCurrency ¶
ConvertCurrency converts an amount from one currency to another
func GetSymbolByCurrencyName ¶
GetSymbolByCurrencyName returns a currency symbol
func RunStorageUpdater ¶
func RunStorageUpdater(o BotOverrides, m *MainConfiguration, 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 BaseCodes ¶
type BaseCodes struct { Items []*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
func (*BaseCodes) RegisterFiat ¶
RegisterFiat registers a fiat currency from a string and returns a currency code
type BotOverrides ¶
type BotOverrides struct { Coinmarketcap bool FxCurrencyConverter bool FxCurrencyLayer bool FxFixer bool FxOpenExchangeRates bool FxExchangeRateHost bool }
BotOverrides defines a bot overriding factor for quick running currency subsystems
type Code ¶
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.
func (Code) IsDefaultCryptocurrency ¶
IsDefaultCryptocurrency checks if the currency passed in matches the default cryptocurrency
func (Code) IsDefaultFiatCurrency ¶
IsDefaultFiatCurrency checks if the currency passed in matches the default fiat currency
func (Code) IsFiatCurrency ¶
IsFiatCurrency checks if the currency passed is an enabled fiat currency
func (Code) MarshalJSON ¶
MarshalJSON conforms type to the marshaler interface
func (*Code) UnmarshalJSON ¶
UnmarshalJSON comforms type to the umarshaler interface
type CoinmarketcapSettings ¶
type CoinmarketcapSettings coinmarketcap.Settings
CoinmarketcapSettings refers to settings
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) Contains ¶
func (c Currencies) Contains(cc 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 comforms type to the umarshaler interface
type FXSettings ¶
type FXSettings struct { Name string `json:"name"` Enabled bool `json:"enabled"` Verbose bool `json:"verbose"` RESTPollingDelay time.Duration `json:"restPollingDelay"` 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"` }
File defines a full currency file generated by the currency storage analysis system
type Item ¶
type Item struct { ID int `json:"id,omitempty"` FullName string `json:"fullName,omitempty"` Symbol string `json:"symbol"` Role Role `json:"-"` AssocChain string `json:"associatedBlockchain,omitempty"` }
Item defines a sub type containing the main attributes of a designated currency code pointer
type MainConfiguration ¶
type MainConfiguration struct { ForexProviders []FXSettings CryptocurrencyProvider coinmarketcap.Settings Cryptocurrencies Currencies CurrencyPairFormat interface{} FiatDisplayCurrency Code CurrencyDelay time.Duration FxRateDelay time.Duration }
MainConfiguration is the main configuration from the config.json file
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
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 delimeter, the 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 NewPairFromIndex ¶
NewPairFromIndex returns a CurrencyPair via a currency string and specific index
func NewPairFromString ¶
NewPairFromString converts currency string into a new CurrencyPair with or without delimeter
func NewPairFromStrings ¶
NewPairFromStrings returns a CurrencyPair without a delimiter
func NewPairWithDelimiter ¶
NewPairWithDelimiter returns a CurrencyPair with a delimiter
func (Pair) ContainsCurrency ¶
ContainsCurrency checks to see if a pair contains a specific currency
func (Pair) EqualIncludeReciprocal ¶
EqualIncludeReciprocal compares two currency pairs and returns whether or not they are the same including reciprocal currencies.
func (Pair) Format ¶
Format changes the currency based on user preferences overriding the default String() display
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) 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) MarshalJSON ¶
MarshalJSON conforms type to the marshaler interface
func (*Pair) UnmarshalJSON ¶
UnmarshalJSON comforms type to the umarshaler interface
type PairFormat ¶
type PairFormat struct { Uppercase bool `json:"uppercase"` Delimiter string `json:"delimiter,omitempty"` Separator string `json:"separator,omitempty"` Index string `json:"index,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 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) FindDifferences ¶
FindDifferences returns pairs which are new or have been removed
func (Pairs) GetRandomPair ¶
GetRandomPair returns a random pair from a list of pairs
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 comforms type to the umarshaler interface
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 map[asset.Item]*PairStore `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) 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) 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) 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) Store ¶
func (p *PairsManager) Store(a asset.Item, ps PairStore)
Store stores a new currency pair config based on its asset type
func (*PairsManager) StorePairs ¶
func (p *PairsManager) StorePairs(a asset.Item, pairs Pairs, enabled bool)
StorePairs stores a list of pairs based on the asset type and whether they're enabled or not
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) 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) IsCryptocurrency ¶
IsCryptocurrency returns if a cryptocurrency is part of the enabled cryptocurrency list
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) IsFiatCurrency ¶
IsFiatCurrency returns if a currency is part of the enabled fiat currency list
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 *MainConfiguration, 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 ¶
SetDefaultCryptocurrencies assigns the default cryptocurrency list and adds it to the running list
func (*Storage) SetDefaultFiatCurrencies ¶
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) SetupConversionRates ¶
func (s *Storage) SetupConversionRates()
SetupConversionRates sets default conversion rate values
func (*Storage) SetupCryptoProvider ¶
func (s *Storage) SetupCryptoProvider(settings coinmarketcap.Settings) error
SetupCryptoProvider sets congiguration parameters and starts a new instance of the currency analyser
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) ValidateCryptoCode ¶
ValidateCryptoCode validates a cryptocurrency string and returns a currency code TODO: Update and add in RegisterCrypto member func
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
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. |