Пример #1
0
 def fetch_balance(self, params={}):
     self.load_markets()
     response = self.privateGetBalance(params)
     #
     #     {
     #         'balance': [
     #             {'account_id': '119...1336','asset': 'XBT','balance': '0.00','reserved': '0.00','unconfirmed': '0.00'},
     #             {'account_id': '66...289','asset': 'XBT','balance': '0.00','reserved': '0.00','unconfirmed': '0.00'},
     #             {'account_id': '718...5300','asset': 'ETH','balance': '0.00','reserved': '0.00','unconfirmed': '0.00'},
     #             {'account_id': '818...7072','asset': 'ZAR','balance': '0.001417','reserved': '0.00','unconfirmed': '0.00'}]}
     #         ]
     #     }
     #
     wallets = self.safe_value(response, 'balance', [])
     result = {'info': response}
     for i in range(0, len(wallets)):
         wallet = wallets[i]
         currencyId = self.safe_string(wallet, 'asset')
         code = self.safe_currency_code(currencyId)
         reserved = self.safe_string(wallet, 'reserved')
         unconfirmed = self.safe_string(wallet, 'unconfirmed')
         balance = self.safe_string(wallet, 'balance')
         reservedUnconfirmed = Precise.string_add(reserved, unconfirmed)
         balanceUnconfirmed = Precise.string_add(balance, unconfirmed)
         if code in result:
             result[code]['used'] = Precise.string_add(
                 result[code]['used'], reservedUnconfirmed)
             result[code]['total'] = Precise.string_add(
                 result[code]['total'], balanceUnconfirmed)
         else:
             account = self.account()
             account['used'] = reservedUnconfirmed
             account['total'] = balanceUnconfirmed
             result[code] = account
     return self.parse_balance(result, False)
Пример #2
0
 def parse_balance(self, response):
     wallets = self.safe_value(response, 'balance', [])
     result = {
         'info': response,
         'timestamp': None,
         'datetime': None,
     }
     for i in range(0, len(wallets)):
         wallet = wallets[i]
         currencyId = self.safe_string(wallet, 'asset')
         code = self.safe_currency_code(currencyId)
         reserved = self.safe_string(wallet, 'reserved')
         unconfirmed = self.safe_string(wallet, 'unconfirmed')
         balance = self.safe_string(wallet, 'balance')
         reservedUnconfirmed = Precise.string_add(reserved, unconfirmed)
         balanceUnconfirmed = Precise.string_add(balance, unconfirmed)
         if code in result:
             result[code]['used'] = Precise.string_add(
                 result[code]['used'], reservedUnconfirmed)
             result[code]['total'] = Precise.string_add(
                 result[code]['total'], balanceUnconfirmed)
         else:
             account = self.account()
             account['used'] = reservedUnconfirmed
             account['total'] = balanceUnconfirmed
             result[code] = account
     return self.safe_balance(result)
Пример #3
0
 async def fetch_balance(self, params={}):
     await self.load_markets()
     lowercaseCurrencies = []
     currencies = list(self.currencies.keys())
     for i in range(0, len(currencies)):
         currency = currencies[i]
         lowercaseCurrencies.append(currency.lower())
     request = {
         'currencies': ','.join(lowercaseCurrencies),
     }
     response = await self.userPostBalance(self.extend(request, params))
     result = {'info': response}
     for i in range(0, len(response)):
         balance = response[i]
         currencyId = self.safe_string(balance['currency'], 'name')
         code = self.safe_currency_code(currencyId)
         account = self.account()
         account['free'] = self.safe_string(balance, 'available')
         blocked = self.safe_string(balance, 'blocked')
         inOrders = self.safe_string(balance, 'inOrders')
         withdrawing = self.safe_string(balance, 'withdrawing')
         account['used'] = Precise.string_add(
             Precise.string_add(blocked, inOrders), withdrawing)
         result[code] = account
     return self.parse_balance(result, False)
Пример #4
0
 def fetch_balance(self, params={}):
     self.load_markets()
     response = self.privateGetAccountBalances(params)
     #
     #     [
     #         {
     #             "currencyId": 102,
     #             "symbol": "LA",
     #             "name": "Latoken",
     #             "amount": 1054.66,
     #             "available": 900.66,
     #             "frozen": 154,
     #             "pending": 0
     #         }
     #     ]
     #
     result = {
         'info': response,
         'timestamp': None,
         'datetime': None,
     }
     for i in range(0, len(response)):
         balance = response[i]
         currencyId = self.safe_string(balance, 'symbol')
         code = self.safe_currency_code(currencyId)
         frozen = self.safe_string(balance, 'frozen')
         pending = self.safe_string(balance, 'pending')
         account = self.account()
         account['used'] = Precise.string_add(frozen, pending)
         account['free'] = self.safe_string(balance, 'available')
         account['total'] = self.safe_string(balance, 'amount')
         result[code] = account
     return self.parse_balance(result)
