Win11 WSL2 Ubuntu Python yfinance
日足為替情報取得ファイル作成
ここまでで、豪ドル/円 4時間足取得ファイルが作成できました。
引き続き、豪ドル/円 日足取得ファイルを作成していきます。
世界時が index になっている4時間足データ df0 を利用してこれを日足データに変換します。
世界時が index になっているため、取得される4時間足は
例えば 2025-07-24 ~25 の場合
2025-07-24 15:00:00
2025-07-24 19:00:00
2025-07-24 23:00:00
2025-07-25 03:00:00
2025-07-25 07:00:00
となり、7/24日の最後のデータの一部に25日の最初のデータが含まれてしまいます。
要するに4時間足データが日をまたいでしまうのです。
これを防ぐためには index を1H進める必要があります。
すると
2025-07-24 16:00:00
2025-07-24 20:00:00
2025-07-25 00:00:00
2025-07-25 04:00:00
2025-07-25 08:00:00
となり
7/24日の最後のデータに25日の最初のデータが含まれることがなくなります。
- 4時間足為替情報取得ファイル作成の続き
df0.index = df0.index + Hour(1)
print('4H shift')
print(df0.tail())
世界時の4時間足データ df0 を Hour( ) メソッドで index を1時間進めました。 - 4時間足→日足
dfd = df0.resample('D').agg({ 'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last'}) print(dfd.tail(10))
元となるデータは df0 です。
これを pandas で日のデータにサンプルし直します。
resample('D')
まとめ方は同じ日のデータにおいて
agg({ }) でサンプル方法を指定します。
'open': 'first',
open 列で最初のデータを取出す。
'high': 'max',
high 列で最大のデータを取出す。
'low': 'min',
low 列で最小のデータを取出す。
'close': 'last'
close 列で最後のデータを取出す。
どうも列名は小文字でないとダメなようです。 - 土日データ欠損
上記リサンプルを実行すると、
土日データが欠損値 NaN になりますので
これを削除します。
dfd = dfd.dropna(how='all')
how='all' で行を一括削除します。
print(dfd.tail(10)) - 必要に応じて日足データ保存
必要に応じて日足データ dfd を csv ファイルとして保存します。
ファイル置場、ファイル名は適当です。dfd.to_csv('/home/yamada/public_html/manep/yfin_audjp_d.csv')
4時間足為替情報取得ファイル続きまとめ
追加の続き部分(赤字)を含めまとめるとファイル内容は以下のようになります。
#!/home/yamada/miniconda3/bin/python3
#coding: utf-8
import yfinance as yf
import pandas as pd
import datetime
from pandas.tseries.offsets import Hour
print("日本標準時(JST)現在時刻")
print(datetime.datetime.now())
pair='AUDJPY=X'
df = yf.download(pair, period='730d', interval='4h', auto_adjust=bool)
# 4時間足の時 max 730d まで
print('4時間足データ表示')
print(df.tail())
print('Volume 削除')
df.drop(labels=['Volume'], axis=1, inplace=True)
print(df.tail())
print("列 Close と 列 Open を入替")
df = df[['Open', 'High', 'Low', 'Close']]
print(df.tail())
print("カラムラベルの変更")
df.columns = ['open', 'high', 'low', 'close']
print(df.tail())
df0 = df.copy()
print("df0 元の4h足 一旦保存")
# 世界時(UTC)からの日本時間時差(+9時間)調整
df.index = df.index + Hour(9)
print('9H shift')
print(df.tail())
df.to_csv('/home/yamada/public_html/manep/yfin_audjp_4h.csv')
# 世界時(UTC)から(+1時間)調整
df0.index = df0.index + Hour(1)
print('1H shift')
print(df0.tail(10))
dfd = df0.resample('D').agg({
'open': 'first',
'high': 'max',
'low': 'min',
'close': 'last'})
print(dfd.tail(10))
print("すべての値が欠損値NaN行削除")
dfd = dfd.dropna(how='all')
print(dfd.tail(10))
print("日足データを yfin_audjp_d.csv に書込")
dfd.to_csv('/home/yamada/public_html/manep/yfin_audjp_d.csv')
上記のファイル内容の
#!/home/yamada/miniconda3/bin/python3
~・・・~
最後
までをすべてをコピ-し、Python ファイルを作成します。
自分の PC Windows で TeraPad 等を使用して作成できたら
\\wsl.localhost\Ubuntu-22.04\home\yamada\public_html
に保存します。
ファイル名は
yfin_audjp_test3.py
とします。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
ここまでで、4時間足為替情報取得ファイルが作成できました。
引き続き、4時間足為替情報取得をファイル実行して行きます。