daybit

an API wrapper for Daybit-exchange


Keywords
api-wrapper, daybit, elixir-phoenix, phoenix, python
License
Apache-2.0
Install
pip install daybit==0.0.2

Documentation

Pydaybit

CircleCI pypi Downloads License

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