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日の最初のデータが含まれることがなくなります。


  1. 4時間足為替情報取得ファイル作成の続き

    df0.index = df0.index + Hour(1)
    print('4H shift')
    print(df0.tail())
    世界時の4時間足データ df0 を Hour( ) メソッドで index を1時間進めました。

  2. 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 列で最後のデータを取出す。
    どうも列名は小文字でないとダメなようです。

  3. 土日データ欠損

    上記リサンプルを実行すると、
    土日データが欠損値 NaN になりますので
    これを削除します。
    dfd = dfd.dropna(how='all')
    how='all' で行を一括削除します。
    print(dfd.tail(10))

  4. 必要に応じて日足データ保存

    必要に応じて日足データ 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時間足為替情報取得をファイル実行して行きます。


  • 4時間足為替情報取得ファイル実行確認 に進む
  • 4時間足為替情報取得ファイル作成 に戻る
  • 為替情報取得ファイル に戻る
  • yfinance 概要 に戻る
  • 70VPS に戻る