Пример #5
0
 def parse_ticker(self, ticker, market=None):
     #
     # [
     #     [1640789101000, 1292663.0, 1311823.61303, 1295794.252, 1311823.61303, 0.030175],
     #     [1640790902000, 1311823.61303, 1310820.96, 1290000.0, 1290000.0, 0.042533],
     # ],
     #
     symbol = self.safe_symbol(None, market)
     timestamp = self.milliseconds()
     result = {
         'symbol': symbol,
         'timestamp': timestamp,
         'datetime': self.iso8601(timestamp),
         'high': None,
         'low': None,
         'bid': None,
         'bidVolume': None,
         'ask': None,
         'askVolume': None,
         'vwap': None,
         'open': None,
         'close': None,
         'last': None,
         'previousClose': None,
         'change': None,
         'percentage': None,
         'average': None,
         'baseVolume': None,
         'quoteVolume': None,
         'info': ticker,
     }
     tickerLength = len(ticker)
     if tickerLength > 0:
         start = max(tickerLength - 48, 0)
         for i in range(start, len(ticker)):
             candle = ticker[i]
             if result['open'] is None:
                 result['open'] = self.safe_string(candle, 1)
             high = self.safe_string(candle, 2)
             if (result['high'] is None) or (
                 (high is not None)
                     and Precise.string_lt(result['high'], high)):
                 result['high'] = high
             low = self.safe_string(candle, 3)
             if (result['low'] is None) or (
                 (low is not None)
                     and Precise.string_lt(result['low'], low)):
                 result['low'] = low
             baseVolume = self.safe_string(candle, 5)
             if result['baseVolume'] is None:
                 result['baseVolume'] = baseVolume
             else:
                 result['baseVolume'] = Precise.string_add(
                     result['baseVolume'], baseVolume)
         last = tickerLength - 1
         result['last'] = self.safe_string(ticker[last], 4)
         result['close'] = result['last']
     return self.safe_ticker(result, market, False)
Пример #6
0
 async def fetch_balance(self, params={}):
     await self.load_markets()
     response = await self.privatePostListBalances(params)
     result = {'info': response}
     for i in range(0, len(response)):
         balance = response[i]
         currencyId = self.safe_string(balance, 'Currency')
         code = self.safe_currency_code(currencyId)
         deposited = self.safe_string(balance, 'Deposited')
         unconfirmed = self.safe_string(balance, 'Unconfirmed')
         account = self.account()
         account['free'] = self.safe_string(balance, 'Available')
         account['total'] = Precise.string_add(deposited, unconfirmed)
         result[code] = account
     return self.parse_balance(result, False)
Пример #7
0
 def parse_balance(self, response):
     result = {
         'info': response,
         'timestamp': None,
         'datetime': None,
     }
     for i in range(0, len(response)):
         balance = response[i]
         currencyId = self.safe_string(balance, 'symbol')
         code = self.safe_currency_code(currencyId)
         frozen = self.safe_string(balance, 'frozen')
         pending = self.safe_string(balance, 'pending')
         account = self.account()
         account['used'] = Precise.string_add(frozen, pending)
         account['free'] = self.safe_string(balance, 'available')
         account['total'] = self.safe_string(balance, 'amount')
         result[code] = account
     return self.safe_balance(result)
Пример #8
0
#     decimal_to_precision('foo'),
#         "invalid number(contains an illegal character 'f')")
#
# throws(() =>
#     decimal_to_precision('0.01', TRUNCATE, -1, TICK_SIZE),
#         "TICK_SIZE cant be used with negative numPrecisionDigits")

# ----------------------------------------------------------------------------

w = '-1.123e-6'
x = '0.00000002'
y = '69696900000'

assert Precise.string_mul(x, y) == '1393.938'
assert Precise.string_mul(y, x) == '1393.938'
assert Precise.string_add(x, y) == '69696900000.00000002'
assert Precise.string_add(y, x) == '69696900000.00000002'
assert Precise.string_sub(x, y) == '-69696899999.99999998'
assert Precise.string_sub(y, x) == '69696899999.99999998'
assert Precise.string_div(x, y) == '0.000000000000028695'
assert Precise.string_div(y, x) == '34848450000'

