Skip to content

Commit 6ccd8de

Browse files
fixed missing ofs in get_ledgers_info; renameing some variables; added get_balance for spot.user
1 parent 0bf2c86 commit 6ccd8de

File tree

6 files changed

+64
-26
lines changed

6 files changed

+64
-26
lines changed

examples/examples.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ def main() -> None:
3535
# print(user.get_trade_balance())#asset='BTC'
3636
# print(user.get_open_orders())
3737
# print(user.get_closed_orders())
38-
# print(user.get_orders_info(txid='someid')) # or txid='id1,id2,id3' or txid=['id1','id2']
38+
print(user.get_orders_info(txid='ONNXNP-EHGRS-JTZIOR')) # or txid='id1,id2,id3' or txid=['id1','id2']
3939
# print(user.get_trades_history())
4040
# print(user.get_trades_info(txid='someid'))
41-
print(user.get_open_positions())#txid='someid'
41+
# print(user.get_open_positions())#txid='someid'
4242
# print(user.get_ledgers_info())#asset='BTC' or asset='BTC,EUR' or asset=['BTC','EUR']
43-
# print(user.get_ledgers(id='LNBK7T-BLEFU-C6NGIS'))
43+
# print(user.get_ledgers(id='LIORGR-33NXH-LBUS5Z'))
4444
# print(user.get_trade_volume())#pair='BTC/EUR'
4545

4646
#____export_report____
@@ -61,7 +61,7 @@ def main() -> None:
6161
market = Market(key=key, secret=secret)
6262

6363
# print(market.get_assets(assets=['XBT']))
64-
# print(market.get_tradable_asset_pair(pair=['BTCEUR','DOTEUR']))
64+
# print(market.get_tradable_asset_pair(pair=['DOTEUR']))
6565
# print(market.get_ticker(pair='BTCUSD'))
6666
# print(market.get_ohlc(pair='BTCUSD', interval=5))
6767
# print(market.get_order_book(pair='BTCUSDT', count=10))
@@ -127,8 +127,9 @@ def main() -> None:
127127
# timeout=60
128128
# ))
129129

130+
# __ not working
130131
# print(trade.cancel_order_batch(
131-
# orders=['OG5V2Y-RYKVL-DT3V3B','OP5V2Y-RYKVL-ET3V3B']
132+
# orders=['O2JLFP-VYFIW-35ZAAE', 'O523KJ-DO4M2-KAT243', 'OCDIAL-YC66C-DOF7HS', 'OVFPZ2-DA2GV-VBFVVI']
132133
# ))
133134

134135

kraken/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
VERSION = (0, 5, 2)
1+
VERSION = (0, 5, 3)
22

33
__version__ = '.'.join(map(str, VERSION))

kraken/base_api/base_api.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def _request(self, method: str, uri: str, timeout: int=10, auth: bool=True, para
5151
'API-Sign': self.get_kraken_signature(f'{self._api_v}{uri}', params)
5252
}
5353

54-
headers['User-Agent'] = 'Kraken-Python-SDK'
54+
headers['User-Agent'] = 'python-kraken-sdk'
5555
url = f'{self.url}{self._api_v}{uri}'
5656

5757
# logging.debug(f'Request to: {url}')
@@ -84,7 +84,7 @@ def check_response_data(response_data, return_raw: bool=False):
8484
else:
8585
if 'error' in data:
8686
if len(data.get('error')) == 0 and 'result' in data: return data['result']
87-
else: raise Exception(f'{response_data.status_code}-{response_data.text}')
87+
else: raise Exception(f'{response_data.status_code} - {response_data.text}')
8888
else: return data
8989
else: raise Exception(f'{response_data.status_code}-{response_data.text}')
9090

@@ -93,5 +93,6 @@ def return_unique_id(self):
9393
return ''.join([each for each in str(uuid1()).split('-')])
9494

9595
def _to_str_list(self, a) -> str:
96-
if type(a) == str: a = [a]
97-
return ','.join(a)
96+
if type(a) == str: return a
97+
elif type(a) == list: return ','.join([i for i in a])
98+
else: raise ValueError('a must be string or list of strings')

kraken/spot/trade/trade.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,18 @@ def create_order_batch(self, orders: [dict], pair: str, deadline: str=None, vali
6161
if deadline != None: params['deadline'] = deadline
6262
return self._request('POST', '/private/AddOrderBatch', params=params, do_json=True)
6363

64-
def edit_order(self, txid, pair: str, volume: str=None, price: str=None, price2: str=None, oflags=None, deadline: str=None, cancel_response: bool=None, validate: str=False, userref: int=None) -> dict:
64+
def edit_order(self,
65+
txid: str,
66+
pair: str,
67+
volume: str=None,
68+
price: str=None,
69+
price2: str=None,
70+
oflags=None,
71+
deadline: str=None,
72+
cancel_response: bool=None,
73+
validate: str=False,
74+
userref: int=None
75+
) -> dict:
6576
'''https://docs.kraken.com/rest/#operation/editOrder'''
6677
params = {
6778
'txid': txid,
@@ -88,12 +99,11 @@ def cancel_all_orders(self) -> dict:
8899
def cancel_all_orders_after_x(self, timeout: int) -> dict:
89100
'''https://docs.kraken.com/rest/#operation/cancelAllOrdersAfter'''
90101
params = { 'timeout': timeout }
91-
return self._request('POST', '/private/CancelAllOrdersAfter')
102+
return self._request('POST', '/private/CancelAllOrdersAfter', params=params)
92103

93104
def cancel_order_batch(self, orders: [str]) -> dict:
94105
'''https://docs.kraken.com/rest/#operation/cancelOrderBatch'''
95106
params = { 'orders': orders }
96-
return self._request('POST', '/private/CancelOrderBatch')
97-
107+
return self._request('POST', '/private/CancelOrderBatch', params=params)
98108

99109

kraken/spot/user/user.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

kraken/spot/websocket/websocket.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,12 @@ async def _reconnect(self):
104104
for task in finished:
105105
if task.exception():
106106
exception_occur = True
107-
message = f'{task} got an exception {task.exception()}'
108-
message += f'\nTRACEBACK: {traceback.format_exc()}'
107+
message = f'{task} got an exception {task.exception()}\nTRACEBACK: {traceback.format_exc()}'
109108
logging.warning(message)
110-
for pt in pending:
111-
logging.warning(f'pending {pt}')
112-
try: pt.cancel()
113-
except asyncio.CancelledError: logging.exception('CancelledError ')
109+
for process in pending:
110+
logging.warning(f'pending {process}')
111+
try: process.cancel()
112+
except asyncio.CancelledError: logging.exception('CancelledError')
114113
logging.warning('cancel ok.')
115114
await self._callback({ 'ws-error': message })
116115
if exception_occur: break

0 commit comments

Comments
 (0)