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 を埋め込んで行きます。

  1. 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時間足最終日時取得
    に詳細説明があります。

  2. 豪ドル/円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")
    としてデータを読み込みます。

  3. 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)

  4. 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)
    
  5. sequence_length

    ウィンドウ(シ-ケンス)をいくつにするかは悩ましい問題です。
    日足レベルの時は
    1週間5日×1ケ月4週=20日 で
    sequence_length = 20
    としました。
    今回は、4時間足レベルですので
    1日4時間×6×1週間5日=30 で
    sequence_length = 30
    とします。

  6. Dense 層1

    全結合モデルのDense 層をいくつにするか悩ましい問題です。
    今回ウィンドウ(シ-ケンス) sequence_length は30にしました。
    データ数も5000あります。
    よって、Dense 層1 は30にしたいと思います。
    x = layers.Dense(

        30,
        activation="tanh",
        kernel_initializer='zeros'
        )(x)
    

  7. コ-ルパックモデル保存場所

    コ-ルパックによる最良モデルの保存場所を変更します。
    保存場所はフルパスで指示します。

    keras.callbacks.ModelCheckpoint(
      "/home/yamada/public_html/colab/jena_dense_l_4h.keras",
      save_best_only=True,
      )
    

    colab フォルダはあらかじめ作成しておいてください。

  8. 最良モデルの呼出

    最良モデルの呼出ファイルの保存場所を変更します。

    model = keras.models.load_model(
      "/home/yamada/public_html/colab/jena_dense_l_4h.keras")
    
  9. 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つ先の予測値
    から参照することができます。

  10. 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 をまとめます。


  • RNN 豪ドル/円4時間足大容量データ予測ファイルまとめ に進む
  • 70VPS に戻る