Search 4 Truth

Search 4 Truth

Pythonと仮想通貨

【仮想通貨】ビットコインの価格をグラフ化してみる 【Python】

今回は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()をしないと表示されないようです。

f:id:lisbeths:20180131140426p:plain

続いて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()

実行してみます。

f:id:lisbeths:20180201010743p:plain

できましたね〜(書いてる時に思ったんですがアビトラ用に各取引所のデータをplotしたら面白いんじゃねW 後日ブログに...)

おまけ -Twitterに1時間毎にグラフを更新して投稿するbotを作った-

完成品がこちら〜

完全に自己満足botでございました〜〜〜

おやすみなさい