Skip to content

BETA v0.1.1 リリース

Pre-release
Pre-release
Compare
Choose a tag to compare
@MtkN1 MtkN1 released this 18 Apr 18:03
· 362 commits to main since this release
24981d3

🚀 New Experience

#23 WebSocket接続時に複数回リクエストに対応した(bitFlyerなどで複数チャンネルが購読に対応した)
#28 BybitデータストアのREST API経由の初期化に対応した
#29 リクエストメソッドのkwargsに対応した
#30 apisをJSON形式のファイルオープンに対応した

✨ WebSocketの複数回リクエストに対応しました

bitFlyer等、WebSocketの購読に複数回リクエスト送信がいる取引所で、必要なトピックを購読できるようになりました。

send_json(またはsend_str)をリストで指定します。

async def main():
    async with pybotters.Client(apis=apis) as client:
        wstask = await client.ws_connect(
            'wss://ws.lightstream.bitflyer.com/json-rpc',
            send_json=[
                {
                    'method': 'subscribe',
                    'params': {'channel': 'child_order_events'},
                    'id': 'subscribe:child_order_events',
                },
                {
                    'method': 'subscribe',
                    'params': {'channel': 'parent_order_events'},
                    'id': 'subscribe:lightning_ticker_FX_BTC_JPY',
                },
            ],
            hdlr_json=lambda msg, ws: print(msg),
        )
        await wstask

✨ BybitデータストアのREST API経由の初期化に対応しました

BybitのWebSocketは初期データ(オーダー・ポジション・ウォレット等)が配信されませんでしたが、REST API経由のデータを取得できるようになりました。

async def main():
    async with pybotters.Client(apis=apis.getall(), base_url='https://api.bybit.com') as client:
        store = pybotters.BybitDataStore()
        await store.initialize([
            client.get('/v2/private/order', params={'symbol': 'BTCUSD'}),
            client.get('/v2/private/position/list', params={'symbol': 'BTCUSD'}),
            client.get('/v2/private/wallet/balance'),
        ])
        print(store.order.find())
        print(store.position.find())
        print(store.wallet.find())

✨ リクエストメソッドのkwargsに対応しました

主にFTXで、リクエスト毎にサブアカウントを指定できるようになります。

async def main():
    async with pybotters.Client(apis=apis, base_url='https://ftx.com/api', headers={'FTX-SUBACCOUNT': 'my_subaccount_nickname'}) as client:
        r = await client.get('...')
        r = await client.get('...', headers={'FTX-SUBACCOUNT': 'my_alt_subaccount_nickname'})

✨ apisをJSON形式のファイルオープンに対応しました

API情報をJSONで保存している場合、コード内に変数で書かなくても読み込みるようになりました。

(ファイル名:apis.json)

{
    "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.json') as client:
        ...