示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
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
示例#8
0
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)
示例#9
0
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
示例#10
0
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
示例#11
0
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
示例#12
0
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
示例#13
0
def lookup_accounts(start):
    accounts = deex_ws_client.request('database', 'lookup_accounts',
                                      [start, 1000])
    return accounts
示例#14
0
def get_full_account(account_id):
    account = deex_ws_client.request('database', 'get_full_accounts',
                                     [[account_id], 0])[0][1]
    return account
示例#15
0
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"])
示例#16
0
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])
示例#17
0
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
示例#18
0
def get_ticker(base, quote):
    return deex_ws_client.request('database', 'get_ticker', [base, quote])
示例#19
0
def _get_volume(base, quote):
    return deex_ws_client.request('database', 'get_24_volume', [base, quote])
示例#20
0
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()))
示例#21
0
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
示例#22
0
def get_account(account_id):
    return deex_ws_client.request('database', 'get_accounts',
                                  [[account_id]])[0]
示例#23
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
示例#24
0
def get_last_block_number():
    dynamic_global_properties = deex_ws_client.request(
        'database', 'get_dynamic_global_properties', [])
    return dynamic_global_properties["head_block_number"]
示例#25
0
def get_last_block_time():
    dynamic_global_properties = deex_ws_client.request(
        'database', 'get_dynamic_global_properties', [])
    return dynamic_global_properties["time"]
示例#26
0
def get_block(block_num):
    block = deex_ws_client.request('database', 'get_block', [block_num, 0])
    return block
示例#27
0
def get_margin_positions(account_id):
    margin_positions = deex_ws_client.request('database',
                                              'get_margin_positions',
                                              [account_id])
    return margin_positions
示例#28
0
def get_header():
    response = deex_ws_client.request('database',
                                      'get_dynamic_global_properties', [])
    return _add_global_informations(response, deex_ws_client)