Merge pull request #24 from financelurker/master

Added support for interest, deposit and withdrawal history and start_ts/end_ts to orders-history
api-breakage
Morty Space 5 years ago committed by GitHub
commit f3a4903386
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 71
      src/cryptocom/exchange/private.py
  2. 71
      src/cryptocom/exchange/structs.py

@ -6,7 +6,8 @@ from .api import ApiProvider, ApiError
from .market import Exchange
from .structs import (
Pair, OrderSide, OrderStatus, OrderType, Order, Coin, Balance,
OrderExecType, OrderForceType, PrivateTrade
OrderExecType, OrderForceType, PrivateTrade, Interest, Withdrawal,
Deposit
)
@ -36,13 +37,77 @@ class Account:
for bal in data['accounts']
}
async def get_deposit_history(
self, coin: Coin, start_ts: int, end_ts: int, status: int, page: int = 0, page_size: int = 20)\
-> List[Deposit]:
"""Return all history withdrawals."""
params = {'page_size': page_size, 'page': page}
if coin:
params['currency'] = coin.name
if start_ts:
params['start_ts'] = start_ts
if end_ts:
params['end_ts'] = end_ts
if status:
params['status'] = str(status)
data = await self.api.post(
'private/get-deposit-history', {'params': params}) or {}
return [
Deposit.create_from_api(deposit)
for deposit in data.get('deposit_list') or []
]
async def get_withdrawal_history(
self, coin: Coin, start_ts: int, end_ts: int, status: int, page: int = 0, page_size: int = 20)\
-> List[Withdrawal]:
"""Return all history withdrawals."""
params = {'page_size': page_size, 'page': page}
if coin:
params['currency'] = coin.name
if start_ts:
params['start_ts'] = start_ts
if end_ts:
params['end_ts'] = end_ts
if status:
params['status'] = str(status)
data = await self.api.post(
'private/get-withdrawal-history', {'params': params}) or {}
return [
Withdrawal.create_from_api(withdrawal)
for withdrawal in data.get('withdrawal_list') or []
]
async def get_interest_history(
self, coin: Coin, start_ts: int, end_ts: int, page: int = 0, page_size: int = 20) -> List[Interest]:
"""Return all history interest."""
params = {'page_size': page_size, 'page': page}
if coin:
params['currency'] = coin.name
if start_ts:
params['start_ts'] = start_ts
if end_ts:
params['end_ts'] = end_ts
data = await self.api.post(
'private/margin/get-order-history', {'params': params}) or {}
return [
Interest.create_from_api(interest)
for interest in data.get('list') or []
]
async def get_orders_history(
self, pair: Pair = None, page: int = 0,
page_size: int = 200) -> List[Order]:
self, pair: Pair = None, start_ts: int = None, end_ts: int = None,
page: int = 0, page_size: int = 200) -> List[Order]:
"""Return all history orders."""
params = {'page_size': page_size, 'page': page}
if pair:
params['instrument_name'] = pair.name
if start_ts:
params['start_ts'] = start_ts
if end_ts:
params['end_ts'] = end_ts
data = await self.api.post(
'private/get-order-history', {'params': params}) or {}
return [

@ -347,3 +347,74 @@ class Order:
trigger_price=trigger_price,
trades=trades
)
@dataclass
class Interest:
loan_id: int
coin: Coin
interest: float
stake_amount: float
interest_rate: float
@classmethod
def create_from_api(cls, data: Dict) -> 'Interest':
return cls(
loan_id=int(data['loan_id']),
coin=Coin(data['currency']),
interest=float(data['interest']),
stake_amount=float(data['stake_amount']),
interest_rate=float(data['interest_rate'])
)
@dataclass
class Withdrawal:
coin: Coin
client_wid: str
fee: float
create_time: int
id: str
update_time: int
amount: float
address: str
status: str
@classmethod
def create_from_api(cls, data: Dict) -> 'Withdrawal':
return cls(
coin=Coin(data['currency']),
client_wid=data['client_wid'],
fee=float(data['fee']),
create_time=data['create_time'],
id=data['id'],
update_time=data['update_time'],
amount=float(data['amount']),
address=data['address'],
status=data['status']
)
@dataclass
class Deposit:
coin: Coin
fee: float
create_time: int
id: str
update_time: int
amount: float
address: str
status: str
@classmethod
def create_from_api(cls, data: Dict) -> 'Deposit':
return cls(
coin=Coin(data['currency']),
fee=float(data['fee']),
create_time=data['create_time'],
id=data['id'],
update_time=data['update_time'],
amount=float(data['amount']),
address=data['address'],
status=data['status']
)

Loading…
Cancel
Save