position = bybit.get_position() print(‘Position ———————————————————-‘) print(json.dumps(position, indent=2))
板情報を取得
orderbook_buy = bybit.get_orderbook(side=’Buy’) print(‘Orderbook (Buy) —————————————————‘) print(orderbook_buy.head(5)) best_buy = float(orderbook_buy.iloc[0][‘price’])
オーダーを送信
print(‘Sending Order… ————————————————–‘) order_resp = bybit.place_active_order( side=’Buy’, order_type=’Limit’, qty=100, price=best_buy – 100, time_in_force=’PostOnly’) print(json.dumps(order_resp, indent=2)) order_id = order_resp[‘result’][‘order_id’] if order_resp[‘result’] else None time.sleep(5.0)
オーダーをキャンセル
print(‘Cancel Order… —————————————————‘) cancel_resp = bybit.cancel_active_order(order_id=order_id) print(json.dumps(cancel_resp, indent=2))
パラメーターの内容
インスタンス生成時に出てくる5つのパラメーターを確かめましょう。
api_key : APIキー
secret : 秘密鍵
symbol : 売買できる銘柄
ws : WebSocketへの接続。デフォルトは「接続する」
test : テストネット設定。デフォルトは「使用しない」
HTTP API用メソッドの詳細
Bybitの公式ドキュメントを参照しながら対応しましょう。メソッド名が公式と異なりますが、上から順にコードを並べているので、手を加える必要はありません。
ただし、HTTP APIの性質上、レート制限に注意してください。
#
Http Apis
#
place_active_order(side=None, symbol=None, order_type=None, qty=None, price=None, time_in_force=’GoodTillCancel’, take_profit=None, stop_loss=None, order_link_id=None)
“””
オーダーを送信
“””
get_active_order(order_id=None, order_link_id=None, symbol=None, sort=None, order=None, page=None, limit=None, order_status=None)
“””
オーダーを取得
“””
cancel_active_order(order_id=None)
“””
オーダーをキャンセル
“””
place_conditional_order(side=None, symbol=None, order_type=None, qty=None, price=None, base_price=None, stop_px=None, time_in_force=’GoodTillCancel’, close_on_trigger=None, reduce_only=None, order_link_id=None)
“””
条件付きオーダーを送信
“””
get_conditional_order(stop_order_id=None, order_link_id=None, symbol=None, sort=None, order=None, page=None, limit=None)
“””
条件付きオーダーを取得
“””
cancel_conditional_order(order_id=None)
“””
条件付きオーダーをキャンセル
“””
get_leverage()
“””
レバレッジを取得
“””
change_leverage(symbol=None, leverage=None)
“””
レバレッジを変更
“””
get_position_http()
“””
ポジションを取得(HTTP版)
“””
change_position_margin(symbol=None, margin=None)
“””
ポジションマージンを変更
“””
get_prev_funding_rate(symbol=None)
“””
ファンディングレートを取得
“””
get_prev_funding(symbol=None)
“””
アカウントのファンディングレートを取得
“””
get_predicted_funding(symbol=None)
“””
予測資金調達レートと資金調達手数料を取得
“””
get_my_execution(order_id=None)
“””
アカウントの約定情報を取得
“””
#
新しい Http Apis (開発中)
#
symbols():
“””
シンボル情報を取得
“””
kline(, symbol=None, interval=None, _from=None, limit=None):
“””
ローソク足を取得 (開発中)
“””
place_active_order_v2(, symbol=None, side=None, order_type=None, qty=None, price=None, time_in_force=’GoodTillCancel’, order_link_id=None):
“””
オーダーを送信 v2 (開発中)
“””
cancel_active_order_v2(order_id=None):
“””
オーダーをキャンセル v2 (開発中)
“””
※ 開発中のAPIを使用する場合、注文が機能しないなどの問題が発生する可能性があります。
エラーが発生した場合
APIをBybitに接続しようとすると、エラーが発生して途方に暮れることがあります。エラーコードを確認し、冷静に対処することが重要です。
エラーに対する対処方法をまとめました。
「ret_code:10004 error sign!」
署名が不完全な場合、上記のエラーコードが表示されます。Bybox公式サイトのサンプル結果を参照して、結果を確認しましょう。
URLパラメーターがアルファベット順になっていない場合、「symbol」の後に「leverage」が来るようにしてもエラーコードが返されます。
アルファベット順に項目を並べ替えるなどの配慮も必要です。
「ret_code:10002 invalid request, please check your timestamp and recv_window param.」
プログラム実行とサーバーのそれぞれの環境で、タイムスタンプが大きく異なるとエラーが発生します。
「recv_window」の初期値はサーバーと送信タイムスタンプの時間差を調整しますが、このパラメーターを大きくしてもエラーを解消することができます。
タイムスタンプがサーバーの時間よりも前に設定されている場合、recv_windowを大きくすることで解消できますが、逆の場合は1000ミリ秒を超えるとrecv_windowの変更だけではエラーを解消できません。
安定した動作を保証するために、次のように設定を変更することも考えてください。
timestamp = int(time.time() * 1000) – 100000 url = self.api_endpoint + ‘/position/list’ param = { ‘api_key’:self.token_id, ‘recv_window’:500000, ‘timestamp’:timestamp }
情報をチェック
コメント