Skip to main content

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


Project details


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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

daybit-0.0.2-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file daybit-0.0.2.tar.gz.

File metadata

  • Download URL: daybit-0.0.2.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for daybit-0.0.2.tar.gz
Algorithm Hash digest
SHA256 78b3455ce3a98ac1dcfda150832c0c2fd4b56b0ef3a09f2d925faad745586f42
MD5 ed599b33b87fd024bc44cf9a6311e27d
BLAKE2b-256 f052925b5a22174be6b96e828e7079596db7c3ff235552080e5a1a17696d7b0e

See more details on using hashes here.

File details

Details for the file daybit-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: daybit-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for daybit-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d19674bbe2a719a425c36a04a25015d96713f8bc6b0d2f1c937b96124122db19
MD5 5194937660ff87b9c785f5daba1f533e
BLAKE2b-256 860f6d7daec2f9068844f048dfc2ae7faa686ade0c83ec874a71b75a9aa3a4f6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page