an API wrapper for Daybit-exchange
Project description
# Pydaybit
[![CircleCI](https://circleci.com/gh/daybit-exchange/pydaybit.svg?shield=svg&circle-token=b7d9eaa9d871c3421f8ca3583be4a379f9b6b856)](https://circleci.com/gh/daybit-exchange/pydaybit)
**Pydaybit** is an API wrapper for [**Daybit**](https://www.daybit.com) exchange written in Python.
It supports python 3.5 or newer.
## Disclaimer
USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS.
## Installation
$ pip install --upgrade pydaybit
## Environment Variables
* `DAYBIT_API_KEY`
* `DAYBIT_API_SECRET`
## Examples
#### Server Timestamp
```python
import asyncio
from pydaybit import Daybit
async def daybit_get_server_time():
async with Daybit() as daybit:
server_timestamp = await daybit.get_server_time()
print('Daybit: {}'.format(server_timestamp))
asyncio.get_event_loop().run_until_complete(daybit_get_server_time())
```
#### Without Enviroment Variables
```python
import asyncio
from pprint import pprint
from pydaybit import Daybit, PARAM_API_KEY, PARAM_API_SECRET
async def daybit_trades():
async with Daybit(url='wws://api.daybit.com/v1/user_api_socket/websocket',
params={PARAM_API_KEY: "YOUR_API_KEY",
PARAM_API_SECRET: "YOUR_API_SECRET"}) as daybit:
pprint(await daybit.trades(quote='USDT',
base='BTC',
num_trades=5), indent=2)
asyncio.get_event_loop().run_until_complete(daybit_markets())
```
#### Without Asynchronous Context Manager
```python
import asyncio
from pprint import pprint
from pydaybit import Daybit
async def daybit_markets():
daybit = Daybit()
await daybit.connect()
pprint(await daybit.markets(), indent=2)
await daybit.disconnect()
asyncio.get_event_loop().run_until_complete(daybit_markets())
```
#### Subscriptons
All Subscription APIs are updated in real time. Following `daybit_without_await()` will print coin prices as same as `daybit_coin_prices()`.
```python
import asyncio
from pprint import pprint
from pydaybit import Daybit
async def daybit_coin_prices():
async with Daybit() as daybit:
for _ in range(5):
pprint(await daybit.coin_prices(), indent=2)
await asyncio.sleep(1)
async def daybit_without_await():
async with Daybit() as daybit:
await daybit.coin_prices()
for _ in range(5):
pprint(daybit.channel('/subscription:coin_prices').data, indent=2)
await asyncio.sleep(1)
asyncio.get_event_loop().run_until_complete(daybit_coin_prices())
# asyncio.get_event_loop().run_until_complete(daybit_without_await())
```
#### Subscription Args
Channel Arguments can be described with `/` operators.
```python
import asyncio
import time
from pydaybit import Daybit
async def get_candles(from_time, to_time, interval, quote, base):
async with Daybit() as daybit:
channel = daybit.price_histories / quote / base / interval
candles = await channel(from_time=from_time,
to_time=to_time)
print(candles)
asyncio.get_event_loop().run_until_complete(get_candles(from_time=int((time.time() - 1000) * 1000),
to_time=int(time.time() * 1000),
interval=60,
quote='USDT',
base='BTC'))
```
#### Reset Cached Data
A channel have local cached data in `channel.data`. If want to remove cached data, use `channel.reset_data()`.
For example, see `examples/candles.py`.
```python
async def get_candles(start_time, end_time, interval, quote, base, max_size=100, candle_type=float):
...
async with Daybit() as daybit:
...
channel = daybit.price_histories / quote / base / interval
for to_time in range(end_time, start_time, -(max_size * interval * 1000)):
from_time = max(start_time, to_time - ((max_size - 1) * interval * 1000))
channel.reset_data()
candles = await channel(from_time=from_time,
to_time=to_time)
...
```
## TEST
$ python -m pytest
or
$ pytest
## License
Apache License 2.0
[![CircleCI](https://circleci.com/gh/daybit-exchange/pydaybit.svg?shield=svg&circle-token=b7d9eaa9d871c3421f8ca3583be4a379f9b6b856)](https://circleci.com/gh/daybit-exchange/pydaybit)
**Pydaybit** is an API wrapper for [**Daybit**](https://www.daybit.com) exchange written in Python.
It supports python 3.5 or newer.
## Disclaimer
USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS.
## Installation
$ pip install --upgrade pydaybit
## Environment Variables
* `DAYBIT_API_KEY`
* `DAYBIT_API_SECRET`
## Examples
#### Server Timestamp
```python
import asyncio
from pydaybit import Daybit
async def daybit_get_server_time():
async with Daybit() as daybit:
server_timestamp = await daybit.get_server_time()
print('Daybit: {}'.format(server_timestamp))
asyncio.get_event_loop().run_until_complete(daybit_get_server_time())
```
#### Without Enviroment Variables
```python
import asyncio
from pprint import pprint
from pydaybit import Daybit, PARAM_API_KEY, PARAM_API_SECRET
async def daybit_trades():
async with Daybit(url='wws://api.daybit.com/v1/user_api_socket/websocket',
params={PARAM_API_KEY: "YOUR_API_KEY",
PARAM_API_SECRET: "YOUR_API_SECRET"}) as daybit:
pprint(await daybit.trades(quote='USDT',
base='BTC',
num_trades=5), indent=2)
asyncio.get_event_loop().run_until_complete(daybit_markets())
```
#### Without Asynchronous Context Manager
```python
import asyncio
from pprint import pprint
from pydaybit import Daybit
async def daybit_markets():
daybit = Daybit()
await daybit.connect()
pprint(await daybit.markets(), indent=2)
await daybit.disconnect()
asyncio.get_event_loop().run_until_complete(daybit_markets())
```
#### Subscriptons
All Subscription APIs are updated in real time. Following `daybit_without_await()` will print coin prices as same as `daybit_coin_prices()`.
```python
import asyncio
from pprint import pprint
from pydaybit import Daybit
async def daybit_coin_prices():
async with Daybit() as daybit:
for _ in range(5):
pprint(await daybit.coin_prices(), indent=2)
await asyncio.sleep(1)
async def daybit_without_await():
async with Daybit() as daybit:
await daybit.coin_prices()
for _ in range(5):
pprint(daybit.channel('/subscription:coin_prices').data, indent=2)
await asyncio.sleep(1)
asyncio.get_event_loop().run_until_complete(daybit_coin_prices())
# asyncio.get_event_loop().run_until_complete(daybit_without_await())
```
#### Subscription Args
Channel Arguments can be described with `/` operators.
```python
import asyncio
import time
from pydaybit import Daybit
async def get_candles(from_time, to_time, interval, quote, base):
async with Daybit() as daybit:
channel = daybit.price_histories / quote / base / interval
candles = await channel(from_time=from_time,
to_time=to_time)
print(candles)
asyncio.get_event_loop().run_until_complete(get_candles(from_time=int((time.time() - 1000) * 1000),
to_time=int(time.time() * 1000),
interval=60,
quote='USDT',
base='BTC'))
```
#### Reset Cached Data
A channel have local cached data in `channel.data`. If want to remove cached data, use `channel.reset_data()`.
For example, see `examples/candles.py`.
```python
async def get_candles(start_time, end_time, interval, quote, base, max_size=100, candle_type=float):
...
async with Daybit() as daybit:
...
channel = daybit.price_histories / quote / base / interval
for to_time in range(end_time, start_time, -(max_size * interval * 1000)):
from_time = max(start_time, to_time - ((max_size - 1) * interval * 1000))
channel.reset_data()
candles = await channel(from_time=from_time,
to_time=to_time)
...
```
## TEST
$ python -m pytest
or
$ pytest
## License
Apache License 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
daybit-0.0.2.tar.gz
(9.4 kB
view hashes)
Built Distribution
daybit-0.0.2-py3-none-any.whl
(10.9 kB
view hashes)