bitFlyerのEcho APIを使ってBitcoinのリアルタイムレートを可視化(1)
はじめに
今更仮想通貨に興味が出てきたのでbitFlyerに登録しました。 どうせ登録したのでAPIを触ってみようと思い、Echo APIが簡単に使えそうだったのでBitcoinのリアルタイムレートをMatplotlibを使って可視化してみました。
実行環境
- マシン:MacBook Pro (Retina, 13-inch, Mid 2014)
- CPU:2.8 GHz Intel Core i5
- メモリ:16 GB 1600 MHz DDR3
- プログラミング言語:Python 3.6
プログラム
import requests
import json
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib.font_manager import FontProperties
from datetime import datetime
# エンドポイント
end_point = 'https://bitflyer.jp/api/echo/price'
# APIからデータ取得
response = requests.get(end_point)
rate = json.loads(response.text)
# 日本語を表示するためにフォントを設定
fp = FontProperties(fname='ipaexg.ttf', size=15)
# ウィンドウを描画
fig = plt.figure(figsize=(12,8))
# データ用の配列を初期化
time_axis = [datetime.now() for _ in range(120)]
mid = [rate['mid'] for _ in range(120)]
bid = [rate['bid'] for _ in range(120)]
ask = [rate['ask'] for _ in range(120)]
# コールバック関数
def plot(loop_count):
# グラフをリフレッシュ
plt.cla()
# APIからデータ取得
response = requests.get(end_point)
rate = json.loads(response.text)
# 配列の先頭を削除
time_axis.pop(0)
mid.pop(0)
bid.pop(0)
ask.pop(0)
# 配列の最後にデータを追加
time_axis.append(datetime.now())
mid.append(rate['mid'])
bid.append(rate['bid'])
ask.append(rate['ask'])
# プロット
plt.plot(time_axis, mid, label='仲値')
plt.plot(time_axis, bid, label='買取価格')
plt.plot(time_axis, ask, label='販売価格')
# ラベル配置
plt.legend(loc='upper left', bbox_to_anchor=(1.05, 1), borderaxespad=0, prop=fp)
plt.subplots_adjust(right=0.8)
# 1000ms(1s)でアニメーションを更新
ani = FuncAnimation(fig, plot, interval=1000)
# 描画
plt.show()
ipaexg.ttfは以下からダウンロードしてください。 https://ipafont.ipa.go.jp/old/ipaexfont/download.html
実行結果
Thanks for reading!