def _get_account_id(account_name): if not _is_object(account_name): account = deex_ws_client.request('database', 'lookup_account_names', [[account_name], 0]) return account[0]['id'] else: return account_name
def _get_accounts_by_chunks_via_ws(account_ids, chunk_size=1000): all_accounts = [] for i in xrange(0, len(account_ids), chunk_size): accounts = deex_ws_client.request('database', 'get_accounts', [account_ids[i:i + chunk_size]]) all_accounts.extend(accounts) return all_accounts
def get_workers_votes(): proxies = get_top_proxies() proxies = proxies[:10] proxies = deex_ws_client.request('database', 'get_objects', [[p['id'] for p in proxies]]) workers = get_workers() workers = workers[:30] workers_votes = [] for worker in workers: vote_id = worker[0]["vote_for"] id_worker = worker[0]["id"] worker_account_name = worker[0]["worker_account_name"] worker_name = worker[0]["name"] proxy_votes = _get_formatted_proxy_votes(proxies, vote_id) workers_votes.append({ 'worker_account_name': worker_account_name, 'worker_id': id_worker, 'worker_name': worker_name, 'top_proxy_votes': proxy_votes }) return workers_votes
def get_witnesses(): witnesses_count = deex_ws_client.request('database', 'get_witness_count', []) witnesses = deex_ws_client.request( 'database', 'get_objects', [['1.6.{}'.format(w) for w in range(0, witnesses_count)]]) result = [] for witness in witnesses: if witness: witness["witness_account_name"] = get_account_name( witness["witness_account"]) result.append(witness) result = sorted(result, key=lambda k: int(k['total_votes'])) result = result[::-1] # Reverse list. return result
def get_committee_members(): committee_count = deex_ws_client.request('database', 'get_committee_count', []) committee_members = deex_ws_client.request( 'database', 'get_objects', [['1.5.{}'.format(i) for i in range(0, committee_count)]]) result = [] for committee_member in committee_members: if committee_member: committee_member[ "committee_member_account_name"] = get_account_name( committee_member["committee_member_account"]) result.append([committee_member]) result = sorted(result, key=lambda k: int(k[0]['total_votes'])) result = result[::-1] # this reverses array return result
def get_asset(asset_id): asset = None if not _is_object(asset_id): asset = deex_ws_client.request('database', 'lookup_asset_symbols', [[asset_id], 0])[0] else: asset = deex_ws_client.request('database', 'get_assets', [[asset_id], 0])[0] dynamic_asset_data = deex_ws_client.get_object( asset["dynamic_asset_data_id"]) asset["current_supply"] = dynamic_asset_data["current_supply"] asset["confidential_supply"] = dynamic_asset_data["confidential_supply"] asset["accumulated_fees"] = dynamic_asset_data["accumulated_fees"] asset["fee_pool"] = dynamic_asset_data["fee_pool"] issuer = deex_ws_client.get_object(asset["issuer"]) asset["issuer_name"] = issuer["name"] return asset
def get_grouped_limit_orders(quote, base, group=10, limit=False): limit = _ensure_safe_limit(limit) base = _ensure_asset_id(base) quote = _ensure_asset_id(quote) grouped_limit_orders = deex_ws_client.request( 'orders', 'get_grouped_limit_orders', [base, quote, group, None, limit]) return grouped_limit_orders
def _load_next_market_history(base_id, base_precision, quote_id, quote_precision, invert, buckets, from_, to_, results): history = deex_ws_client.request('history', 'get_market_history', [base_id, quote_id, buckets, from_, to_]) for quote in history: open_quote = float(quote["open_quote"]) high_quote = float(quote["high_quote"]) low_quote = float(quote["low_quote"]) close_quote = float(quote["close_quote"]) close_quote = float(quote["close_quote"]) quote_volume = int(quote["quote_volume"]) open_base = float(quote["open_base"]) high_base = float(quote["high_base"]) low_base = float(quote["low_base"]) close_base = float(quote["close_base"]) base_volume = int(quote["base_volume"]) if invert: open = 1 / (float(open_base / quote_precision) / float(open_quote / base_precision)) high = 1 / (float(high_base / quote_precision) / float(high_quote / base_precision)) low = 1 / (float(low_base / quote_precision) / float(low_quote / base_precision)) close = 1 / (float(close_base / quote_precision) / float(close_quote / base_precision)) volume = base_volume else: open = (float(open_base / base_precision) / float(open_quote / quote_precision)) high = (float(high_base / base_precision) / float(high_quote / quote_precision)) low = (float(low_base / base_precision) / float(low_quote / quote_precision)) close = (float(close_base / base_precision) / float(close_quote / quote_precision)) volume = quote_volume results['c'].append(close) results['o'].append(open) results['h'].append(high) results['l'].append(low) results['v'].append(volume) date = datetime.strptime(quote["key"]["open"], "%Y-%m-%dT%H:%M:%S") ts = calendar.timegm(date.utctimetuple()) results['t'].append(ts) return len(history)
def get_workers(): workers_count = deex_ws_client.request('database', 'get_worker_count', []) workers = deex_ws_client.request( 'database', 'get_objects', [['1.14.{}'.format(i) for i in range(0, workers_count)]]) # get the votes of worker 1.14.0 - refund 400k refund400k = deex_ws_client.get_object("1.14.0") thereshold = int(refund400k["total_votes_for"]) result = [] for worker in workers: if worker: worker["worker_account_name"] = get_account_name( worker["worker_account"]) current_votes = int(worker["total_votes_for"]) perc = (current_votes * 100) / thereshold worker["perc"] = perc result.append([worker]) result = result[::-1] # Reverse list. return result
def get_market_chart_data(base, quote): base_id, base_precision = _get_asset_id_and_precision(base) quote_id, quote_precision = _get_asset_id_and_precision(quote) now = datetime.date.today() ago = now - datetime.timedelta(days=100) market_history = deex_ws_client.request('history', 'get_market_history', [ base_id, quote_id, 86400, ago.strftime("%Y-%m-%dT%H:%M:%S"), now.strftime("%Y-%m-%dT%H:%M:%S") ]) data = [] for market_operation in market_history: open_quote = float(market_operation["open_quote"]) high_quote = float(market_operation["high_quote"]) low_quote = float(market_operation["low_quote"]) close_quote = float(market_operation["close_quote"]) open_base = float(market_operation["open_base"]) high_base = float(market_operation["high_base"]) low_base = float(market_operation["low_base"]) close_base = float(market_operation["close_base"]) open = 1 / (float(open_base / base_precision) / float(open_quote / quote_precision)) high = 1 / (float(high_base / base_precision) / float(high_quote / quote_precision)) low = 1 / (float(low_base / base_precision) / float(low_quote / quote_precision)) close = 1 / (float(close_base / base_precision) / float(close_quote / quote_precision)) ohlc = [open, close, low, high] data.append(ohlc) append = [0, 0, 0, 0] if len(data) < 99: complete = 99 - len(data) for c in range(0, complete): data.insert(0, append) return data
def get_witnesses_votes(): proxies = get_top_proxies() proxies = proxies[:10] proxies = deex_ws_client.request('database', 'get_objects', [[p['id'] for p in proxies]]) witnesses = get_witnesses() witnesses = witnesses[:25] # FIXME: Witness number is variable. witnesses_votes = [] for witness in witnesses: vote_id = witness["vote_id"] id_witness = witness["id"] witness_account_name = witness["witness_account_name"] proxy_votes = _get_formatted_proxy_votes(proxies, vote_id) witnesses_votes.append({ 'witness_account_name': witness_account_name, 'witness_id': id_witness, 'top_proxy_votes': proxy_votes }) return witnesses_votes
def get_committee_votes(): proxies = get_top_proxies() proxies = proxies[:10] proxies = deex_ws_client.request('database', 'get_objects', [[p['id'] for p in proxies]]) committee_members = get_committee_members() committee_members = committee_members[:11] committee_votes = [] for committee_member in committee_members: vote_id = committee_member[0]["vote_id"] id_committee = committee_member[0]["id"] committee_account_name = committee_member[0][ "committee_member_account_name"] proxy_votes = _get_formatted_proxy_votes(proxies, vote_id) committee_votes.append({ 'committee_account_name': committee_account_name, 'committee_id': id_committee, 'top_proxy_votes': proxy_votes }) return committee_votes
def lookup_accounts(start): accounts = deex_ws_client.request('database', 'lookup_accounts', [start, 1000]) return accounts
def get_full_account(account_id): account = deex_ws_client.request('database', 'get_full_accounts', [[account_id], 0])[0][1] return account
def _get_asset_id_and_precision(asset_name): asset = deex_ws_client.request('database', 'lookup_asset_symbols', [[asset_name], 0])[0] return (asset["id"], 10**asset["precision"])
def get_asset_holders_count(asset_id): asset_id = _ensure_asset_id(asset_id) return deex_ws_client.request('asset', 'get_asset_holders_count', [asset_id])
def get_fill_order_history(base, quote): fill_order_history = deex_ws_client.request('history', 'get_fill_order_history', [base, quote, 100]) return fill_order_history
def get_ticker(base, quote): return deex_ws_client.request('database', 'get_ticker', [base, quote])
def _get_volume(base, quote): return deex_ws_client.request('database', 'get_24_volume', [base, quote])
def get_time(): dynamic_global_properties = deex_ws_client.request( 'database', 'get_dynamic_global_properties', []) date = datetime.strptime(dynamic_global_properties["time"], "%Y-%m-%dT%H:%M:%S") return str(calendar.timegm(date.utctimetuple()))
def get_order_book(base, quote, limit=False): limit = _ensure_safe_limit(limit) order_book = deex_ws_client.request('database', 'get_order_book', [base, quote, limit]) return order_book
def get_account(account_id): return deex_ws_client.request('database', 'get_accounts', [[account_id]])[0]
def get_asset_holders(asset_id, start=0, limit=20): asset_id = _ensure_asset_id(asset_id) asset_holders = deex_ws_client.request('asset', 'get_asset_holders', [asset_id, start, limit]) return asset_holders
def get_last_block_number(): dynamic_global_properties = deex_ws_client.request( 'database', 'get_dynamic_global_properties', []) return dynamic_global_properties["head_block_number"]
def get_last_block_time(): dynamic_global_properties = deex_ws_client.request( 'database', 'get_dynamic_global_properties', []) return dynamic_global_properties["time"]
def get_block(block_num): block = deex_ws_client.request('database', 'get_block', [block_num, 0]) return block
def get_margin_positions(account_id): margin_positions = deex_ws_client.request('database', 'get_margin_positions', [account_id]) return margin_positions
def get_header(): response = deex_ws_client.request('database', 'get_dynamic_global_properties', []) return _add_global_informations(response, deex_ws_client)