Pydaybit
Pydaybit is an API wrapper for DAYBIT 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
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
import asyncio
from pprint import pprint
from pydaybit import Daybit, PARAM_API_KEY, PARAM_API_SECRET
async def daybit_trades():
async with Daybit(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
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()
.
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.
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
.
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