今回はbitFlyerのAPIを使って1分足データをグラフにplotしていきたいと思います。私のPython学習の備忘録として書くのでかなり初歩的な内容になるかと思います。
おまけとしてPythonの標準モジュールである「os」を使ってファイル操作を伴い1時間ごとにグラフを更新してTwitterに画像付ツイートをするプログラムを作ってみました
使った環境
・MacBook Air Early 2015 Sierra 10.12.6
・Python3.6.2 pip3
モジュール
・matplotlib(pip3 install matplotlib)
・numpy(pip3 install numpy)
・requests(pip3 install requests)
numpyは使いませんがmatplotlibをインポートする際にインストールが必要らしい?(matplotlibをインポートする時にエラーが出てインストールを強要された)
おまけ
・tweepy(pip3 install tweepy)
・seaborn(pip3 install seaborn)
・os(標準モジュール)
matplotlibでグラフ化する
まずは適当な数字をplotしてみます。
#い つ も の plt from matplotlib import pyplot as plt #変数numに1〜5までの数値をリストで格納 num = [1,2,3,4,5] #グラフにリストnumを描画する plt.plot(num) #表示 plt.show(num)
3行で簡単なグラフは生成できます。numpyを使って数列を使いplotするのが恒例のようですが今回はビットコインの価格をplotするのでリストに数値を格納してplotしました。python3ではshow()をしないと表示されないようです。
続いてbitFlyerのAPIを叩いてグラフ化していきたいと思います。requestsを使って価格をjson形式で取り出し、1分毎にリストに入れてグラフに描画してみます。
from matplotlib import pyplot as plt from time import sleep #価格を出してタプルで返す def bf(): URL = 'https://lightning.bitflyer.jp/v1/getticker' ticker = requests.get(URL).json() price = int(ticker['best_ask']),int(ticker['best_bid']) return price #一分間隔で変数ask,bidにそれぞれ買値と売値を入れる for i in range(60): price = bf() ask.append(price[0]) bid.append(price[1]) sleep(60) #描画する 第二引数に描画方式 (今回は円) 第三引数にラベルを指定 plt.plot(ask,'-o',label='ask') plt.plot(bid,'-o',label='bid') # plt.plotの数値とラベルを結びつけるために必要 plt.legend() plt.show()
実行してみます。
できましたね〜(書いてる時に思ったんですがアビトラ用に各取引所のデータをplotしたら面白いんじゃねW 後日ブログに...)
おまけ -Twitterに1時間毎にグラフを更新して投稿するbotを作った-
完成品がこちら〜
$BTC 1時間の価格の推移 pic.twitter.com/jl3rwhpi3y
— 篠坂 🦀blockchain🦀 (@L00Y) 2018年1月31日
完全に自己満足botでございました〜〜〜
おやすみなさい