Python 仮想通貨トレード用ライブラリ pybottersでwebsocketを購読する
Topic
- bybitの板情報を取得する
pybotters
でwebsocketデータをサブスクライブする
Install
Usage
jsonにAPIキーを用意
pybotters.Client
の引数にapis
を指定しない場合、Pythonの実行カレントディクレリに配置したapis.json
を読み込む
import asyncio
import pybotters
test_net = 'https://api-testnet.bybit.com'
async def main():
async with pybotters.Client(base_url=test_net) as client:
store = pybotters.BybitUSDTDataStore()
wstask = await client.ws_connect(
'wss://stream.bybit.com/realtime',
send_json={'op': 'subscribe', 'args': [
'orderBookL2_25.BTCUSD',
]},
hdlr_json=store.onmessage,
)
while not all([
len(store.orderbook),
]):
await store.wait()
while True:
orderbook = store.orderbook.find()
print(orderbook)
if __name__ == '__main__':
try:
asyncio.run(main())
except KeyboardInterrupt:
pass
データのアクセス方法
websocketで受信したデータはDataStore
クラスに格納される
store = pybotters.BybitUSDTDataStore()
DataStore
クラスへのアクセスはfind()
を使う
# orderbookの全てを表示
print(store.orderbook.find())
# orderbookのBuyのみ表示
print(store.orderbook.find({'side': 'Buy'}))
pandas
のデータフレームに入れる
df = pd.DataFrame(store.orderbook.find())
print(df)
price symbol id side size
0 22809.50 BTCUSD 228095000 Buy 241867
1 22809.00 BTCUSD 228090000 Buy 105768
2 22821.50 BTCUSD 228215000 Sell 451
3 22810.00 BTCUSD 228100000 Sell 113707
4 22804.50 BTCUSD 228045000 Buy 55545
5 22804.00 BTCUSD 228040000 Buy 52485
Update
更新があれば、--upgrade
でインストールする