さくら VPS Python 豪ドル/円 4時間足予測
豪ドル/円 4時間足 CSV ダウンロ-ドデ-タ グラフ化
引き続きダウンロ-ドした mane_chart_go_4h.csv デ-タをグラフ化していきます。
過去pandas を使う
のなかで、
Anaconda3(64-bit) Jupyter Notebook
で pandas と pyplot を使って、エクセルファイルのグラフ化
について説明しました。
ここでは、さくら VPS のなかでの CSV ファイルのグラフ化について
説明していきたいと思います。
デ-タの集計と解析を行うためのライブラリは Python には多数そろっています。
その中でも CSV やエクセルとの連携が最も優れているのが pandas です。
これを使うと CSV ファイルを簡単に Python に取り込むことができます。
pandas は利用価値は沢山あるのですが、今回は CSV 連携について説明します。
pandas インスト-ル
pandas をインスト-ルします。
シリアルコンソ-ル(β版)を開き、
yamada@********:~$
sudo pip3 install pandas
Enter を押してインスト-ルを開始します。
しばらく黙りこくってからコメントが次々と出てきて完了します。
インスト-ル結果を見ます。
$ pip3 show pandas
でインスト-ルを確認すると
/usr/local/lib/python3.8/dist-pacages
に入ったことがわかります。
pandas は CSV ファイルの読み込みのために使用します。
CSV ファイルのグラフ化では pyplot Numpy も使用しますが、これは
さくら VPS Python/pyplot インスト-ル
のなかですでにインスト-ル済みです。
まだの方は pyplot (matplotlib) もインスト-ルしてください。
おっと pip3 がない方もここを参照してください。
mplfinance インスト-ル
ロ-ソク足チャ-トを作成するためにもう一つ必要なパッケ-ジがあります。
この作成にはこの上記のライブラリの他に、 mplfinance をインストールする必要があります。
ローソク足チャートを含む金融関係のグラフ描画機能はもともと matplotlib.finance として
Matplotlib に含まれていたが、Matplotlib バージョン2.0から mpl_finance という
別のパッケージとして切り出されました。
さらに mplfinance という新たなパッケージが作られ、2021年現在は
mpl_finance は DEPRECATED(非推奨)となり mplfinance の使用が推奨されています。
mplfinance は Matplotlib とは別にインストールする必要があります。
pip3 を使います。
シリアルコンソ-ル(β版)を開き、
yamada@********:~$
sudo pip3 install mplfinance
Enter を押してインスト-ルを開始します。
しばらく黙りこくってからコメントが次々と出てきて完了します。
インスト-ル結果を見ます。
$ pip3 show mplfinance
でインスト-ルを確認すると
/usr/local/lib/python3.8/dist-pacages
に入ったことがわかります。
もし間違って、mpl_finance を入れてしまった人は、これはアンインスト-ル
しておきましょう。
yamada@ubuntu-20:~$
sudo pip3 uninstall mpl_finance
これで必要なパッケ-ジが揃いました。
2022年10月27日追記
理由は不明ですが、
ModuleNotFoundError: No module named 'PIL'
なるエラ-が出現するようになりました。
どうも pillow パッケ-ジが消えてしまったようです。
入れ直しました。
yamada@ubuntu-20:~$
sudo pip3 install pillow
Enter を押してインスト-ルを開始します。
しばらく黙りこくってからコメントが次々と出てきて完了します。
インスト-ル結果を見ます。
$ pip3 show pillow
でインスト-ルを確認すると
/usr/local/lib/python3.8/dist-pacages
に入ったことがわかります。
豪ドル/円 4時間足 CSV ダウンロ-ドデ-タ グラフ化ファイル作成
それでは、豪ドル/円 CSV ダウンロ-ドデ-タをグラフ化していきます。
その内容は、23日分の毎日の豪ドル/円4時間足の動きから
1日先までの予測値をグラフ表示
23日分の豪ドル/円4時間足の動きをロ-ソク足表示
します。
ライブラリ取り込み
取り込む必要があるライブラリは4つです。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# import mplfinance as mpf
from mplfinance.original_flavor import candlestick_ohlc
本当は、mplfinance を使用してロ-ソク足を表示したかったのですが、
予測値グラフとうまく重ね表示が私の力ではうまくできなかったので、
旧の candlestick_ohlc を使用しました。
mplfinance を使用するとロ-ソク足の日付表示処理等がやり易いのですが残念です。
ダウンロードファイル読込
/public_html/manep/mane_chart_go_4h.csv ファイルを読み込みます。
このファイルの0行目のヘッダー情報は日本語で書かかれています。
単に読込むと文字化けしますので、文字コードを cp932 を指定すると文字化けしないようです。
CSV ファイルの保存場所は絶対パスで表記する必要があります。
xl_df = pd.read_csv("/home/yamada/public_html/manep_4h/mane_chart_go_4h.csv", encoding="cp932") print(xl_df)
Python 多項式フィッティングで予測
気温や株式の価格のような連続したデ-タがある時、
これを数式で表現できると将来の値を予測するようなことができます。
多項式フィッティングを行うと、数値変化を関数化することができます。
例えば5次式で表すと仮定すると
のように書くことができます。
この時 a0~a5 の値を決めることができれば、数値変化を関数化することができます。
これを実現してくれるのが、Numpy の中にある polyfit 関数です。
この関数の使い方についてこれから順次説明していきます。
Python 多項式フィッティング準備
Python 多項式フィッティングを適用するデ-タは"終値(売り)"の値です。
mane_chart_go_4h.csv のなかから"終値(売り)"の列デ-タを抜き取ります。
Close = xl_df["終値(売り)"].values
y 軸値(Close)を呼出すための仮の x 軸値(Idx)が必要です。
Idx は 0~デ-タ数分の各整数値が入った配列です。
これは
Idx = xl_df.index
から取得することができます。
次ぎに未来の x 軸値(Idx6)1日分(4時間足-6本)を作成します。
Idx[-6:]とすると
ラストから6個の整数値を切り取ることができます。
それに + 6本
Idx6 = Idx[-6:] + 6
すると
Idx6 は ラストから +6 の6個の整数値となります。
例えば Idx のラストが 100 とすると
Idx6 は
101,102,103,105,106
となります。
よって x 軸の 101~106 に6個の未来の予測値が表示されることになります。
ちなみに
print(Idx)
とすると
RangeIndex(start=0, stop=101, step=1)
print(Idx6)
とすると
RangeIndex(start=101, stop=106, step=1)
となり
start=0~stop=100 のindex 行にはデ-タがありますが、
stop=101~stop=106 の index 行にはまだデ-タはありません。
ちなみに今回グラフ化するダウンロ-ドした mane_chart_go_4h.csv デ-タの内容(例)を下記に表示します。
index 日付 通貨ペア 足種別 始値(売り) 高値(売り) 安値(売り) 終値(売り)・・ 0 2022/02/14 04:00:00 AUD/JPY 4時間足 82.146 82.317 82.128 82.292 ・・・ 1 2022/02/14 08:00:00 AUD/JPY 4時間足 82.292 82.642 82.141 82.218 ・・・ 2 2022/02/14 12:00:00 AUD/JPY 4時間足 82.218 82.31 82.108 82.186 ・・・ 3 2022/02/14 16:00:00 AUD/JPY 4時間足 82.186 82.316 81.552 81.76 ・・・ 4 2022/02/14 20:00:00 AUD/JPY 4時間足 81.76 82.375 81.658 82.338 ・・・ ・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ 96 2022/03/07 16:00:00 AUD/JPY 4時間足 85.387 85.461 85.071 85.177 ・・・ 97 2022/03/07 20:00:00 AUD/JPY 4時間足 85.178 85.408 84.747 84.764 ・・・ 98 2022/03/08 00:00:00 AUD/JPY 4時間足 84.764 84.853 84.338 84.489 ・・・ 99 2022/03/08 04:00:00 AUD/JPY 4時間足 84.489 84.539 84.249 84.338 ・・・ 100 2022/03/08 08:00:00 AUD/JPY 4時間足 84.338 84.833 84.286 84.482 ・・・
ここまでで Numpy polyfit 関数 Python 多項式フィッティング を実行する準備ができましたので引き続きこれを用いて豪ドル/円 4時間足を予測するファイルを作成します。