-
Notifications
You must be signed in to change notification settings - Fork 10
Quickstart
PyBybitを使うには、まずAPIクラスを生成します。そうすることで各種機能を呼び出せるようになります。
引数keyにはAPIキー、secretにはAPIシークレットの文字列を渡します。
import pybybit
client = pybybit.API(key='YOUR_API_KEY', secret='YOUR_API_SECRET')引数key、secretが空でもAPIを利用できます。その場合はパブリックAPIは利用できますが、プライベートAPIは未認証エラーになります。
client = pybybit.API()引数testnetをTrueに指定することで、Bybitのテストネット環境を利用できます。
※テストネット環境はAPIキーとシークレットが本番環境とは異なることに注意してください。
client = pybybit.API(key='YOUR_TESTNET_API_KEY', secret='YOUR_TESTNET_API_SECRET', testnet=True)REST APIを呼び出すことで、注文を送信したり、各種情報を取得することができます。
以下のようにしてREST APIを呼び出すことが出来ます。
引数にはAPIのパラメーターを指定します。
# インバース無期限 ポジション情報取得
response = client.rest.inverse.private_position_list(symbol='BTCUSD')
print(response.json())
# リニア無期限 ポジション情報取得
response = client.rest.linear.private_position_list(symbol='BTCUSDT')
print(response.json())
# インバース先物 ポジション情報取得
response = client.rest.futures.private_position_list(symbol='BTCUSDM21')
print(response.json())インバース無期限のAPIはclient.rest.inverse、リニア無期限のAPIはclient.rest.linear、インバース先物のAPIはclient.rest.futures、からメソッドを呼び出します。
その他の注文送信のAPIなど、全てのAPIのメソッド名は、Endpoints のWikiページをご覧ください。
パラメーター(引数)やレスポンスの形式については Bybit API Docs をご覧ください。
パラメーターがPythonの予約語と競合している場合は、引数にアンダーバー(_)を付与して指定します。
例: client.rest.inverse.public_tradingrecords(symbol='BTCUSD', from_=268217252)
レスポンスはrequestsモジュールのResponseクラスをインターフェースとして使用しています。
APIの結果を辞書形式で受け取る為には、responce.json()で取得できることだけ把握できていればPyBybitを利用できます。
data = response.json()
print(data['result'])インタフェースの詳細が知りたい場合はrequestsのリファレンス をご覧ください。
WebSocket APIを呼び出すことで、各種情報をリアルタイムに受信することができます。
以下のようにしてWebSocket APIを呼び出すことが出来ます。WebSocketは新しいスレッドを作成して常駐します。
引数topicsには購読するトピックを指定します。
# インバース無期限・先物(パブリック・プライベート共通)
client.ws.run_forever_inverse(topics=[
'orderBookL2_25.BTCUSD', 'trade.BTCUSD', 'insurance', 'instrument_info.100ms.BTCUSD', 'klineV2.1.BTCUSD',
'position', 'execution', 'order', 'stop_order',
])
# リニア無期限(パブリック)
client.ws.run_forever_linear_public(topics=[
'orderBookL2_25.BTCUSDT', 'trade.BTCUSDT', 'instrument_info.100ms.BTCUSDT', 'candle.1.BTCUSDT',
])
# リニア無期限(プライベート)
client.ws.run_forever_linear_private(topics=[
'position', 'execution', 'order', 'stop_order', 'wallet',
])しかしWebSocket APIを呼び出しただけでは受信したデータは処理されません。
受信データに何かの処理を行いたい場合はコールバック関数を追加する必要があります。
以下はパブリックなトレード情報を購読し、それをprintして表示する処理の例です。
client.ws.add_callback(lambda msg, ws: print(msg))
client.ws.run_forever_inverse(topics=['trade.BTCUSD'])
# 対話モード(REPL)でない場合スクリプトが終了する為、input関数で停止させる
input()コールバック関数には第一引数に受信データ(文字列)、第二引数にwebsoclet.WebSocketクラスが渡されます。
WebSocket APIの受信データはREST APIとは違い、差分データを含んでいます。差分データがあると整合性の取れたデータを保管するには多くの実装を必要とします。
そこでPyBybitにはそれらを実装し、自動でデータを処理するデータストアクラスの機能があります。
以下は板情報を購読、受信するまで待機し、板のベスト値を表示する例です。
store = pybybit.DataStore()
client.ws.add_callback(store.onmessage)
client.ws.run_forever_inverse(topics=['orderBookL2_25.BTCUSD'])
while len(store.orderbook) == 0:
store.wait()
print(store.orderbook.getbest(symbol='BTCUSD'))詳細は DataStore のWikiページをご覧ください。