ローソク足チャート (Candlestick chart) は、株価などの相場の値動きを時系列に沿って図表として表す手法の一つです。単位期間を定め、単位期間中に初めに付いた値段を始値(はじめね)、最後に付いた値段を終値(おわりね)、最も高い値段を高値(たかね)、最も安い値段を安値(やすね)とし、この四種の値段(四本値=よんほんね)を「ローソク」と呼ばれる一本の棒状の図形に作図し、時系列に沿って並べて値段の変動をグラフとして表したものです。
mplfinance ライブラリ
mplfinance ライブラリを使ってローソク足チャートをプロットできます。mplfinance は金融データの視覚化および分析のための matplotlib ユーティリティーです [1]。旧バージョンで必要だった matplotlib の処理は、現バージョンの API では内部で自動的に処理されるようになりました。
データファイル | candlestick_sample_data.csv |
上記サンプル CSV ファイルを読み込んでローソク足プロットを作成し、画像ファイルとして保存するスクリプトを下記に示しました。
出力された画像は以下のようになります。
PySide2 のウィジェットに埋め込む
PySide2 (Qt for Python) で、mplfinance の出力をウィジェットに埋め込んで利用する場合、明示的に matplotlib と mplframe とのやりとりを記述する必要があります。そのためちょっと面倒が増え、プロットの表示も若干変わってしまいます。工夫すればもっと元の画像に近づけられるかもしれませんが、まあこれで良しとしました。
以下に、PySide2 のサンプルを示しました(Qt6/PySide6 に matplotlib のオブジェクトを埋め込むサポートをまだ利用できませんでした)。同じ CSV ファイルを読み込んでいます。
#!/usr/bin/env python | |
# coding: utf-8 | |
# Reference | |
# https://stackoverflow.com/questions/60599812/how-can-i-customize-mplfinance-plot | |
from matplotlib.backends.backend_qt5agg import ( | |
FigureCanvasQTAgg as FigureCanvas, | |
NavigationToolbar2QT as NavigationToolbar, | |
) | |
import mplfinance as mpf | |
import pandas as pd | |
import sys | |
from PySide2 import QtCore | |
from PySide2.QtWidgets import ( | |
QApplication, | |
QMainWindow, | |
) | |
class Example(QMainWindow): | |
def __init__(self): | |
super().__init__() | |
self.initUI() | |
self.resize(800, 600) | |
self.setWindowTitle('Candlestick Chart on Qt5') | |
self.show() | |
def initUI(self): | |
# sample dataset | |
filename = 'candlestick_sample_data.csv' | |
df = pd.read_csv(filename, index_col=0, parse_dates=True) | |
sty = mpf.make_mpf_style(base_mpf_style='yahoo', rc={'font.size': 8}) | |
fig = mpf.figure(dpi=100, style=sty) | |
ax1 = fig.add_subplot(2, 1, 1) | |
ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) | |
mpf.plot(df, type='candle', mav=(3, 6, 9), | |
show_nontrading=True, datetime_format='%m-%d', | |
ax=ax1, volume=ax2) | |
canvas = FigureCanvas(fig) | |
self.setCentralWidget(canvas) | |
self.addToolBar( | |
QtCore.Qt.BottomToolBarArea, | |
NavigationToolbar(canvas, self) | |
) | |
def main(): | |
app = QApplication(sys.argv) | |
ex = Example() | |
sys.exit(app.exec_()) | |
if __name__ == '__main__': | |
main() |
Fedora 34 の GNOME デスクトップ環境で実行した例を示しました。
参考サイト
- matplotlib/mplfinance: Financial Markets Data Visualization using Matplotlib
- pandas, Matplotlib(mplfinance)でローソク足チャートを作成 | note.nkmk.me [2020-05-23]
- python - How can I customize mplfinance.plot? - Stack Overflow [2020-03-09]

にほんブログ村
0 件のコメント:
コメントを投稿