どうも、月見(@Suzuka14144156)です。
今回は、仮想通貨のチャート・ローソク足とMACD、RSI、ボリンジャーバンドを表示する方法したいと思います。
- Pythonで仮想通貨のローソク足チャートを表示したいがやり方がわからない
- ぐりぐり動かしたりできる、インタラクティブな表示をしたい
- MACD、RSI、ボリンジャーバンドを表示したい
- 一気に複数銘柄取得し、比較したい
この記事のゴール
- こんなチャートをPythonで表示できるようにします!
これは、BTC-USDのチャートです。
- しかもグリグリいじることができます!
これを実現する上で、キーとなるライブラリが「plotly」と「TaLib」です。
plotlyとは?
インタラクティブなグラフを表示するのに使うライブラリがplotlyです。
こんな風に綺麗なグラフが、描けます。
TaLib
- テクニカル指標を計算するためのライブラリ
環境の構築
今回は、Anacondaを用います。
Anacondaをインストール
以下の記事を参考にしてください。
Python Anacondaとは?|インストール〜Jupyter Notebookの立ち上げ
JupyterLabの起動
コマンドプロンプトから、以下のコードを入力ください。
jupyter lab
以下赤枠のアイコンをクリック。
これで起動します。
ライブラリのインストール
- pandas:データ処理
- plotly:グラフの表示
以下以外のライブラリは、デフォルトでインストールされているはずです。
plotlyのインストール
コマンドプロンプトから、以下のコードを入力ください。
conda install -c plotly plotly
jupyter labでうまく表示されない場合は、以下の記事を参考にしてみてください。
【Python】Plotly と Jupyter Labでグラフが表示されない場合の解決方法
TaLib
TaLibのインストール方法は、二つあります。
オススメは、方法1:Anaconda経由でのインストールです。
方法1:Anaconda経由でのインストール(オススメ)
コマンドプロンプトから、以下のコードを入力ください。
conda install -c conda-forge ta-lib
- たったこの一行だけで、完了です。
方法2:公式サイトからインストール
pythonのバージョンを調べる
コマンドプロンプトで以下を入力する。
python -V
PowerShellCopy
すると、インストールされているPythonの情報が表示されます。
Python 3.8.8
この場合は、バージョン3.8のPythonであることがわかります。
TA-Libのwhlファイルをダウンロード
次に,以下のダウンロードサイトからTA-Libのwhlファイルをダウンロードします.
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
ダウンロードするファイルは、以下のようになります。
TA-Libをインストール
ダウンロードしたwhlファイルを保存したディレクトリを開く。
アドレスを入力するところに「cmd」と入力し、エンターを押す。
開いたコマンドプロンプトにて、以下を入力。
pip install whlファイル名
PowerShellCopy
以下は、例です。
pip install TA_Lib‑0.4.19‑cp38‑cp38‑win64.whl
- これで完了です。
仮想通貨のチャートを取得
そのほかにもYahoo Financeにある銘柄なら取得可能ですので、各々で取得したい銘柄を追加ください。
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import talib
import pandas as pd
from pandas_datareader import data as pdr
import datetime
import yfinance as yf
import numpy as np
#BTCのチャートを取得
tickers = ['BTC-USD','ETH-USD','BNB-USD','XRP-USD','DOGE-USD']
#取得開始日を入力
start = "2022-01-02"
#取得終了日を入力
end = datetime.date.today()
#Yahoofinanceから取得するように設定
yf.pdr_override()
#データの取得を実行
crypto_data = pdr.get_data_yahoo(tickers, start, end)
以下を実行すると取得したデータが表示されます。
crypto_data
仮想通貨チャートでとテクニカル指標を表示
bb_trigger = Falseとなっていますが、bb_trigger = Trueにすることで、ボリンジャーバンドを表示できます。
bb_trigger = False
for ticker in tickers:
#fig初期化
fig = make_subplots(rows=4, cols=1, shared_xaxes=True, vertical_spacing=0.05, row_width=[0.2,0.2,0.2,0.7], x_title="Date")
#MACD
macd = pd.DataFrame(data=None)
macd['macd'], macd['macdsignal'], macd['macdhist'] =talib.MACD(crypto_data['Adj Close'][ticker], fastperiod=12, slowperiod=26, signalperiod=9)
#RSI
rsi = pd.DataFrame(data=None)
rsi= talib.RSI(crypto_data["Close"][ticker], timeperiod=14)
line_80 = pd.Series([80]*len(crypto_data), index=crypto_data.index)
line_20 = pd.Series([20]*len(crypto_data), index=crypto_data.index)
#ボリンジャーバンド
bb = pd.DataFrame(data=None)
bb["u_1σ"], bb["middle"], bb["l_1σ"] = talib.BBANDS(crypto_data['Adj Close'][ticker], timeperiod=20, nbdevup=1, nbdevdn=1, matype=0)
bb["u_2σ"], bb["middle"], bb["l_2σ"] = talib.BBANDS(crypto_data['Adj Close'][ticker], timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
bb["u_3σ"], bb["middle"], bb["l_3σ"] = talib.BBANDS(crypto_data['Adj Close'][ticker], timeperiod=20, nbdevup=3, nbdevdn=3, matype=0)
#fig
fig.add_trace(go.Candlestick(x=crypto_data.index, open=crypto_data["Open"][ticker], high=crypto_data["High"][ticker], low=crypto_data["Low"][ticker], close=crypto_data["Close"][ticker], showlegend=False))
fig.add_trace(go.Scatter(x=crypto_data.index,y=macd['macd'],mode="lines", showlegend=False), row=3, col=1)
fig.update_yaxes(title_text="MACD", row=3, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y=macd['macdsignal'],mode="lines", showlegend=False), row=3, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y=rsi,mode="lines", showlegend=False), row=4, col=1)
fig.update_yaxes(title_text="RSI", row=4, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y= line_80,mode="lines", showlegend=False), row=4, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y= line_20,mode="lines", showlegend=False), row=4, col=1)
if bb_trigger == True:
fig.add_trace(go.Scatter(x=crypto_data.index,y= bb["u_1σ"],mode="lines", showlegend=False,opacity=0.5), row=1, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y= bb["l_1σ"],mode="lines", showlegend=False,opacity=0.5), row=1, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y= bb["u_2σ"],mode="lines", showlegend=False,opacity=0.5), row=1, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y= bb["l_2σ"],mode="lines", showlegend=False,opacity=0.5), row=1, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y= bb["u_3σ"],mode="lines", showlegend=False,opacity=0.5), row=1, col=1)
fig.add_trace(go.Scatter(x=crypto_data.index,y= bb["l_3σ"],mode="lines", showlegend=False,opacity=0.5), row=1, col=1)
fig.update_layout(
title=ticker,
#plot_bgcolor ='lightgray',
autosize=False,
width=1200,
height=800,
margin=dict(
l=0,
r=0,
b=0,
t=40,
pad=0,
),
font=dict(
size=13,
)
)
fig.show()
print('*-'*100)
綺麗に表示されました。
ボリンジャーバンドを表示したバージョンは、以下です。
- これで沢山の銘柄のテクニカル分析を比較しながら行えるようになりました。
Pythonでファイナンスのデータ分析の勉強方法
本
私は、以下の本で勉強しました。
かなり詳しく書かれており、とてもオススメの本です。
Udemy
Udemyはオンライン口座です。
一度購入すれば、ずっと閲覧できるのでオススメです。
私の記事
私のブログでも解説していますので参考にしてみてください。
【Python x 仮想通貨】分析方法のまとめ(テクニカル分析など)
まとめ
今回は、仮想通貨のチャート・ローソク足とMACD、RSI、ボリンジャーバンドを表示する方法しました。
私のブログではほかにも、仮想通貨の自動トレードの方法などを解説しているのでぜひ参考にしてみてください。
無料で閲覧可能で、コードをコピペして動かすことができます。
【Python|cctx】ビットコイン自動取引ツールの作成方法まとめ
コメント