見出し画像

BYBIT Testnetでapiを使用して発注する

前回のnote記事で、BYBIT Testnet api から板情報が取得できました。

今回は、apiを使用して発注してみたいと思います。使用環境は、Google Colaboratoryです。ネットで情報取集してみたのですが、apiの仕様変更なのかなかなか動作しない(´;ω;`)

ようやく注文が通ったので、関数にしてみました。

##### USDTの注文はこちら
def bybit_order(symbol, side, qty, price):
   ##### BYBIT Testnet set 取得したkeyとsecretを入れてください
   bybit = ccxt.bybit({"apiKey":"取得したkey", "secret":"取得したsecret"})
   bybit.set_sandbox_mode(True)##### BYBIT Testnet使用の場合必要です。

   bybit.private_linear_post_order_create(
   {
       "side": side,##### "Sell"or"Buy"
       "symbol": symbol,##### Symbol "BTCUSDT"など
       "order_type": 'Limit',##### "Market"で成り行き "Limit"で指値
       "qty": qty,##### 最小単位0.001
       "price": price,###### Limitの注文価格 Marketの場合は削除しないとエラー
       "time_in_force": "GoodTillCancel",
       "reduce_only": False,##### Trueで両建てにならない Falseで両建て
       "close_on_trigger": False
   }
   )

特にTestnetの使用で躓いたのが、

bybit.set_sandbox_mode(True)

この部分です。Testnetを使用するという意味なのですが、ccxtにurlsを指定する方法では動作しませんでした。他にも発注するときの記述法が変わっていたりと、動作するまでかなり苦労しました。今動作しているのもいつまで使えるか分からないので、動作チェックと情報収集は今後も必要になりそうです。使用するときはこんな感じに。

##### 注文関数実行
buy_price = 38500.54321
qtys = 0.01##### 0.01BTC
symbols = 'BTCUSDT'
sides = 'Buy'##### 'Buy' or 'Sell'
print(bybit_order(symbols, sides, qtys, round(buy_price, 3)))

BTCUSDT市場で、BTCを0.01購入するという注文です。エラーがなければNoneが返ってきます。BYBIT Testnetで確認してみてください。

ついでにすべての注文をキャンセルする方法がこちら。

##### BYBIT Testnet Set
bybit = ccxt.bybit({"apiKey":"取得したkey", "secret":"取得したsecret"})
bybit.set_sandbox_mode(True)##### BYBIT Testnet使用の場合必要です。
##### 全注文キャンセル
print(bybit.private_linear_post_order_cancel_all({"symbol":"BTCUSDT"})['ret_msg'])

BTCUSDT市場での注文を全キャンセルします。動作するとOKが表示されます(されるはず(;'∀'))。

注文とキャンセルができたので、取引はできるようになりました。仕様変更があると動作しないので、その時は自力でガンバってください。

これでBotを動かすこともできますが、ポジションの確認は必須です。次回は、ポジション情報を取得してみようと思います。


この記事が気に入ったらサポートをしてみませんか?