Skip to content
This repository has been archived by the owner on Jul 19, 2024. It is now read-only.

[#55] add 'quote_asset' and 'order_by' args to get_markets_list() metho... #61

Merged
merged 1 commit into from
Sep 29, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1418,8 +1418,8 @@ def get_market_trades(asset1, asset2, addresses=[], limit=100):
return dex.get_market_trades(asset1, asset2, addresses, limit)

@dispatcher.add_method
def get_markets_list():
return dex.get_markets_list(mongo_db)
def get_markets_list(quote_asset = None, order_by=None):
return dex.get_markets_list(mongo_db, quote_asset=quote_asset, order_by=order_by)

@dispatcher.add_method
def get_market_details(asset1, asset2, min_fee_provided=0.95, max_fee_required=0.95):
Expand Down
17 changes: 12 additions & 5 deletions lib/components/dex.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,12 @@ def get_pairs(quote_asset='XCP', exclude_pairs=[], max_pairs=12, from_time=None)
return util.call_jsonrpc_api('sql', {'query': sql, 'bindings': bindings})['result']


def get_quotation_pairs(exclude_pairs=[], max_pairs=12, from_time=None):
def get_quotation_pairs(exclude_pairs=[], max_pairs=12, from_time=None, include_currencies=[]):

all_pairs = []
currencies = include_currencies if len(include_currencies) > 0 else config.MARKET_LIST_QUOTE_ASSETS

for currency in config.MARKET_LIST_QUOTE_ASSETS:
for currency in currencies:
currency_pairs = get_pairs(quote_asset=currency, exclude_pairs=exclude_pairs, max_pairs=max_pairs, from_time=from_time)
max_pairs = max_pairs - len(currency_pairs)
for currency_pair in currency_pairs:
Expand Down Expand Up @@ -466,18 +467,19 @@ def get_price_movement(base_asset, quote_asset, supplies=None):
return price, trend, price24h, progression

@util.block_cache
def get_markets_list(mongo_db=None):
def get_markets_list(mongo_db=None, quote_asset=None, order_by=None):

yesterday = int(time.time() - (24*60*60))
markets = []
pairs = []
currencies = [] if not quote_asset else [quote_asset]

# pairs with volume last 24h
pairs += get_quotation_pairs(exclude_pairs=[], max_pairs=500, from_time=yesterday)
pairs += get_quotation_pairs(exclude_pairs=[], max_pairs=500, from_time=yesterday, include_currencies=currencies)
pair_with_volume = [p['pair'] for p in pairs]

# pairs without volume last 24h
pairs += get_quotation_pairs(exclude_pairs=pair_with_volume, max_pairs=500 - len(pair_with_volume))
pairs += get_quotation_pairs(exclude_pairs=pair_with_volume, max_pairs=500 - len(pair_with_volume), include_currencies=currencies)

base_assets = [p['base_asset'] for p in pairs]
quote_assets = [p['quote_asset'] for p in pairs]
Expand Down Expand Up @@ -511,6 +513,11 @@ def get_markets_list(mongo_db=None):
else:
markets.append(market)

if order_by in ['price', 'progression', 'supply', 'market_cap']:
markets = sorted(markets, key=lambda x: D(x[order_by]), reverse=True)
elif order_by in ['base_asset', 'quote_asset']:
markets = sorted(markets, key=lambda x: x['order_by'])

for m in range(len(markets)):
markets[m]['pos'] = m + 1

Expand Down