LoginSignup
9
12

More than 5 years have passed since last update.

Jupyter Notebookでビットコインのローソク足チャートを描画

Posted at

Jupyter Notebookでビットコインのローソク足チャートを表示してみました。

ライブラリの準備

pandasとmplotlibをインストールしてください。

現在のところ、ローソク足チャートの描画に必要な mpl_finance はパッケージ名で
インストールできなくなっているので、githubのリポジトリを指定してインストールしました。

pip install git+https://github.com/matplotlib/mpl_finance

ビットコインの時系列データ

kaggleに登録後、下記ページからダウンロードできます。

このデータは1分足のデータで、期間がJan 2012 to October 2017となっています。

ちょっと試すには、大きいので、一部を抜き出しました。

$ head -n 1  bitstampUSD_1-min_data_2012-01-01_to_2017-10-20.csv    > bitcoin.csv
$ tail -n 1000  bitstampUSD_1-min_data_2012-01-01_to_2017-10-20.csv    >> bitcoin.csv

bitcoin.csvをJupyter Notebookからアクセスできる場所に置いてください。

ローソク足チャートの描画

プログラム全体です。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from pandas_datareader import data as dr
import datetime as dt
from mpl_finance import candlestick_ohlc
import datetime
%matplotlib inline
from pylab import rcParams
rcParams['figure.figsize'] = 20,10

data = pd.read_csv('/vagrant/share/bitcoin.csv')
data = data[1:200]
data = data.reset_index()
data["Date2"] = data['Timestamp'].apply(lambda x:mdates.date2num(datetime.datetime.fromtimestamp(x)))
tuples = [tuple(x) for x in data[['Date2','Open','High','Low','Close']].values]

fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d %H:%M"))
ax.grid(True)
plt.xticks(rotation=45)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("BTC-USD")
candlestick_ohlc(ax, tuples, width=0.0005,colorup='g', alpha =.4);

表示されたローソク足チャート
btc_candle_chart.png

分かる範囲で解説すると

from pylab import rcParams
rcParams['figure.figsize'] = 20,10

これは表示されるグラフを大きくするおまじないです、横のサイズ、縦のサイズです。

data = pd.read_csv('/vagrant/share/bitcoin.csv')
data = data[1:200]
data = data.reset_index()

CSVファイルを読み込んでいます。
あまり多いと、ローソクにならないので、200個にしています。

data["Date2"] = data['Timestamp'].apply(lambda x:mdates.date2num(datetime.datetime.fromtimestamp(x)))

元々のCSVはUNIX秒なので、UNIX秒をdatetimeに変換して、それをmatplotlibの日時形式に変換してDate2カラムに挿入します。

tuples = [tuple(x) for x in data[['Date2','Open','High','Low','Close']].values]

値をローソク足チャートで使う構造に変換します。

fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d %H:%M"))
ax.grid(True)
plt.xticks(rotation=45)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("BTC-USD")

グラフのインスタンスを作成し、軸の設定をしています。

candlestick_ohlc(ax, tuples, width=0.0005,colorup='g', alpha =.4);

ローソク足チャートを描画します。 widthをいい感じに設定する必要があります。
セミコロンも必要です。

参考

pythonでローソク足(candle chart)の描画

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12