From 31efa4f35ef09404013d1ff5866efc1fd1f4a565 Mon Sep 17 00:00:00 2001 From: Ryan O'Hara-Reid Date: Mon, 8 May 2023 15:41:49 +1000 Subject: [PATCH] poloniex: filter non-liquid and unused assets (#1185) * poloniex: filter non-liquid and unused assets * glorious: nits --------- Co-authored-by: Ryan O'Hara-Reid --- exchanges/lbank/lbank_wrapper.go | 1 - exchanges/poloniex/poloniex_test.go | 8 ++++++++ exchanges/poloniex/poloniex_wrapper.go | 14 +++++++++----- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/exchanges/lbank/lbank_wrapper.go b/exchanges/lbank/lbank_wrapper.go index 59e14aa7..4a5b85c4 100644 --- a/exchanges/lbank/lbank_wrapper.go +++ b/exchanges/lbank/lbank_wrapper.go @@ -99,7 +99,6 @@ func (l *Lbank) SetDefaults() { kline.IntervalCapacity{Interval: kline.ThirtyMin}, kline.IntervalCapacity{Interval: kline.OneHour}, kline.IntervalCapacity{Interval: kline.FourHour}, - // NOTE: The supported time intervals below are returned // offset to the Asia/HongKong time zone. This may lead to // issues with candle quality and conversion as the diff --git a/exchanges/poloniex/poloniex_test.go b/exchanges/poloniex/poloniex_test.go index d82fdc14..01460094 100644 --- a/exchanges/poloniex/poloniex_test.go +++ b/exchanges/poloniex/poloniex_test.go @@ -1061,3 +1061,11 @@ func TestGetAvailableTransferChains(t *testing.T) { t.Fatal(err) } } + +func TestFetchTradablePairs(t *testing.T) { + t.Parallel() + _, err := p.FetchTradablePairs(context.Background(), asset.Spot) + if err != nil { + t.Error(err) + } +} diff --git a/exchanges/poloniex/poloniex_wrapper.go b/exchanges/poloniex/poloniex_wrapper.go index d34ec400..230748c6 100644 --- a/exchanges/poloniex/poloniex_wrapper.go +++ b/exchanges/poloniex/poloniex_wrapper.go @@ -265,21 +265,25 @@ func (p *Poloniex) Run(ctx context.Context) { // FetchTradablePairs returns a list of the exchanges tradable pairs func (p *Poloniex) FetchTradablePairs(ctx context.Context, _ asset.Item) (currency.Pairs, error) { + // TODO: Upgrade to new API version for fetching operational pairs. resp, err := p.GetTicker(ctx) if err != nil { return nil, err } - pairs := make([]currency.Pair, len(resp)) - var target int - for key := range resp { + pairs := make([]currency.Pair, 0, len(resp)) + for key, info := range resp { + // Poloniex returns 0 for highest bid and lowest ask if support has been + // dropped from the front end. We don't want to add these pairs. + if info.HighestBid == 0 || info.LowestAsk == 0 { + continue + } var pair currency.Pair pair, err = currency.NewPairFromString(key) if err != nil { return nil, err } - pairs[target] = pair - target++ + pairs = append(pairs, pair) } return pairs, nil }