| package | |
|---|---|
| quality | |
| tests |
A Python SDK for VALR cryptocurrency exchange APIs.
pip install valr-python
You can also install the in-development version with:
pip install https://github.com/jonathanelscpt/valr-python/archive/master.zip
Authenticating to VALR API private resources requires a valid API Key from the VALR exchange.
To use the synchronous REST API client:
>>>fromvalr_pythonimportClient>>>fromvalr_python.exceptionsimportIncompleteOrderWarning>>>fromdecimalimportDecimal>>>>>>c=Client(api_key='api_key', api_secret='api_secret')
>>>c.rate_limiting_support=True# honour HTTP 429 "Retry-After" header values>>>limit_order= {
... "side": "SELL",
... "quantity": Decimal('0.1'),
... "price": Decimal('10000'),
... "pair": "BTCZAR",
... "post_only": True,
... }
>>>try:
... res=c.post_limit_order(**limit_order)
... order_id=res['id']
... print(order_id)
... exceptIncompleteOrderWarningasw: # HTTP 202 Accepted handling for incomplete orders
... order_id=w.data['id']
... print(order_id)
... exceptExceptionase:
... print(e)
"558f5e0a-ffd1-46dd-8fae-763d93fa2f25"The asynchronous REST API client is still in development. Coming soon!
To use the WebSocket API client:
>>>importasyncio>>>fromtypingimportDict>>>frompprintimportpprint>>>fromvalr_pythonimportWebSocketClient>>>fromvalr_python.enumimportTradeEvent>>>fromvalr_python.enumimportWebSocketType>>>>>>defpretty_hook(data: Dict):
... pprint(data)
>>>>>>c=WebSocketClient(api_key='api_key', api_secret='api_secret', currency_pairs=['BTCZAR'],
... ws_type=WebSocketType.TRADE.name,
... trade_subscriptions=[TradeEvent.MARKET_SUMMARY_UPDATE.name],
... hooks={TradeEvent.MARKET_SUMMARY_UPDATE.name: pretty_hook})
>>>loop=asyncio.get_event_loop()
>>>loop.run_until_complete(c.run())
{'currencyPairSymbol': 'BTCZAR',
'data': {'askPrice': '151601',
'baseVolume': '314.7631144',
'bidPrice': '151600',
'changeFromPrevious': '2.14',
'created': '2020-02-06T22:47:03.129Z',
'currencyPairSymbol': 'BTCZAR',
'highPrice': '152440',
'lastTradedPrice': '151600',
'lowPrice': '146765',
'previousClosePrice': '148410',
'quoteVolume': '47167382.04552981'},
'type': 'MARKET_SUMMARY_UPDATE'}This library leverages websockets and asyncio and is thus a coroutine-based API client. Both of
VALR's Account WebSocket connection and Trade WebSocket connection API endpoints are included. Furthermore,
the SDK fully supports VALR's subscription methods for both Account and Trade endpoints.
Please see the VALR API documentation for further information.
For each subscription, a hook must be provided to process the WS responses. Failing to do so raises
a HookNotFoundError exception. For ease of use, several Enum classes have been implemented
(as showcased above) for client instantiation and hook consumption of API responses. However, client input is
accepted in str format.
Although not completely minimalistic, please note that the SDK is implemented as a thin client and parsing of API streams response is left up to the application user.
To execute all tests run:
tox
Note, to combine the coverage data from all the tox environments run:
| Windows | set PYTEST_ADDOPTS=--cov-append tox |
|---|---|
| Other | PYTEST_ADDOPTS=--cov-append tox |
If this library has helped you or if you would like to support future development, donations are most welcome:
| Cryptocurrency | Address |
|---|---|
| BTC | 38c7QWggrB2HLUJZFmhAC2zh4t8C57c1ec |
| ETH | 0x01eD3b58a07c6d005281Db76e6c1AE2bfF2226AD |