Python で 豪ドル/円チャ-ト を探求

Numpy polyfit 関数で豪ドル/円を予測

ここまでで
Numpy polyfit 関数 Python 多項式フィッティング
を実行する準備ができましたので、これを用いて豪ドル/円を予測します。
z = np.polyfit(Idx, Close, 9)
p = np.poly1d(z)
print("予測値=最終日+1~+5日")
print(np.round(p(Idx5),3))
たったこれだけです。
フィッティング関数 np.polyfit()
z = np.polyfit(Idx, Close, 9)
を設定します。
第1引数には x 軸値の配列
第2引数には y 軸値の配列
第3引数には 多項式関数の次数
を設定します。
今回次数は 9 としました。
なぜ、多項式関数の次数が 9 なのか難しい質問ですね。
数年の経験値から 100個ぐらいのデ-タの場合は4~9次ぐらいが良いようです。
急激な変化があったときは、4次ぐらいでもそれなりの結果がでます。
あまり変化のないときは7~9次ぐらいをお薦めします。
固定値にするなら5次をお薦めします。
フィッティング結果(予測値)は、np.poly1d() 関数で求めることができます。
p = np.poly1d(z)
このままだと小数点以下が長く見にくい値ですので、Numpy round 関数を使ってこれを小数点以下3桁の数値に整形して見やすくします。
np.round(p(Idx5),3) で小数点以下3桁で丸めています。
第2引数の 3 は小数点以下の桁数指定です。
print 文2行の結果は
予測値=最終日+1~+5日
[83.111 83.144 83.288 83.598 84.141]
のように表示されます。

豪ドル/円 CSV ダウンロ-ドデ-タをロ-ソク足表示

ダウンロ-ドした mane_chart_go.csv デ-タをロ-ソク足表示していきます。
ロ-ソク足表示に必要なデ-タは
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列です。
なお Close と Idx は多項式フィッティングの為にすでに読込み済みです。

X 軸日付処理

mane_chart_go.csv デ-タの中の日付は
2020/10/20 00:00:00
のようになっており、そのまま X 軸日付表示をさせるには文字列が長すぎます。
よってこれを 10/20 のように短縮します。

  1. 型変換

    Pandas で抜き取った Date は リスト型になっています。
    これを str 型 に変換します。
    変換しても CSV 書式がそのまま残っていますので、
    2020/10/20 00:00:00
    のように変換されます。
    余計な文字列が沢山ありますので、これを削除していきます。
    必要なのは、月日の /10/20 です。
    左から 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 には /10/20 が入りました。 もし /01/20 だったら /1/20 が e6 に入ります。

  3. 左端の / を削除

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

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

    xData は X 軸の目盛り日付です。
    そして、Python 組込関数 enumerate()を使って Date デ-タがある限り、i = 0 から 順番に for 分で処理を繰り返します。
    Date の中に 101個のデ-タが存在するとすれば、i は 0~100 まで変化します。
    今回は 10日ごとに X 軸日付を付けたいので、
    if(i % 10 == 0):
    として 10日ごとに日付を作成します。
    また、xD は日付表示位置となります。
    まとめると以下のようになります。


  xDate = []
  xD = []
  for i, key in enumerate(Datea):
    if(i % 10 == 0):
      e4 = str(key)[4:10]
      e6 = e4.replace("/0", "/")
      e8 = e6.lstrip("/")   
      xDate.append(e8)
      xD.append(i)

ここまでで
豪ドル/円 CSV ダウンロ-ドデ-タをロ-ソク足表示の X 軸日付処理が終了しました。
引き続き、グラフ X 軸日付予測最終日を取得します。


  • 予測最終日取得 に進む
  • 豪ドル/円 CSV ダウンロ-ドデ-タ グラフ化 に戻る
  • 豪ドル/円 CSV 改造ファイルまとめ に戻る
  • Python 豪ドル/円チャ-ト 概要 に戻る
  • 70VPS に戻る