Windows11 WSL2 Ubuntu Python Ⅱ
相関係数予測ファイルまとめ
ここまでで、mplf-t.py と dsc-4.py を合体する時のポイントを説明しました。
以下に合体ファイルを表示します。
mplf-t.py 由来部分は赤色
dsc-4.py 由来部分は黒色
で記載しています。
# coding: utf-8 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn import preprocessing import datetime from datetime import datetime as dt from mplfinance.original_flavor import candlestick_ohlc 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 xl_df = pd.read_csv("public_html/manep-w/mane_chart_go.csv", encoding="cp932") Open = xl_df["始値(売り)"].values High = xl_df["高値(売り)"].values Low = xl_df["安値(売り)"].values Close = xl_df["終値(売り)"].values Date = xl_df["日付"].values tstr = Date[-1] print(tstr) tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M:%S') # tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M') # 文字列をdatetimeに変換するのがstrptime()関数 # datetime.datetime.strptime(文字列, 書式指定文字列) lastday = addBusinessDays(tdatetime, 5) print(lastday) Idx = xl_df.index print(Idx) print(Close) print("Idx[-1]=", Idx[-1]) print("Idx[-24]=", Idx[-24]) Idx_25 = Idx[-25:] + 5 print("Idx_25=") print(Idx_25) n_25 = 25 sl_cl_t = [] # n=0 Start 76End 75まで # 最後 n=75 の時 n + n_25 = 100 # Close[n:n+n_25] = Close[75:100] 75~99 の25個 for n in range(Idx[-24]): sl_cl_t = np.append(sl_cl_t, Close[n:n+n_25]).reshape(n+1,n_25) print("sl_cl_t") print(sl_cl_t) print(sl_cl_t.shape) sl_cl_20 = sl_cl_t[:,:20] print("sl_cl_20") print(sl_cl_20) # kijyu = sl_cl_t[-1][5:] kijyu = sl_cl_t[-1, 5:] print("基準値") print(kijyu) cor = np.corrcoef(kijyu, sl_cl_20) print("cor") print(cor) cor1 = cor[1:, 0] cor_max = np.amax(cor1) print('相関max=', cor_max) c_max_id = np.argmax(cor1) print('相関max_ID=', c_max_id) print("相関する25個のデータ") print(sl_cl_t[c_max_id]) # インスタンスの作成 sscaler = preprocessing.StandardScaler() x = sl_cl_t[c_max_id].reshape(-1,1) print("元データsl_cl_t[c_max_id]を1×25 次元に変換") print(x) y = sscaler.fit_transform(x) print("sl_cl_t[c_max_id]標準偏差値") print(y) # 基準 kijyu の標準偏差 s と平均値 m s = np.std(kijyu) print("標準偏差 s = ", s) m = np.mean(kijyu) print("平均値 m = ", m) w = y * s + m print("予測値 w") print(w) plt.plot(w) # 相関する25個 plt.plot(kijyu) # ラスト20個 plt.show() 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) xDate.append(lastday[1][4]) xD.append(i + 5) #5日間の予測日の追加 ohlc = zip( Idx, Open, High, Low, Close) fig = plt.figure( figsize=(8.34, 5.56)) ax = fig.add_subplot(1,1,1) ax.grid() candlestick_ohlc( ax, ohlc, width=0.5, alpha = 1, colorup='r', colordown='g') plt.xticks(xD, xDate) plt.title('AUS$ / JPY chart') plt.xlabel('Date') plt.ylabel('Yen') plt.plot(Idx_25, w) plt.show() # yamada@yama:~$ conda activate # (base) yamada@yama:~$ python3 public_html/dsc-5.py
上記ファイルを windows 側で作成します。
上記内容をすべてをコピ-し、Python ファイルを作成します。
自分の PC Windows で TeraPad 等を使用して作成できたらファイル名を dsc-5.py として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada/public_html/dsc-5.py
とします。
ここまででデータ結合ファイルを作成できました。
引き続き、このファイルの動作確認をしていきます。