bitflyer HTTP public API ticker

BitcoinBot「招き猫」目次に戻る

 

ブラウザのアドレスバーにアドレスを入れてデータを得る

アドレスバーに貼り付けるだけ→https://api.bitflyer.jp/v1/getticker

データは見れますが、これではプログラムで利用できないので、データとして連続的に取得するにはコードを書いて取り込む。

注:api.bitflyer.jp と api.bitflyer.comが混在してますがどちらでも同じです
 (comが新しいので、どちらかというとcomがいいが、ネットの残骸はまだjpだらけ)

プログラムコードでデータを取得

超シンプルに、requesutsモジュールを使ってTickerのAPIを叩く

返されたのは、200という「成功しました」のコード

返されたデータの中身を見てみる。

最後に.textを付けると、テキスト形式で返してくれということになるらしい。
(らしいというのは適当だが、requestsというモジュールにサービスで含まれていることなので、モジュールの中を見てみなければわからない。しかも見ても難しくてわからない。)

 

次はWEBのデータのやり取りで常識的に使われるJSON形式で表示してみる。

さっきの.TEXTは文字列が”ダブルクォーテーション”で囲まれていたが、こちら.JSONは文字列が’シングルクォーテーション’で囲まれている。

返ってくるデータは同じで、表示のさせ方がモジュールによって違うということだ。

ここで、改行のないデータを見やすく整形してくれるモジュールがあるので使ってみる。

pprintというモジュールで整形して表示する

一対の辞書データごとに改行されていて見やすい。

一行のコードを汎用性のため関数にする

今までは、printの中に文を詰め込んでいたが、他のAPIも叩けるように関数にする。

URLを基本部分と変化する部分に分けて後で連結しているだけだ。

path=の部分を別のAPI用アドレスに変えれば別な関数になり、別な動作をする。

ビットコインの価格を取り出す

 

データの中から’ltp'(last price=最終価格=現在価格)を取る

getdata()で取り出したデータ群から

{
‘product_code’: ‘BTC_JPY’,
・・・・・CUT
‘best_bid’: 800199.0,
‘best_ask’: 800266.0,
ltp‘: 802190.0,
‘volume’: 70727.29266907,
‘volume_by_product’: 2245.69306647
}
getdata()で返される、階層のない辞書から‘ltp’の値を取り出すには、[キー]だけなので、

print(getdata()[‘ltp‘]) #ltpがキーのをprint

型はなにかチェックする関数type()で調べる

print(type(getdata()[‘ltp’])) #802190.0の型は何かtype()で調べる

結果は
<class ‘float’>
float型、大きい数字や少数を扱う数字型ですね。

type()で型を確認しながらコーディングするとエラーが出にくい。

繰り返しビットコインの価格を取り出す

繰り返す命令は while か for です

通常はさっきの関数getdata()をwhileの傘の下に置けばいいだけです

 

結果、 一秒ごとに最新に価格が出力されます。

無限ループになってますので止めるときは ^C (windows)

この値を「変数」に格納すれば、最低限必要な情報は手にできます。

・最低価格(1番安いものと入れ替える) 

・最高価格(1番高いものと入れ替える)

・現在価格

・買った価格or売った価格

この4つでプログラム売買できます。

近い将来億り人ですわ。(今 ±0円/日の辺り)

 

 

BitcoinBot「招き猫」目次に戻る