見出し画像

仮想通貨bot 勉強記録⑤

~BybitのAPIを使ってみる~

前回までのあらすじ

第2回:3まで終了しました。

このまま教科書通りに進めたいんですが、僕はbitflyerを使えないので、bybitのbotを作らないといけません。なので、ここからは教科書の内容をbybitに置き換えて進めていきます。

次は第2回:4 ”cryptowatchから数字を取り出す” なんですが、残念なことにcryptowatchのAPI取引所リストを確認しても、bybitがありません。なんでやねん。。。

ということで、cryptowatchではなく、bybitの公式APIを使ってみます。初見ではマジで意味不明です。読む気すら起こりません。。。が、読まないことには進まないので頑張りましょう。

まず、bybitの公式API仕様書について
左側のリストがメニューで、上のInverseとかUSDTとかは取引形態です。項目が分かれてるってことは、取引形態によってAPIが違うってことですねたぶん。

画像1


まずは仕様書からローソク足の項目を探します。chromeを使えば日本語に翻訳してくれるので、適宜使っていきます。ちなみにローソク足は英語だとKlineです。

画像2

ありました。MarketDataEndpointsのQueryKlineという項目です。
ここにbybitのAPIの使い方が書いてあります。

画像3

parameterがKline情報を呼び出す際に使うパラメータです。
右のrequiredは、そのパラメータが必須かどうかで、trueになっている項目は入力しないとデータを取得できません。
更に右のtypeはパラメータを入力する際のデータのタイプです。stringは文字で、integerは整数です。この辺は結構基礎知識らしく、python1年生の最初のほうに書いてありました。

ちなみに仕様書の右側には、APIの使用例と応答例が書いてあります。

画像4

bybitのAPIの使い方が分かったところで、教科書に戻ります。
2018年1月16日の日足のローソク足を取り出します。
とりあえずbybitAPI仕様書の、ローソク足の取り出し方使用例をコピペしましょう。

import bybit
client = bybit.bybit(test=True, api_key="api_key", api_secret="api_secret")
print(client.Kline.Kline_get(symbol="BTCUSD", interval="m", **{'from':1}).result())

このコードがどんなデータを呼び出すのか確認します。

1行目:bybitモジュールのインポート

2行目:テストネットかどうかの選択(bybitは本番用とテスト用がある)、APIキーとシークレットキーの入力を行う。
ただ、KlineはMarketData(公用データ)なので、それぞれのキーを入力する必要はない。

3行目:Klineの取得に必要なパラメータを入力し、出力
例だと、ペア:BTCUSD、月足、タイムスタンプ1(最初から?)

なるほど。2行目のfromのパラメータ入力のやり方が謎ですが、とりあえず実行してみよう。

画像5

おぉ、、、見にくい、、、

richのprint関数を使ってもう一度実行します。さっきのコードの2行目に追記して、、、

from rich import print

画像6

見やすいわ~。
関係ないけど、実行したときに文字がズラーッと出てきてかっこよかった(語彙力)

ここで問題発生。取得した1本目のローソク足のタイムスタンプを変換してみると、、、

画像7

2018/12/01だと!教科書の練習問題は2018/01/16のローソク足を取り出すことだったので、練習問題の再現ができないじゃないか。
Bybitの設立が2018年末ってことなんですかね?まぁいいや。

代わりに2019/11/11の日足ローソク足を取得してみます。
タイムスタンプは1573430400なので、from:には1573430400を入力。

画像8

日足のデータが欲しいので、interval="d"
使用例にはパラメータのlimitが使われていなかったけど、今回はローソク足1本だけ取得できればよいので、limit=1を追記して、、

出来上がったコードはこちら

import bybit
from rich import print

client = bybit.bybit(
        test=True,
        api_key="api_key",
        api_secret="api_secret")
        
print(client.Kline.Kline_get(
        symbol="BTCUSD",
        interval="d",
        **{'from':1573430400},
        limit="1").result())

実行すると、、、

画像9

取得できました!

でも最後の1文が謎だ。
bravadoモジュールの、requests_client関数内のRequestsResponseAdapterのデータが****ってこと?(見せていいデータなのか分からずとりあえず隠した)
分かる人いましたら教えてください<(_ _)>

とりあえず今回はここまで。

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