Win11 WSL2 Ubuntu Python RNN Ⅱ
RNN 豪ドル/円4時間足大容量データ予測
過去 Python RNN で 豪ドル/円チャ-ト4時間足予測を探求してみました。
その内容は
Recurrent Neural Network RNN Ⅱ--さくら VPS RNN 豪ドル/円4時間足予測
から参照することができます。
この時作成したファイル keras-go-4h-4.py は
Recurrent Neural Network RNN Ⅱ--RNN 豪ドル/円 4時間足予測最新表示ファイルまとめ
から見ることができます。
しかしながら、その時使用した豪ドル/円の動きを格納した
CSV ファイルはたった 100本のデータしかないため精度に欠けていました。
しかし、たった100本のデータでもそれなりの予測はしてくれました。
今回はこのデータを50倍に増やし精度を上げたいと思います。
具体的には日足を対象とした
Win11 WSL2 Ubuntu Python RNN--WSL2 Python RNN 予測ファイルまとめ
に keras-go-long-4.py がありますので、
keras-go-4h-4.py と keras-go-long-4.py を合体させ4時間足予測にします。
RNN 豪ドル/円4時間足大容量データ予測ファイル作成
keras-go-long-4.py をもとに、keras-go-4h-4.py を埋め込んで行きます。
- 24時間先の予測日時
keras-go-long-4.py では、予測最終日を取得するのに
関数 addBusinessDays(from_date, add_days)
を利用しました。
しかし、今回は4時間足予測ですので、 24時間先までの予測日時6本のそれぞれの日時を知ることが必要です。
よってこれを求める
関数 addBusinessDays_4h(current_date, business_days_to_add_h)
が必要です。
なので、
addBusinessDays(from_date, add_days)
を削除し
def addBusinessDays_4h(current_date, business_days_to_add_h)
を追加します。
def addBusinessDays_4h については
さくら VPS Python 豪ドル/円 4時間足予測--X 軸日付予測4時間足最終日時取得
に詳細説明があります。 - 豪ドル/円4時間足データ準備
RNN 4時間足大容量データ予測で使用するデータを準備します。
大容量の4時間足データが必要です。
マネーパートナーズのサイトに入るとダウンロードできるのですが会員登録が必要です。
はじめての方へ
に行って登録してみて下さい。
ちょっと古いものになりますが、下記から大容量データ mane_chart_go_long_4h.csv をダウンロードすることができるようにしました。
これを manep-w フォルダを作成し、
Linux/Ubuntu-22.04/home/yamada/public_html/manep-w/mane_chart_go_long_4h.csv
として保存してください。
その後、
xl_df = pd.read_csv(
"/home/yamada/public_html/manep-w/mane_chart_go_long_4h.csv",
encoding="cp932")
としてデータを読み込みます。 - 24時間先の予測日時取得
addBusinessDays_4h( )を利用して24時間先の予測日時 lastday を取得します。
tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M:%S')
文字列をdatetimeに変換するのがstrptime()関数
datetime.datetime.strptime(文字列, 書式指定文字列)
で文字列をdatetimeに変換します。
tstr は大容量データの最新日です。
lastday = addBusinessDays_4h(tdatetime, 6) - X 軸日付処理
manep-w/mane_chart_go_long_4h.csv デ-タの中の日付は
2020/10/20 00:00:00
のようになっており、そのまま X 軸日付表示をさせるには文字列が長すぎます。
よってこれを 10/20 のように短縮します。
抜き出す日付は、時刻が 00:00:00 となっている日付すなわち
例) 2022/02/15 00:00:00
の年月日時です。
その方法については
さくら VPS Python 豪ドル/円 4時間足予測--
Numpy polyfit 関数で豪ドル/円4時間足予測--
X 軸日付処理
の中で詳しく説明しています。
まとめると、以下のようになります。
Date_100 = Date[-100:] xDate = [] xD = [] dayf = 0 for i, key in enumerate(Date_100): 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 tstr = Date[-1] if(dayf == 0): e4l = tstr[7:14] e6l = e4l.replace("/0", "/") e8l = e6l.lstrip("/") xDate.append(e8l) xD.append(i)
- sequence_length
ウィンドウ(シ-ケンス)をいくつにするかは悩ましい問題です。
日足レベルの時は
1週間5日×1ケ月4週=20日 で
sequence_length = 20
としました。
今回は、4時間足レベルですので
1日4時間×6×1週間5日=30 で
sequence_length = 30
とします。 - Dense 層1
全結合モデルのDense 層をいくつにするか悩ましい問題です。
今回ウィンドウ(シ-ケンス) sequence_length は30にしました。
データ数も5000あります。
よって、Dense 層1 は30にしたいと思います。
x = layers.Dense(30, activation="tanh", kernel_initializer='zeros' )(x)
- コ-ルパックモデル保存場所
コ-ルパックによる最良モデルの保存場所を変更します。
保存場所はフルパスで指示します。keras.callbacks.ModelCheckpoint( "/home/yamada/public_html/colab/jena_dense_l_4h.keras", save_best_only=True, )
colab フォルダはあらかじめ作成しておいてください。
- 最良モデルの呼出
最良モデルの呼出ファイルの保存場所を変更します。
model = keras.models.load_model( "/home/yamada/public_html/colab/jena_dense_l_4h.keras")
- 6つ先の予測値
keras-go-long-4.py では5つ先の予測値を求めていました。
これを6つ先の予測値を求めるようにする必要があります。future_result = [] for i in range(6): test_data_f = np.reshape(future_test, (1, 30, 1)) batch_predict = model.predict(test_data_f, verbose=0) future_test = np.delete(future_test, 0) future_test = np.append(future_test, batch_predict) future_result = np.append(future_result, batch_predict)
なお、この部分の詳細は
Python Colaboratory--5つ先の予測値
から参照することができます。 - 24時間の予測値保存場所変更
保存場所はフルパスで指示します。
df_concat.to_csv( '/home/yamada/public_html/manep-img/mane_chart_go_keras_long_4h.csv', header=False, index=False)
以上で変更作成作業は完了です。
引き続き、RNN 豪ドル/円4時間足大容量データ予測ファイル keras-go-long-4h.py をまとめます。