さくら VPS Python 豪ドル/円 4時間足予測

豪ドル/円4時間足予測ガウス基底関数計算

ここまでで、線形基底関数モデル厳密解を求める関数は定義済となりましたので、 終値を抽出して、正規化して、厳密解を求め、フィティング曲線を作成、逆正規化すれば終りです。

  1. 正規化

    終値 Close1 を正規化します。
    Close1,Close1_min,Close1_max = min_max(Close0)
    Close2 = 正規化値
    最安値 = Close1_min
    最高値 = Close1_max
    です。

  2. 厳密解を求める

    M = 12
    W = fit_gauss_func(Idxlg, Close2, M)
    今回は、M の値は 12 としました。
    12 個のガウス関数を並べてフィッティングします。
    これもすでに関数が定義してあるので簡単ですね。

  3. フィティング曲線

    線形基底関数モデルを使ってフィティング曲線を求めます。
    6本先までの X軸 Idx6 は先程作成しました。
    Idx6 = Idx[-6:] + 6
    Idxlg = np.r_[Idx, Idx6]
    実デ-タが存在する X軸 Idx と合体した Idxlg を使うと
    y = gauss_func(W, Idxlg)
    y がフィティング曲線です。
    6本先までの予測値が含まれています。

  4. 逆正規化

    正規化された値 y を逆正規化して元の値 val_ch に戻します。
    val_ch = y * (Close1_max - Close1_min) + Close1_min

ガウス基底関数計算結果表示

引き続きガウス基底関数計算結果をグラフ表示していきます。
plt.plot(
Idx, val_ch[:-6],
Idx5, val_ch[-6:], 'bo')
matplotlib で表示するにはたったこれだけです。
'bo' とすると●印でプロットされます。

予測値格納

予測日時とその予測値の一覧表をつくるための CSV ファイルを作成します。

  1. 予測日時/予測値の一覧表作成

    予測日時 lastday[0] に対応する予測値は val_ch[-6:] となっており ここに予測4時間足6本分のデ-タがあります。
    この二つの配列を一緒にして CSV ファイルにすることができれば
    「予測日時/予測値 一覧」
    にすることができます。

  2. 予測日/予測値の配列を合体

    2つの配列を pandas concat 関数を使用して横(列)方向へ連結することにします。
    まずは、それぞれの配列を DataFrame 型に変換します。
    これで、pandas で操作することが可能になりました。
    import pandas as pd
    lastday_pd = pd.DataFrame(lastday[0])
    valhe_pd = pd.DataFrame(val_ch[-6:],3)
    #3桁まで表示
    この2つを pandas concat 関数で横(列)方向へ連結します。
    横(列)方向指定 axis = 1 を忘れないでください。
    df_concat-f = pd.concat([lastday_pd, valhe_pd], axis = 1)
    これを csv ファイルとして保存します。
    保存するファイルフォルダ名は絶対パスで指定します。
    そして、header=False, index=False としてヘッダとインデックスは保存なしとします。
    df_concat-f.to_csv(
    '/home/yamada/public_html/manep-img/mane_chart_go-gau_4h.csv',header=False,index=False)


ガウスフィット-豪ドル/円 4時間足予測ファイル

ここまでくれば、ガウスフィット-豪ドル/円 4時間足予測ファイルは
FFT 解析 豪ドル/円4時間足予測ファイルまとめ
を参考に作成することができるのですが、とは言うものの面倒なので、
FFT 解析 豪ドル/円4時間足予測ファイル
si_fft_filter-go-02-4h.py
のどこを修正したらよいのか説明します。

削除

62行目ぐらいから以下11行削除

  cent = np.average(Close1)
  Close2 = Close1 - cent
  f = np.fft.fft(Close2) # フーリエ変換(FFT)
  fc = 10          # cut off freq.
  f[fc:] = 0       # low pass filter
  f_ifft = np.fft.ifft(f*2)
  f_real = f_ifft.real   # 実数部のみにする

  f_ifft_sht = f_real + cent
  p_pand = np.round(f_ifft_sht[-6:],3)
  f_ifft_sht_pd = pd.DataFrame(p_pand)

代わりに、

追加1

ガウス関数定義
線形基底関数モデル
線形基底関数モデル 厳密解
正規化モデル
の各定義ファイルを追加します。

追加2

Close2,Close1_min,Close1_max = min_max(Close1)
を追加します。

追加3

  M = 12
  W = fit_gauss_func(Idxlg, Close2, M)
  # print(W)
  y = gauss_func(W, Idxlg)
  val_ch = y * (Close1_max - Close1_min) + Close1_min
  valhe = np.round(val_ch[-6:], 3)#3桁まで表示
  valhe_pd = pd.DataFrame(valhe)

を追加します。

変更1

次に、86行目ぐらい下記 4行削除

  df_concat = pd.concat([lastday_pd, f_ifft_sht_pd], axis = 1)
  df_concat.to_csv(
   '/home/yamada/public_html/manep-img/mane_chart_go-fil_4h.csv',
   header=False, index=False) 

代わりに以下4行追加

  df_concat = pd.concat([lastday_pd, valhe_pd], axis = 1)
  df_concat.to_csv(
   '/home/yasuhiro/public_html/manep-img/mane_chart_go-gau_4h.csv',
   header=False, index=False)

変更2

最後から12行目当たり
plt.plot(
Idx, f_ifft_sht[:-6],
Idx6, f_ifft_sht[-6:],'bo')
の 3行を削除、代わりに
plt.plot(
Idx, val_ch[:-6],
Idx6, val_ch[-6:], 'bo')
を追加。

変更3

  plt.savefig(
   '/home/yamada/public_html/manep-img/mane_chart_go-fil_4h.png')

を削除して

  plt.savefig(
   '/home/yamada/public_html/manep-img/mane_chart_go-gau_4h.png')

を追加します。

ここまでで、やっと修正案ができましたので、 続いて、ガウスフィット-豪ドル/円4時間足予測ファイルをまとめて表示します。


  • ガウスフィット-豪ドル/円4時間足予測ファイルまとめ に進む
  • ガウスフィット-豪ドル/円4時間足予測 に戻る
  • 70VPS に戻る