Skip to content

An advanced api client for python botters.

License

Notifications You must be signed in to change notification settings

noccio-nocci/pybotters

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[BETA] pybotters

An advanced api client for python botters.

📌 Description

pybotters仮想通貨botter向けのPythonライブラリです。

複数取引所に対応した非同期I/OのAPIクライアントであり、bot開発により素晴らしいDXを提供します。

👩‍💻👨‍💻 In development

pybotters は現在 ** BETAバージョン ** です。 一部機能は開発中です。

正式バージョンの開発状況については こちら を参照してください。

🚀 Features

  • ✨ HTTP / WebSocket Client
    • 複数取引所のプライベートAPIを自動認証
    • aiohttpライブラリを基盤とした非同期通信
    • WebSocketの自動再接続、自動ハートビート
  • ✨ DataStore
    • WebSocket用の自動データ保管クラス
    • 参照渡しによる高速なデータ参照
    • 取引所別データモデルの実装
  • ✨ Developer Experience
    • asyncioライブラリを利用した非同期プログラミング
    • typingモジュールによる型ヒントのサポート

🏦 Exchanges

Name API auth DataStore API docs
Bybit LINK
Binance WIP LINK
FTX WIP LINK
BTCMEX LINK
BitMEX WIP LINK
bitFlyer WIP LINK
GMO Coin WIP LINK
Liquid WIP LINK
bitbank WIP LINK

🐍 Requires

Python 3.7+

🛠 Installation

pip install pybotters

🔰 Usage

Single exchange

import asyncio
import pybotters

apis = {
    'bybit': ['BYBIT_API_KEY', 'BYBIT_API_SECRET'],
}

async def main():
    async with pybotters.Client(apis=apis, base_url='https://api.bybit.com') as client:
        # REST API
        resp = await client.get('/v2/private/position/list', params={'symbol': 'BTCUSD'})
        data = await resp.json()
        print(data)

        # WebSocket API (with print handler)
        ws = await client.ws_connect(
            url='wss://stream.bybit.com/realtime',
            send_json={'op': 'subscribe', 'args': ['trade.BTCUSD', 'order', 'position']},
            hdlr_json=lambda msg, ws: print(msg),
        )
        await ws # this await is wait forever (for usage)

try:
    asyncio.run(main())
except KeyboardInterrupt:
    pass

Multiple exchanges

apis = {
    'bybit': ['BYBIT_API_KEY', 'BYBIT_API_SECRET'],
    'btcmex': ['BTCMEX_API_KEY', 'BTCMEX_API_SECRET'],
    'binance': ['BINANCE_API_KEY', 'BINANCE_API_SECRET'],
}

async def main():
    async with pybotters.Client(apis=apis) as client:
        await client.post('https://api.bybit.com/v2/private/order/create', data={'symbol': 'BTCUSD', ...: ...})
        ...
        await client.post('https://www.btcmex.com/api/v1/order', data={'symbol': 'XBTUSD', ...: ...})
        ...
        await client.post('https://dapi.binance.com/dapi/v1/order', data={'symbol': 'BTCUSD_PERP', ...: ...})
        ...

📖 Wiki

詳しい利用方法は👉Wikiページへ

🗽 License

MIT

💖 Author

https://twitter.com/MtkN1XBt

About

An advanced api client for python botters.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%