Beispiel #1
0
def update_accounts(accounts=None, users=None,
                    exchanges=None, collections=None):
    """ 批量更新账号信息 """
    logging.basicConfig(level=logging.ERROR,
                        format='[%(asctime)s] %(name)s'
                        '<%(levelname)s> %(message)s')

    cond = {}
    if accounts:
        assert isinstance(accounts, list)
        cond['_id'] = {'$in': accounts}
    if users:
        assert isinstance(users, list)
        cond['user'] = {'$in': users}
    if exchanges:
        assert isinstance(exchanges, list)
        cond['exchange'] = {'$in': exchanges}
    if collections:
        assert isinstance(collections, list)
        cond['collections'] = {'$in': collections}

    accounts = list(Account.query(cond))
    random.shuffle(accounts)
    for account in accounts:
        executor.submit(update_account, account)
    executor.shutdown()

    update_users()
    update_exchanges()
    update_collections()
Beispiel #2
0
def update_exchange(exchange):
    """ 更新交易所的账号信息 """
    accounts = list(Account.query({'exchange': exchange}))
    e = Exchange.query_one({'_id': exchange})
    for key, value in accounts_summary(accounts).items():
        setattr(e, key, value)
    e.num_users = len(set(a.user for a in accounts))
    e.num_accounts = len(accounts)
    e.upsert()
Beispiel #3
0
def update_user(user):
    """ 更新用户的账号信息 """
    accounts = list(Account.query({'user': user}))
    u = User.query_one({'_id': user})
    for key, value in accounts_summary(accounts).items():
        setattr(u, key, value)
    u.num_accounts = len(accounts)
    u.num_exchanges = len(set(a.exchange for a in accounts))
    u.upsert()
Beispiel #4
0
def check_accounts():
    logging.basicConfig(level=logging.ERROR,
                        format='[%(asctime)s] %(name)s'
                        '<%(levelname)s> %(message)s')

    def check_account(account):
        print('检查账号{}_{}'.format(account.exchange,
                                 account.login_name))
        try:
            Trader(account.exchange,
                   account.login_name,
                   account.login_password)
        except:
            pass

    accounts = list(Account.query())
    random.shuffle(accounts)
    for account in accounts:
        executor.submit(check_account, account)
Beispiel #5
0
def update_collection(collection):
    """ 更新藏品的账号信息 """
    accounts = list(Account.query({'collections': collection}))
    users = set()
    exchange, symbol = collection.split('_')
    name = ''
    quantity = 0
    buy_price = 0
    for account in accounts:
        users.add(account.user)
    summary = accounts_summary(accounts)
    for p in summary['position']:
        if collection.endswith(p.symbol):
            quantity = p.quantity
            buy_price = p.average_price
            name = p.name
            break

    users = list(users)
    c = Collection.query_one({'_id': collection})
    if not c:
        c = Collection({'_id': collection})
    if exchange:
        c.exchange = exchange
    if symbol:
        c.symbol = symbol
    if name:
        c.name = name
    c.users = users or []
    c.accounts = [a._id for a in accounts] or []
    c.quantity = quantity
    c.buy_price = buy_price
    try:
        c.upsert()
    except:
        pass
Beispiel #6
0
Datei: app.py Projekt: sopnic/ybk
def admin_account():
    users = list(User.query())
    accounts = list(Account.query())
    locals()['exchanges'] = exchanges
    return render_template('admin/account.html', **locals())