Win11 WSL2 Ubuntu Python yfinance
ローソク足チャート作成
ここまでで、日足為替情報取得ファイルが実行できました。
引き続き、取得した4時間足、日足データを使ってローソク足チャートを作成して行きます。
mplfinance インスト-ル
ロ-ソク足チャ-トを作成するためには mplfinance をインストールする必要があります。
ローソク足チャートを含む金融関係のグラフ描画機能はもともと matplotlib.finance として
Matplotlib に含まれていたが、Matplotlib バージョン2.0から mpl_finance という
別のパッケージとして切り出されました。
さらに mplfinance という新たなパッケージが作られ、2021年現在は
mpl_finance は DEPRECATED(非推奨)となり mplfinance の使用が推奨されています。
mplfinance は Matplotlib とは別にインストールする必要があります。
conda-forge からインストールファイルをダウンロードします。
WSL2 Ubuntu のターミナルを立ち上げます。
mplfinance をインストールファイルします。
yamada@yama:~$ conda install -c conda-forge mplfinance
Enter を押してインスト-ルを開始します。
しばらく黙りこくってからコメントが次々と出てきて完了します。
インスト-ル結果を見ます。
$ conda list
でインスト-ルを確認すると
yamada@yama:~$ conda list # packages in environment at /home/yamada/miniconda3: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 2_kmp_llvm conda-forge ・・・・・・・・・・・・・・・・ ・・・・・・・・・・・ ・・・・・・・・・・・・・・・・ mplfinance 0.12.9b7 pyhd8ed1ab_0 conda-forge ・・・・・・・・・・・・・・・・ ・・・・・・・・・・・ ・・・・・・・・・・・・・・・・
mplfinance 0.12.9b7 pyhd8ed1ab_0
がインスト-ルされました。
mplfinance を使用
mplfinance モジュ-ルを使用して4時間足ロ-ソク足チャ-トを表示します。
豪ドル/円 の約100本分の4時間足 CSV デ-タを用意します。
データの取得方法は
yfinance 概要
から順次読んでいただくと分かります。
4時間足 CSV デ-タは
/home/yamada /public_html/manep/yfin_audjp_4h.csv
に保存されています。
ライブラリ取込み
取込む必要があるライブラリは4つです。
import pandas as pd
import matplotlib.pyplot as plt
from mplfinance.original_flavor import candlestick_ohlc
必要な CSV ファイル yfin_audjp_4h.csv を取込みます。
CSV の保存場所は絶対パスで表記する必要があります。
df = pd.read_csv(
"/home/yamada /public_html/manep/yfin_audjp_4h.csv", index_col='Datetime'
)
特定のカラム Datetime の値をインデックスラベルとして使っていますので
index_col 引数を使用して csv データを読込みます。
使用するデータは最後(最新)から100番目までの100組とします。
df1 = df[-1:-101]
日時データはインデック列にありますので
Date = df1.index
とします。
Date 中には 2025/07/18 00:00:00 のような値が入ります。
lastday=Date[-1][:10]
最後(最新)の日付も取得しておきましょう。
あとで使います。
ロ-ソク足表示順
ロ-ソク足を表示する順番 Idx を設定します。
df1 のインデックは日時データなので、これを
0,1,2,3,・・・・・・・・
のような整数列に変更します。
df1.reset_index(drop=True, inplace=True)
drop=True で元のインデックを廃棄します。
inplace=True で df1 のインデックを 0,1,2,3,・・・
に直接変換します。
豪ドル/円 CSV デ-タでロ-ソク足表示
yfin_audjp_4h.csv デ-タをロ-ソク足表示していきます。
ロ-ソク足表示に必要なデ-タは
Open = df1["open"].values
High = df1["high"].values
Low = df1["low"].values
Close = df1["close"].values
と Date と Idx
の6列です。
X 軸日付処理
yfin_audjp_4h.csv デ-タの中の日付は
2025-07-18 00:00:00
のようになっており、そのまま X 軸日付表示をさせるには文字列が長すぎます。
よってこれを 7-18 のように短縮します。
- 型変換
Pandas で抜き取った Date は リスト型になっています。
これを str 型 に変換します。
変換しても CSV 書式がそのまま残っていますので、
2025/07/18 00:00:00
のように変換されます。
余計な文字列が沢山ありますので、これを削除していきます。
必要なのは、月日の -07-18 です。
左から 0~3 の 4 文字と10文字以降は必要ないので
e4 = str(Date[i])[4:10]
とすると、6文字が取得され
e4 には -07-18 が入ります。 - 月日が1桁の時
月日が1桁の時は、-01 のような形をしています。
0 は余計なのでこれを削除します。
Python 組込関数 replace()を使って、一旦 -0 を - に置き換えます。
第一引数に置換元文字列、第二引数に置換先文字列を指定します。
e6 = e4.replace("-0", "-")
e4 は -07-18 ですので -7-18 が e6 に入ります。 - 左端の - を削除
Python 組込関数 lstrip() で、左端の - を削除します。
e8 = e6.lstrip("-")
e8 には 7-18 が入りました。 - 繰返して X 軸日付処理
xData は X 軸の目盛り日付です。
そして、Python 組込関数 enumerate()を使って Date デ-タがある限り、i = 0 から 順番に for 分で処理を繰り返します。
Date の中に 101個のデ-タが存在するとすれば、i は 0~100 まで変化します。
今回は 4時間足10本ごとに X 軸日付を付けることにします。
if(i % 10 == 0):
として 10本ごとに日付を作成します。
また、xD は日付表示位置となります。
まとめると以下のようになります。
xDate = [] xD = [] for i, key in enumerate(Date): if(i % 10 == 0): e4 = str(key)[4:10] e6 = e4.replace("-0", "-") e8 = e6.lstrip("-") xDate.append(e8) xD.append(i)
以上でロ-ソク足表示の準備ができました。
引き続き、ロ-ソク4時間足表示方法について説明していきます。