@@ -6,6 +6,33 @@ def get_account_balance(self) -> dict:
66 '''https://docs.kraken.com/rest/#operation/getAccountBalance'''
77 return self ._request ('POST' , '/private/Balance' )
88
9+ def get_balances (self , currency : str ) -> dict :
10+
11+ balance = float (0 )
12+ symbol = None
13+ for symbol , value in self .get_account_balance ().items ():
14+ if balance != float (0 ): break
15+ elif sym in [ currency , f'Z{ currency } ' , f'X{ currency } ' ]:
16+ balance = float (value )
17+ symbol = sym
18+
19+ available_balance = balance
20+
21+ for txid , order in self .get_open_orders ()['open' ].items ():
22+ if sym in order ['descr' ]['pair' ][0 :len (symbol )]:
23+ if order ['descr' ]['type' ] == 'sell' :
24+ available_balance -= float (order ['vol' ])
25+ elif sym in order ['descr' ]['pair' ][len (symbol ):0 ]:
26+ if order ['descr' ]['type' ] == 'buy' :
27+ available_balance -= float (order ['vol' ]) * float (order ['descr' ]['price' ])
28+
29+ return {
30+ 'symbol' : symbol ,
31+ 'balance' : quote_balance ,
32+ 'available_balance' : base_balance
33+ }
34+
35+
936 def get_trade_balance (self , asset = None ) -> dict :
1037 '''https://docs.kraken.com/rest/#operation/getTradeBalance'''
1138 params = {}
@@ -31,7 +58,7 @@ def get_closed_orders(self, trades: bool=False, userref: int=None, start: int=No
3158
3259 return self ._request ('POST' , '/private/ClosedOrders' , params = params )
3360
34- def get_orders_info (self , txid : str , trades : bool = False , userref : int = None ) -> dict :
61+ def get_orders_info (self , txid , trades : bool = False , userref : int = None ) -> dict :
3562 '''https://docs.kraken.com/rest/#operation/getOrdersInfo'''
3663 params = {
3764 'txid' : txid ,
@@ -41,10 +68,10 @@ def get_orders_info(self, txid: str, trades: bool=False, userref: int=None) -> d
4168 if userref != None : params ['userref' ] = userref
4269 return self ._request ('POST' , '/private/QueryOrders' , params = params )
4370
44- def get_trades_history (self , type : str = 'all' , trades : bool = False , start : int = None , end : int = None , ofs : int = None ) -> dict :
71+ def get_trades_history (self , type_ : str = 'all' , trades : bool = False , start : int = None , end : int = None , ofs : int = None ) -> dict :
4572 '''https://docs.kraken.com/rest/#operation/getTradeHistory'''
4673 params = {
47- 'type' : type ,
74+ 'type' : type_ ,
4875 'trades' : trades
4976 }
5077 if start != None : params ['start' ] = start
@@ -77,7 +104,7 @@ def get_ledgers_info(self, asset: str='all', aclass: str='currency', type_: str=
77104 if type (params ['asset' ]) == list : params ['asset' ] = self ._to_str_list (asset )
78105 if start != None : params ['start' ] = start
79106 if end != None : params ['end' ] = end
80- if ofs != None : params ['ofs' ] = None
107+ if ofs != None : params ['ofs' ] = ofs
81108 return self ._request ('POST' , '/private/Ledgers' , params = params )
82109
83110 def get_ledgers (self , id = None , trades : bool = False ) -> dict :
@@ -93,7 +120,7 @@ def get_trade_volume(self, pair=None, fee_info: bool=None) -> dict:
93120 if fee_info != None : params ['fee-info' ] = fee_info
94121 return self ._request ('POST' , '/private/TradeVolume' , params = params )
95122
96- def request_export_report (self , report : str , description : str , format : str = 'CSV' , fields : str = 'all' , starttm : int = None , endtm : int = None ) -> dict :
123+ def request_export_report (self , report : str , description : str , format_ : str = 'CSV' , fields : str = 'all' , starttm : int = None , endtm : int = None ) -> dict :
97124 '''https://docs.kraken.com/rest/#operation/addExport
98125
99126 ---- RESPONSE ----
@@ -102,7 +129,7 @@ def request_export_report(self, report: str, description: str, format: str='CSV'
102129 params = {
103130 'report' : report ,
104131 'description' : description ,
105- 'format' : format ,
132+ 'format' : format_ ,
106133 'fields' : fields
107134 }
108135 if starttm != None : params ['starttm' ] = starttm
0 commit comments