From 9ecad9859ac66fdcb0ee1292096e85d6a5044173 Mon Sep 17 00:00:00 2001 From: TheHolyRoger Date: Sun, 28 Feb 2021 16:26:24 +0000 Subject: [PATCH] AltMarkets: Fix `get_last_traded_prices` --- .../altmarkets_api_order_book_data_source.py | 17 ++++++++++++----- .../exchange/altmarkets/altmarkets_constants.py | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/hummingbot/connector/exchange/altmarkets/altmarkets_api_order_book_data_source.py b/hummingbot/connector/exchange/altmarkets/altmarkets_api_order_book_data_source.py index 70b06e174f..78fab9ee12 100644 --- a/hummingbot/connector/exchange/altmarkets/altmarkets_api_order_book_data_source.py +++ b/hummingbot/connector/exchange/altmarkets/altmarkets_api_order_book_data_source.py @@ -6,6 +6,7 @@ import logging import pandas as pd import time +from decimal import Decimal from typing import ( Any, AsyncIterable, @@ -42,13 +43,19 @@ def __init__(self, trading_pairs: List[str]): super().__init__(trading_pairs) @classmethod - async def get_last_traded_prices(cls, trading_pairs: List[str]) -> Dict[str, float]: + async def get_last_traded_prices(cls, trading_pairs: List[str]) -> Dict[str, Decimal]: results = dict() # Altmarkets rate limit is 100 https requests per 10 seconds - resp_json = await generic_api_request("get", Constants.TICKER_URI) - for trading_pair in trading_pairs: - resp_record = [resp_json[symbol] for symbol in list(resp_json.keys()) if symbol == convert_to_exchange_trading_pair(trading_pair)][0]['ticker'] - results[trading_pair] = float(resp_record["last"]) + if len(trading_pairs) == 1: + for trading_pair in trading_pairs: + ex_pair = convert_to_exchange_trading_pair(trading_pair) + resp_json = await generic_api_request("get", Constants.TICKER_SINGLE_URI.format(trading_pair=ex_pair)) + results[trading_pair] = Decimal(str(resp_json['ticker']["last"])) + else: + resp_json = await generic_api_request("get", Constants.TICKER_URI) + for trading_pair in trading_pairs: + ex_pair = convert_to_exchange_trading_pair(trading_pair) + results[trading_pair] = Decimal(str(resp_json[ex_pair]["ticker"]["last"])) return results # Deprecated get_mid_price function - mid price is pulled from order book now. diff --git a/hummingbot/connector/exchange/altmarkets/altmarkets_constants.py b/hummingbot/connector/exchange/altmarkets/altmarkets_constants.py index baa85834ca..02bcd7c6c8 100644 --- a/hummingbot/connector/exchange/altmarkets/altmarkets_constants.py +++ b/hummingbot/connector/exchange/altmarkets/altmarkets_constants.py @@ -12,6 +12,7 @@ class Constants: TIMESTAMP_URI = "public/timestamp" SYMBOLS_URI = "public/markets" TICKER_URI = "public/markets/tickers" + TICKER_SINGLE_URI = "public/markets/{trading_pair}/tickers" DEPTH_URI = "public/markets/{trading_pair}/depth?limit=300" # # Private GET ACCOUNTS_BALANCE_URI = "account/balances"