🚀 New Experience
23 WebSocket接続時に複数回リクエストに対応した(bitFlyerなどで複数チャンネルが購読に対応した)
28 BybitデータストアのREST API経由の初期化に対応した
29 リクエストメソッドのkwargsに対応した
30 apisをJSON形式のファイルオープンに対応した
✨ WebSocketの複数回リクエストに対応しました
bitFlyer等、WebSocketの購読に複数回リクエスト送信がいる取引所で、必要なトピックを購読できるようになりました。
`send_json`(または`send_str`)をリストで指定します。
python
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経由のデータを取得できるようになりました。
python
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で、リクエスト毎にサブアカウントを指定できるようになります。
python
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`)
json
{
"bybit": ["BYBIT_API_KEY", "BYBIT_API_SECRET"],
"btcmex": ["BTCMEX_API_KEY", "BTCMEX_API_SECRET"],
"binance": ["BINANCE_API_KEY", "BINANCE_API_SECRET"],
"....": ["...", "..."]
}
文字列(ディレクトリパス)を指定して読み込む。
python
async def main():
async with pybotters.Client(apis='apis.json') as client:
...