(楽天証券の口座で取引する前提で)デイトレ自動売買を実現するには、Windows / Excel 上で マーケットスピード II RSS を利用することがまずは確実な方法だと考えました。そこで、Windows / Excel / VBA で自動売買のためのマクロを作ってリアルタイムの取引シミュレーションを始めており、Python で検証をしています。
現在の開発状況を更新しました。
フェーズ | 開 始 | 状 況 | 目 的 | 成 果 |
---|---|---|---|---|
Phase 1 | 2024-12-10 | 終了 | 実現可能性 (feasibility) |
|
Phase 2 | 2024-12-16 | 終了 | マクロ再構成 |
|
Phase 3 | 2024-12-31 | 取りやめ | 実装 |
|
Phase 4 | 2025-03-09 | 開発中 | 評価・実装 |
|
Phase 5 | 2025-05-17 | 開発中 | 再評価・再実装 |
|
Phase 6 | 2025-08-?? | 未着手 | 本運用 |
|
Python で作っている自作のデイトレアプリで、ゆくゆくは自動売買に挑戦するために取り組んでいます。しかし自動売買実現までの道のりは長いので、まずはセミオート操作で売買ができるように進めています。以下は株価などの情報の流れを示しています。
楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード2 RSS を介して取引をする構成を取っています。
PyQtGraph から Matplotlib への移行
安物で非力な Windows PC 上でアプリを起動してシミュレーションを実行している関係で、チャート作成用のライブラリは少しでも CPU に負荷をかけないようにと、当初は PyQtGraph というチャート作成用ライブラリを採用しました。
PyQtGraph は軽量で扱いやすく、しかも見映えが良かったので、良いライブラリにめぐり逢えたと喜んでいました。しかし GUI のベースにしている PySide6 (Qt for Python) よりも更新頻度が低く、PySide6 のバージョンとの相性が問題になってきました。
PyQtGraph のプロジェクトに参加して、開発を活発化するという手もありますが、そこまでの自信はありません。しかし、PyQtGpaph のコードをフォークして、自分が必要とする部分のみ保守しながら利用するという誘惑は捨てきれていません。😅
ソフトウェア開発では利用するライブラリのバージョンを固定するのは常識なのかもしれませんが、開発が活発で頻繁にバージョンが更新される PySide6 のようなオープンソースのプロジェクトでは、闇雲にバージョンを固定せずに基本的には最新のライブラリを追っかけ、必要があれば(PySide6 の)LTS 版に固定するというアプローチの方が、パッケージの入手しやすさの点でも効果的だと考えています。なにより、これは個人の開発プロジェクトなので、常に最新版を追っていた方が最新の機能も享受できるので建設的です。
そんなわけで、リソースは食いますが広く利用されていて、PySide6 と同じように精力的に開発されている Matplotlib というライブラリでも同様な動作をする版を平行して利用できるようにしておいた方が良いと判断して、少しずつ準備を進めてきました。
できあがった Matplotlib 版を件の Windows PC 上で動かしてみたところ、リソースは PyQtGraph 版の倍ぐらい食いますが、CPU の利用率が 100% に張り付くわけではないので、なんとか使えそうです。アプリの有用性を確認できれば、もっとパワーのある PC に乗り換えることを視野に入れて、今まで作った GUI のオーバーホールをしながら Matplotlib への本格的な移行を進めています。
リアルタイムデータのスムージング
チャート作成よりもはるかにリソースを食う処理ですが、データのスムージング処理は試してみたい機能だったので Matplotlib への移行と併せて取り組んでいます。
基本的なアプローチは、SciPy ライブラリの make_smoothing_spline メソッドを利用して、必ずしもデータ点を通らないスムーズな(Bスプライン)曲線を得て、この曲線に対して Parabolic SAR を適用することです。そのため、実株価とスムージングされた点との間に乖離が生じます。それでも、ほんの少し大局的なトレンドを Parabolic SAR でとらえた方がメリットがあるはずと期待して評価を始めています。
下図は、7/18 に取得したリアルタイムデータをスムージング処理をして Parabolic SAR を適用した例です。チャートは Matplitlib ライブラリで作成しています。右側のドック部分はオーバーホールして内部コードとレイアウトを整理しました。
制御できるパラメータが増えてやるべきことが山積みですが、そこそこのパラメータで大負けすることがなければ、そろそろ実取引のサンプルワークにも本腰を入れたいです。
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- PyQtGraph - Scientific Graphics and GUI Library for Python
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation
- 私の株日記: Realtime Parabolic SAR


0 件のコメント:
コメントを投稿