Python Colaboratory Ⅲ

豪ドル/円 4時間ロ-ソク足表示

ここまでで RNN 豪ドル/円4時間足予測ができるようになりました。
引き続き、その結果を4時間ロ-ソク足で表示ができるようにしていきます。
drive/MyDrive/Colab Notebooks/my_data
にある
colab_mane_chart_go_4h.csv
デ-タをロ-ソク足表示していきます。

import numpy as np
import pandas as pd
xl_df = pd.read_csv(
  "drive/MyDrive/Colab Notebooks/my_data/colab_mane_chart_go_4h.csv",
  encoding="cp932")

ロ-ソク足表示に必要なデ-タは
Open = xl_df["始値(売り)"].values
High = xl_df["高値(売り)"].values
Low = xl_df["安値(売り)"].values
Close = xl_df["終値(売り)"].values
Date = xl_df["日付"].values
Idx = xl_df.index
の6列です。

X 軸日付処理

colab_mane_chart_go_4h.csv デ-タの中の日付は
2020/10/20 00:00:00
のようになっており、そのまま X 軸日付表示をさせるには文字列が長すぎます。
よってこれを 10/20 のように短縮します。
抜き出す日付は、時刻が 00:00:00 となっている日付すなわち
例) 2022/02/15 00:00:00
の年月日時です。

  1. 型変換

    Pandas で抜き取った Date は リスト型になっています。
    これを str 型 に変換します。
    変換しても CSV 書式がそのまま残っていますので、
    2020/02/15 00:00:00
    のように変換されます。
    余計な文字列が沢山ありますので、これを削除していきます。
    必要なのは、月日の /02/15 です。
    左から 0~3 の 4 文字と10文字以降は必要ないので
    e4 = str(Date[i])[4:10]
    とすると、6文字が取得され
    e4 には /10/20 が入ります。

  2. 月日が1桁の時

    月日が1桁の時は、/01 のような形をしています。
    0 は余計なのでこれを削除します。
    Python 組込関数 replace()を使って、一旦 /0 を / に置き換えます。
    第一引数に置換元文字列、第二引数に置換先文字列を指定します。
    e6 = e4.replace("/0", "/")
    e6 には /2/15 が入りました。
    もし /10/20 だったら /10/20 が e6 に入ります。

  3. 左端の / を削除

    Python 組込関数 lstrip() で、左端の / を削除します。
    e8 = e6.lstrip("/")
    e8 には 2/15 が入りました。

  4. 繰返して X 軸日付処理

    xData は X 軸の目盛り日付です。
    そして、Python 組込関数 enumerate()を使って Date デ-タがある限り、i = 0 から 順番に for 分で処理を繰り返します。
    Date の中に 101個のデ-タが存在するとすれば、i は 0~100 まで変化します。
    今回は、中1日ごとに(2日に一回、00:00:00 を見つけたら) X 軸日付を付与します。
    中1日ごとに 00:00:00 を探すために、フラグ dayf(最初は dayf = 0)を設定します。
    このフラグが 0 なら X 軸日付を付与し、dayf = 1 とします。
    フラグが 1 なら付与せず、dayf = 0 とします。

  5. ラストの X 軸日付処理

    実デ-タが存在し、かつ dayf == 0 の時はラスト(最新)の日付には 時刻表示を含めた X 軸日付を付与します。
    もし 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)
    

X 軸日付処理についてここまでをまとめると以下のようになります。 [まとめ - X 軸日付処理]


xDate = []
xD = []
dayf = 0
for i, key in enumerate(Date):
  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

if(dayf == 0):
  e4l = tstr[7:14]
  e6l = e4l.replace("/0", "/")
  e8l = e6l.lstrip("/")
  xDate.append(e8l)
  xD.append(i)    

ロ-ソク4時間足表示スクリプト

ロ-ソク4時間足の表示スクリプトは 豪ドル/円ロ-ソク4時間足と予測値の表示 のなかで詳しく説明されているので、これをもってきます。

import sys
sys.path.append(
  '/content/drive/MyDrive/Colab Notebooks/my-modules'
)
import matplotlib.pyplot as plt
from mplfinance.original_flavor import candlestick_ohlc
ohlc = zip(
Idx, Open, High, Low, Close)
fig = plt.figure(
 figsize=(8.34, 5.56))
ax = fig.add_subplot(1,1,1)
ax.grid()
# ここに予測値を入れる取り敢えず
Idx6 = Idx[-6:] + 6
app = Close[-1:]
app1 = np.hstack((app, app, app, app, app, app))
plt.plot(
 Idx6, app1, 'bo')
# として表示する
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.show
plt.savefig(
 'colab_mane_chart_go_keras_4h.png')

ここまでで RNN 豪ドル/円4時間ロ-ソク足表示ができるようになりました。
引き続き、このスクリプトをまとめます。


  • RNN 豪ドル/円4時間ロ-ソク足表示スクリプトまとめ に進む
  • RNN 豪ドル/円4時間足予測ファイル動作確認 に戻る
  • RNN 豪ドル/円 4時間足予測ファイル に戻る
  • RNN 豪ドル/円 4時間足予測 に戻る
  • 70VPS に戻る