From 052b5c2f28e1f358625474c369560944d4ab3f75 Mon Sep 17 00:00:00 2001 From: Adrian Gallagher Date: Sat, 23 Mar 2019 17:35:45 +1100 Subject: [PATCH] bugfix: improve orderbook/ticker and currency logic --- currency/storage.go | 8 ++++++++ exchanges/exmo/exmo_wrapper.go | 3 +-- exchanges/kraken/kraken_wrapper.go | 2 +- exchanges/poloniex/poloniex_wrapper.go | 3 +-- helpers_test.go | 8 ++++++++ 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/currency/storage.go b/currency/storage.go index 08fefcce..50f4ebcf 100644 --- a/currency/storage.go +++ b/currency/storage.go @@ -581,6 +581,10 @@ func (s *Storage) IsFiatCurrency(c Code) bool { return c.Item.Role == Fiat } + if c == USDT { + return false + } + t, _ := GetTranslation(c) for _, d := range s.fiatCurrencies { if d.Match(c) || d.Match(t) { @@ -598,6 +602,10 @@ func (s *Storage) IsCryptocurrency(c Code) bool { return c.Item.Role == Cryptocurrency } + if c == USD { + return false + } + t, _ := GetTranslation(c) for _, d := range s.cryptocurrencies { if d.Match(c) || d.Match(t) { diff --git a/exchanges/exmo/exmo_wrapper.go b/exchanges/exmo/exmo_wrapper.go index d0fa3eb1..6c1197ea 100644 --- a/exchanges/exmo/exmo_wrapper.go +++ b/exchanges/exmo/exmo_wrapper.go @@ -124,7 +124,6 @@ func (e *EXMO) UpdateOrderbook(p currency.Pair, assetType string) (orderbook.Bas if !ok { continue } - orderBook.Pair = x var obItems []orderbook.Item for y := range data.Ask { @@ -144,7 +143,7 @@ func (e *EXMO) UpdateOrderbook(p currency.Pair, assetType string) (orderbook.Bas } orderBook.Bids = obItems - orderBook.Pair = p + orderBook.Pair = x orderBook.ExchangeName = e.GetName() orderBook.AssetType = assetType diff --git a/exchanges/kraken/kraken_wrapper.go b/exchanges/kraken/kraken_wrapper.go index 48fa1cd5..d9883689 100644 --- a/exchanges/kraken/kraken_wrapper.go +++ b/exchanges/kraken/kraken_wrapper.go @@ -97,7 +97,7 @@ func (k *Kraken) UpdateTicker(p currency.Pair, assetType string) (ticker.Price, for _, x := range pairs { for y, z := range tickers { - if !common.StringContains(y, x.Base.Upper().String()) && + if !common.StringContains(y, x.Base.Upper().String()) || !common.StringContains(y, x.Quote.Upper().String()) { continue } diff --git a/exchanges/poloniex/poloniex_wrapper.go b/exchanges/poloniex/poloniex_wrapper.go index 97ca9cec..fb369c4b 100644 --- a/exchanges/poloniex/poloniex_wrapper.go +++ b/exchanges/poloniex/poloniex_wrapper.go @@ -115,7 +115,6 @@ func (p *Poloniex) UpdateOrderbook(currencyPair currency.Pair, assetType string) if !ok { continue } - orderBook.Pair = x var obItems []orderbook.Item for y := range data.Bids { @@ -132,7 +131,7 @@ func (p *Poloniex) UpdateOrderbook(currencyPair currency.Pair, assetType string) orderbook.Item{Amount: obData.Amount, Price: obData.Price}) } - orderBook.Pair = currencyPair + orderBook.Pair = x orderBook.Asks = obItems orderBook.ExchangeName = p.GetName() orderBook.AssetType = assetType diff --git a/helpers_test.go b/helpers_test.go index 0e3a3dbc..51b6db09 100644 --- a/helpers_test.go +++ b/helpers_test.go @@ -168,6 +168,14 @@ func TestIsRelatablePairs(t *testing.T) { if !result { t.Fatal("Unexpected result") } + + // Test edge case between two pairs when currency translations were causing + // non-relational pairs to be relatable + result = IsRelatablePairs(currency.NewPairFromStrings("EUR", "USD"), + currency.NewPairFromStrings("BTC", "USD"), false) + if result { + t.Fatal("Unexpected result") + } } func TestGetRelatableCryptocurrencies(t *testing.T) {