さくら VPS 相関係数予測
さくら VPS 相関係数豪ドル/円4時間足予測ファイルⅢ
ここまでで、相関係数豪ドル/円4時間足予測ファイルⅢ
の内容説明が完了しました。
4時間足大容量データを最新にする処理を付け加えた
予測ファイルⅢ dsc_4h-4.py
をまとめます。
以下にファイル内容を示します。
修正した部分は赤字にしています。
print 文はコメント化しています。
# dsc_4h-3.py より # -*- coding: utf-8 -*- import pandas as pd import numpy as np import matplotlib.pyplot as plt import datetime from mplfinance.original_flavor import candlestick_ohlc def addBusinessDays_4h(current_date, business_days_to_add_h): # current_date : 処理する初日の日時 例) 2022-02-03 00:00:00 # business_days_to_add_h : 4時間ずつ延長する回数 cur_date8 = [] # 21/03/30 12~ cur_date4 = [] # 3/30 man_f = 1 # 月曜フラグ 0=count / 1=nocount doyo_f = 0 # 土曜フラグ 0 or 1 current_date0 = current_date weekday0 = current_date0.weekday() if(weekday0 == 0): #月 man_f = 0 while business_days_to_add_h > 0: current_date += datetime.timedelta(hours=4) weekday = current_date.weekday() hour_doyo = current_date.hour if weekday == 6: # sunday = 6 continue if((weekday == 5) and (hour_doyo == 8)): #土 doyo_f = 1 if((weekday == 5) and (doyo_f == 1)): #土 continue if((weekday == 0) and (man_f == 1)): #月 man_f = 0 continue # 日はスキップ # 月は一回のみスキップ # 年/月/日 時刻として文字列にする # 例 21/03/30 12~ e22, cur_date8 e11 = current_date.strftime("%y/%m/%d %H") e22 = e11.replace("/0", "/") e22 = e22 + "~" e33 = e22[3:] # 21/ 削除 cur_date8.append(e22) cur_date4.append(e33) business_days_to_add_h -= 1 return cur_date8, cur_date4 # 4時間足大容量データ最新化処理追加 # 古い大容量データ取込み xl_df1 = pd.read_csv("public_html/manep-w/mane_chart_go_long_4h.csv", encoding="cp932") # print(xl_df1) # 新小容量データ取込み xl_df2 = pd.read_csv("public_html/manep_4h/mane_chart_go_4h.csv", encoding="cp932") # print(xl_df2) # データを結合する xl_df12 = pd.concat([xl_df1, xl_df2]) # データの一覧 # print(xl_df12) # 重複データ削除 xl_df = xl_df12.drop_duplicates(keep='first', ignore_index=True) # print(xl_df) # CSVファイルに書込・保存 # ヘッダーもインデックスも含めて出力。 xl_df.to_csv('public_html/manep-w/mane_chart_go_long_4h.csv', quoting=1, index=False, encoding='cp932') # xl_df = pd.read_csv( # "/home/yamada/public_html/manep-w/mane_chart_go_long_4h.csv", # encoding="cp932") Close = xl_df["終値(売り)"].values Open = xl_df["始値(売り)"].values High = xl_df["高値(売り)"].values Low = xl_df["安値(売り)"].values Date = xl_df["日付"].values Idx = xl_df.index Idx_30 = Idx[-30:] - Idx[-1] + 98 + 6 Idx_99 = Idx[-99:] - Idx[-99] Open_99 = Open[-99:] High_99 = High[-99:] Low_99 = Low[-99:] Close_99 = Close[-99:] Date_99 = Date[-99:] tstr = Date[-1] tdatetime = datetime.datetime.strptime(tstr, '%Y/%m/%d %H:%M:%S') lastday = addBusinessDays_4h(tdatetime, 6) xDate = [] xD = [] dayf = 0 for i, key in enumerate(Date_99): day00 = str(key)[11:19] if((dayf == 1) and (day00 == '00:00:00')): dayf = 0 else: if((dayf == 0) and (day00 == '00:00:00')): e4 = str(key)[4:10] e6 = e4.replace("/0", "/") e8 = e6.lstrip("/") xDate.append(e8) xD.append(i) dayf = 1 # ラストの X 軸日付処理 # 実デ-タが存在し、かつ dayf == 0 の時は # ラストの日付には時刻を含めた X 軸日付を付与 if(dayf == 0): e4l = tstr[7:14] e6l = e4l.replace("/0", "/") e8l = e6l.lstrip("/") xDate.append(e8l) xD.append(i) # dsc_4h-2.py より from sklearn import preprocessing n_30 = 30 sl_cl_t = [] for n in range(Idx[-29]): sl_cl_t = np.append(sl_cl_t, Close[n:n+n_30]).reshape(n+1,n_30) # print("sl_cl_t") # print(sl_cl_t) # print(sl_cl_t.shape) sl_cl_24 = sl_cl_t[:,:24] # print("sl_cl_24") # print(sl_cl_24) kijyu = sl_cl_t[-1, 6:] # print("基準値") # print(kijyu) cor = np.corrcoef(kijyu, sl_cl_24) # 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("相関する30個のデータ") # print(sl_cl_t[c_max_id]) # print("基準") # print(kijyu) # インスタンスの作成 sscaler = preprocessing.StandardScaler() x = sl_cl_t[c_max_id].reshape(-1,1) # print(" 元データsl_cl_t[c_max_id]を1×30 次元に変換") # 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) ohlc = zip( Idx_99, Open_99, High_99, Low_99, Close_99) 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_30,w) # 相関する30個 # plt.show() plt.savefig( '/home/yamada/public_html/manep-img/mane_chart_go_4h.png') # データ保存 w_6 = np.round(w[-6:], 3) # 3桁まで表示 # print(w_6) cor_max100 = np.round(cor_max * 100, 3) w_6 = np.append(w_6, cor_max100) # print(w_6) w_6 = pd.DataFrame(w_6) # print(w_6) lastday_me = np.append(lastday[0], '信頼度(%)') lastday_pd = pd.DataFrame(lastday_me) # print(lastday_pd) df_concat = pd.concat([lastday_pd, w_6], axis = 1) # print(df_concat) df_concat.to_csv( '/home/yamada/public_html/manep-img/mane_chart_dsc_4h.csv', header=False, index=False) # yamada@yama:~$ python3 public_html/dsc_4h-4.py
ここまでで、さくら VPS 相関係数豪ドル/円4時間足予測ファイルⅢが作成できました。
引き続き、このファイルの動作確認をしていきます。