2025-07-21

自動売買への道 (2025-07-21)

(楽天証券の口座で取引する前提で)デイトレ自動売買を実現するには、Windows / Excel 上で マーケットスピード II RSS を利用することがまずは確実な方法だと考えました。そこで、Windows / Excel / VBA で自動売買のためのマクロを作ってリアルタイムの取引シミュレーションを始めており、Python で検証をしています。

現在の開発状況を更新しました。

フェーズ 開 始 状 況 目 的 成  果
Phase 1 2024-12-10 終了 実現可能性
(feasibility)
  • やっつけでコーディング ✓
  • 下記を実証 (PoC) ✓
    • ループ処理による単純シミュレーション
    • リアルタイム・シミュレーション (Dry Run)
Phase 2 2024-12-16 終了 マクロ再構成
  • 単一ワークシート上に機能集約 ✓
  • マクロを再構成 ✓
  • Phase 1 と同じ機能レベルまで実現 ✓
  • ベンチマーク計測を追加 ✓
Phase 3 2024-12-31 取りやめ 実装
  • 機能を複数ワークシート上に再配置 ✓
  • Dry Run 実施 ✓
  • 売買アルゴリズムの改良 ✓
  • Python シミュレータで評価 ✓
  • RSS による売買を、テスト用マクロで確認
Phase 4 2025-03-09 開発中 評価・実装
  • ティックデータへ Parabolic SAR を適用 ✓
    • VBA に実装(データ収集のみ、Dry Run 機能は未実装)
    • Python によるシミュレーション環境の整備
  • Python シミュレータで評価とパラメータ・チューニング ✓
    1. スムージング処理の追加
    2. エントリ条件の検討
    3. 利確条件の検討
    4. ロスカット条件の検討
Phase 5 2025-05-17 開発中 再評価・再実装
  • メイン・アプリを Python へ
    • アプリの作り直し
      • xlwings パッケージの評価
      • PyQtGraph パッケージの評価
      • リアルタイムに対応させるためのスレッド化
      • RealtimePSAR クラスの改良
      • PyQtGraph から Matplotlib への移行
      • リアルタイムデータのスムージング
      • 楽天証券との実取引のサンプルワーク
  • リアルタイムデータ収集アプリ作成
    • 取引アプリは同時 3 銘柄のモニターに固定し、これとは別に 20 銘柄程度、リアルタイムデータ収集に特化したアプリを用意して、デイトレ銘柄の選定の分析に使えるようにしたいと思って作り始めました。
Phase 6 2025-08-?? 未着手 本運用
  • ...

Python で作っている自作のデイトレアプリで、ゆくゆくは自動売買に挑戦するために取り組んでいます。しかし自動売買実現までの道のりは長いので、まずはセミオート操作で売買ができるように進めています。以下は株価などの情報の流れを示しています。

株価データの流れ(Windows 11)

楽天証券では、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 ライブラリで作成しています。右側のドック部分はオーバーホールして内部コードとレイアウトを整理しました。

7/18 に取得したデータをスムージング処理して Parabolic SAR を適用した例

制御できるパラメータが増えてやるべきことが山積みですが、そこそこのパラメータで大負けすることがなければ、そろそろ実取引のサンプルワークにも本腰を入れたいです。

参考サイト

  1. マーケットスピード II RSS | 楽天証券のトレーディングツール
  2. マーケットスピード II RSS 関数マニュアル
  3. PythonでGUIを設計 | Qtの公式Pythonバインディング
  4. PyQtGraph - Scientific Graphics and GUI Library for Python
  5. Python in Excel alternative: Open. Self-hosted. No limits.
  6. Book - xlwings Documentation
  7. 私の株日記: Realtime Parabolic SAR
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

0 件のコメント:

コメントを投稿