From bc65340fe79baacb2c83701ca56c39b6cf406011 Mon Sep 17 00:00:00 2001 From: financelurker Date: Sat, 24 Apr 2021 21:07:14 +0200 Subject: [PATCH] Added support for interest history --- src/cryptocom/exchange/private.py | 20 +++++++++++++++++++- src/cryptocom/exchange/structs.py | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/cryptocom/exchange/private.py b/src/cryptocom/exchange/private.py index 843d24d..aa8f681 100644 --- a/src/cryptocom/exchange/private.py +++ b/src/cryptocom/exchange/private.py @@ -6,7 +6,7 @@ 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 ) @@ -36,6 +36,24 @@ class Account: for bal in data['accounts'] } + async def get_interest_history( + self, currency: str, 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 currency: + params['currency'] = currency + 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]: diff --git a/src/cryptocom/exchange/structs.py b/src/cryptocom/exchange/structs.py index 8ba61e1..a82a7b2 100644 --- a/src/cryptocom/exchange/structs.py +++ b/src/cryptocom/exchange/structs.py @@ -339,3 +339,22 @@ class Order: trigger_price=trigger_price, trades=trades ) + + +@dataclass +class Interest: + loan_id: int + currency: str + interest: float + stake_amount: float + interest_rate: float + + @staticmethod + def create_from_api(cls, data: Dict) -> 'Interest': + return cls( + loan_id=int(data['loan_id']), + currency=data['currency'], + interest=float(data['interest']), + stake_amount=float(data['stake_amount']), + interest_rate=float(data['interest_rate']) + )