【デイトレAI】活動再開 ~環境構築 データ取得 可視化 テクニカル~
こんにちはRcatです。
長らく中断していた、分足予測AIの作成ですが、再開しようと思います。
PCも変わってしまいましたし、環境構築からやり直します。
また、学習状況の可視化方法も見直し、うまくいけばリアルタイムで見られるようにできるかもという感じです。
本シリーズの目次はこちら
はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください
注意
本シリーズはあくまでも個人的な取り組みであり、全てが正しいとは限りません。全ては自己責任の上で先に進んでください。
参考にした結果、大損害を被ったとしても、何の責任も取りませんので、あらかじめご了承ください。
環境構築
使うライブラリ
以下のライブラリを使います。
Pytorch
超有名な機械学習ライブラリ。GPUを使うのでCUDA版を入れるpandas / numpy / ta
株価データを表形式で取得したり、演算したりして加工するのに使うSQLAlchemy / mysql-connector-python
下記ツールで作ったデータベースから株価データを取得するに使うGymnasium / Stable Baselines3 / SB3 Contrib
強化学習の環境とモデルを提供する
※主要部でありすべてではありません
CUDA対応Torchのインストール
TorchについてはCUDA対応のPyTorchを入れていきます!
今のCUDAバージョンは13なので…

こんな感じの選択にしてインストールコマンドを得ます。

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130さて、CUDAはサイズが大きいので、クラウドにバックアップされては困ります(Googleドライブがマイドキュメントに入ってる)。
というわけで、仮想環境の作成時は下記テクニックを使ってバックアップから逃れます。
データの取得準備
おさらいと前提
旧DBと構造が変わっていますので、新DBから株価を取得できるように作り直します。
取得の基本形はこんな感じですね。
証券コードがそのままでは使えないので、あらかじめDB用のIDに変換しないといけませんね。
これは改修規模がでかそう・・・

必要な情報
では学習を始めるにおいて、DBから取得しなければならないデータは何なのか、整理しておきます
銘柄一覧とID
DB内で紐づいている、IDと証券コードや銘柄の関係銘柄名
証券コード
証券ID
銘柄詳細
保持しているデータの数やスパン。
これがないとどこの範囲で学習データを切り取るか判断できない保持データ数
データスパン
平均出来高(低い場合はまともなデータにならないので使わない判断)
株価データ本体
ローソク足を形成するデータ本体ですローソク足データ
テクニカル指標
これはPythonのライブラリを使い手元で計算します。DBに入れると圧迫するので…。
その際必要なのが、一番過去のデータを参照するのが何なのか。
例えばMA200がいれば、過去200本のデータは余計に必要になり学習に使える分が減る。
処理手順
データの用意は以下の手順で行います。
銘柄一覧を取得
ここで証券IDと証券コードの組みを保持。
以降はコードをIDに変換することでユーザーは証券コードで扱える銘柄詳細の取得
全データのデータ数及びスパンの取得
ここで学習に使うデータに当たりをつけるデータの取得と加工
一度の学習に使う分だけをDBから取得して、正規化及びテクニカル指標を計算した学習用データを作成する
データの取得
一覧の取得
DBに存在する銘柄とDB上の管理IDを取得します。
このIDがないと問い合わせができないので、最初に行います。

足種とIDの紐づけ
これがないと足が指定できないので、実行します

銘柄詳細の取得
こんな感じでしょうか

得られるデータはこんな感じ。
処理速度に問題があるので、最初から足種だけは指定することにしました。
これで証券コードとIDの組み及びデータスパンなどが取得できます

株価の取得
今までの情報をもとにピンポイントで取りに行く感じです。

平均出来高の取得
上記と同じですが、範囲内の足当たりの平均出来高を返します。
5分足なら、5分当たりの出来高になります(極端に少なくて足が抜けていない場合)。
この値が小さい場合は、変動が少なく学習に向いていないデータと判断することができます。

Pythonで実行してみる
上記をPythonで実装しましたので、とりあえず出来高とデータが取れるか見てみます。
ソースはこんな感じです。

表示がこちら
必要なデータが手元に来ていることがわかります。

テクニカル指標の計算
次にテクニカル指標を計算していこうと思います。
指標の演算
移動平均はそのままpandasで計算できるのでそれで行います

それ以外は、taライブラリを使います。
計算に使用する範囲(パラメータ)は別途設定しています(値までは出せないので)

この状態のデータは下記のような感じです。めっちゃ増えましたね。

可視化
今回から、データの可視化はブラウザで行います。
また、より柔軟に組み立てるためにVue.jsを使います。
ブラウザでのグラフ化
vue.jsについてはこちら。
基本的な解説と導入から、この後使うグラフコンポーネントの作成までを行います。
いきなりグラフが出てくるので、目を通しておくことをお勧めします。
上記で紹介しているコンポーネントをベースに、テクニカル3種を追加したのがこちら。
とりあえずこんな感じでしょうか。

この画面では、下記ツールで作成したデータベースに直接接続し、銘柄一覧を取得します。
銘柄を選ぶと、保持している足種が自動で取得されます。
足種を選ぶと、一番新しい日付が自動でセットされます。範囲は1週間になるように初期設定されて、グラフが出る仕組みです。
期間調整をするときは、自分でカレンダーをいじった後ボタンを押します。
上記ツールでは、Excelの中でグラフ見られるようにしましたが、これそのまま同梱してもいい気がw
まとめ
今回は再開用に環境構築と、新DBからのデータ取得を行いました。
ひとまず必要なデータを取りに行くことはできましたし、新しく開発したグラフ化アプリも前のPythonライブラリでは考えられないほど軽量なので、分足1か月表示にも耐え使い勝手がいいです。
次回は学習データセットの作成に進みましょう。
いいなと思ったら応援しよう!
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。