Windows11 WSL2 Ubuntu Python Ⅱ
相関係数予測
ここまでで相関係数による予測ができるようになりました。
引き続き、元データをロ-ソク足表示にして予測が見やすいチャートにしてみます。
ロ-ソク足表示にについては
ロ-ソク足表示ファイル作成の中で説明しました。
ここで作成した mplf-t.py を
相関係数応用ファイルまとめで作成した
dsc-4.py をもとにして合体します。
ライブラリ追加
元となる相関係数応用ファイル dsc-4.py にはロ-ソク足表示に必要となるライブラリが不足しています。
これらをインポートします。
import matplotlib.pyplot as plt
import datetime
from datetime import datetime as dt
from mplfinance.original_flavor import candlestick_ohlc
予測最終日取得関数
mane_chart_go.csv デ-タの中の日付は
2020/10/20 00:00:00
のようになっており、そのまま X 軸日付表示をさせるには文字列が長すぎます。
よってこれを 10/20 のように短縮します。
また、予測最終日取得も行う必要があります。
これらの内容を定義関数 addBusinessDays としてまとめます。
ファイル内容については
Numpy polyfit 関数で豪ドル/円を予測 X 軸日付処理
予測最終日取得
の中で説明しています。
参考にしてください。
引数は datetime 型です。
from_date 日から add_days 平日後の日が
cur_date8 に、年/月/日 の文字列型
cur_date4 に、月/日 の文字列型
が返されます。
例えば、
from_date→ 2023/8/21日
add_days → 5 日
とすると
cur_date4 → 8/22, 8/23, 8/24, 8/25, 8/28
(土日を除く)
となります。
def addBusinessDays(from_date, add_days): cur_date8 = [] # 21/03/30 cur_date4 = [] # 3/30 business_days_to_add = add_days current_date = from_date while business_days_to_add > 0: current_date += datetime.timedelta(days=1) weekday = current_date.weekday() if weekday >= 5: # sunday = 6 continue #土日は以下はスキップ # 年/月/日として文字列にする #例 21/03/30 e11 = current_date.strftime("%y/%m/%d") e22 = e11.replace("/0", "/") e33 = e22[3:] # 21/ 削除 cur_date8.append(e22) cur_date4.append(e33) business_days_to_add -= 1 return cur_date8, cur_date4
予測最終日取得関数使用
dsc-4.py の中で、mane_chart_go.csv デ-タの中の日付のラストは
Datea[-1] として取得しましたので、
この日から5平日後の予測最終日を求めます。
関数 addBusinessDays(from_date, add_days)
に渡す引数は datetime 型である必要があります。
Datea[-1] は文字型ですので、これを datetime 型に変換します。
文字列を datetime に変換するのが strptime() 関数です。
書式は
datetime.datetime.strptime(文字列, 書式指定文字列)
です。
ライブラリを取り込む時に、
import datetime
from datetime import datetime as dt
と書くと
dt.strptime(文字列, 書式指定文字列)
と省略して書くことができます。
Datea[-1] は
2020/04/15 10:00:00
のように年月日と時分秒が記述されていますので
tstr = Datea[-1]
tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M:%S')
とすると日付のラストは datetime 型の日付に変換されます。
後は、予測最終日取得関数を呼び出すだけで予測最終日 lastday を求めることができます。
lastday = addBusinessDays(tdatetime, 5)
答えは
lastday[1] に予測最終日までの5日間が 月/日 の文字列型で入っています。
予測最終日は lastday[1][4] に入っています。
ちなみに lastday[0] には予測最終日までの5日間が 年/月/日 の文字列型で入っています。
xData の X 軸の目盛り日付と
xD の日付表示位置に lastday を付け加えます。
xDate.append(lastday[1][4])
xD.append(i + 5)
これで予測最終日と X 軸の目盛り位置を求めることができました。
ここまでで、mplf-t.py と dsc-4.py を合体する時のポイントを説明しました。
引き続き、これらをまとめ合体ファイルを表示します。