assert Precise.string_mul(x, w) == '-0.00000000000002246'
assert Precise.string_mul(w, x) == '-0.00000000000002246'
assert Precise.string_add(x, w) == '-0.000001103'
assert Precise.string_add(w, x) == '-0.000001103'
assert Precise.string_sub(x, w) == '0.000001143'
assert Precise.string_sub(w, x) == '-0.000001143'
assert Precise.string_div(x, w) == '-0.000000000017809439'
assert Precise.string_div(w, x) == '-0.0000005615'
Пример #9
0
#
# throws(() =>
#     decimal_to_precision('0.01', TRUNCATE, -1, TICK_SIZE),
#         "TICK_SIZE cant be used with negative numPrecisionDigits")

# ----------------------------------------------------------------------------

w = '-1.123e-6'
x = '0.00000002'
y = '69696900000'
z = '0'
a = '1e8'

assert Precise.string_mul(x, y) == '1393.938'
assert Precise.string_mul(y, x) == '1393.938'
assert Precise.string_add(x, y) == '69696900000.00000002'
assert Precise.string_add(y, x) == '69696900000.00000002'
assert Precise.string_sub(x, y) == '-69696899999.99999998'
assert Precise.string_sub(y, x) == '69696899999.99999998'
assert Precise.string_div(x, y, 1) == '0'
assert Precise.string_div(x, y) == '0'
assert Precise.string_div(x, y, 19) == '0.0000000000000000002'
assert Precise.string_div(x, y, 20) == '0.00000000000000000028'
assert Precise.string_div(x, y, 21) == '0.000000000000000000286'
assert Precise.string_div(x, y, 22) == '0.0000000000000000002869'
assert Precise.string_div(y, x) == '3484845000000000000'

assert Precise.string_mul(x, w) == '-0.00000000000002246'
assert Precise.string_mul(w, x) == '-0.00000000000002246'
assert Precise.string_add(x, w) == '-0.000001103'
assert Precise.string_add(w, x) == '-0.000001103'
Пример #10
0
 def parse_order(self, order, market=None):
     #
     #     {
     #         id: string,
     #         user_id: string,
     #         market_id: string,
     #         type: 'orderType',
     #         side: 'side',
     #         quantity: string,
     #         limit_price: string,
     #         time_in_force: 'timeInForce',
     #         filled_cost: string,
     #         filled_quantity: string,
     #         open_quantity: string,
     #         cancelled_quantity: string,
     #         status: 'orderStatus',
     #         time: 'date',
     #         client_order_id: string,
     #     }
     #
     status = self.parse_order_status(self.safe_string(order, 'status'))
     id = self.safe_string(order, 'id')
     type = self.safe_string(order, 'type')
     side = self.safe_string(order, 'side')
     marketId = self.safe_string(order, 'market_id')
     symbol = self.safe_symbol(marketId, market, '-')
     timestamp = self.parse8601(self.safe_string(order, 'time'))
     price = self.safe_string(order, 'limit_price')
     filled = self.safe_string(order, 'filled_quantity')
     remaining = self.safe_string(order, 'open_quantity')
     canceledAmount = self.safe_string(order, 'cancelled_quantity')
     if canceledAmount is not None:
         remaining = Precise.string_add(remaining, canceledAmount)
     amount = self.safe_string(order, 'quantity', Precise.string_add(filled, remaining))
     cost = self.safe_string_2(order, 'filled_cost', 'cost')
     if type == 'market':
         price = None
     clientOrderId = self.safe_string(order, 'client_order_id')
     if clientOrderId == '':
         clientOrderId = None
     timeInForce = self.safe_string_upper(order, 'time_in_force')
     return self.safe_order({
         'id': id,
         'info': order,
         'clientOrderId': clientOrderId,
         'timestamp': timestamp,
         'datetime': self.iso8601(timestamp),
         'lastTradeTimestamp': None,
         'symbol': symbol,
         'type': type,
         'timeInForce': timeInForce,
         'side': side,
         'status': status,
         'price': price,
         'stopPrice': None,
         'amount': amount,
         'filled': filled,
         'remaining': remaining,
         'average': None,
         'cost': cost,
         'fee': None,
         'trades': None,
     }, market)